summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2022-01-24 11:06:14 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2022-01-24 11:06:14 +0900
commit1284a136a50ed69331f58a6c225e291ca3deac46 (patch)
tree80b56e01aa634f789e3c22c06617e7c19ab8da84
parent9ba3e48827a61bcadb0894c009eed6a0d8d08594 (diff)
downloadpkg-config-1284a136a50ed69331f58a6c225e291ca3deac46.tar.gz
pkg-config-1284a136a50ed69331f58a6c225e291ca3deac46.tar.bz2
pkg-config-1284a136a50ed69331f58a6c225e291ca3deac46.zip
Imported Upstream version 0.29upstream/0.29
-rw-r--r--INSTALL12
-rw-r--r--Makefile.am6
-rw-r--r--Makefile.in329
-rw-r--r--NEWS36
-rw-r--r--aclocal.m4407
-rw-r--r--check/Makefile.am14
-rw-r--r--check/Makefile.in145
-rwxr-xr-xcheck/check-debug4
-rwxr-xr-xcheck/check-idirafter8
-rwxr-xr-xcheck/check-path29
-rwxr-xr-xcheck/check-print-options12
-rwxr-xr-xcheck/check-relocatable46
-rwxr-xr-xcheck/check-sort-order5
-rwxr-xr-xcheck/check-special-flags11
-rwxr-xr-xcheck/check-sysroot9
-rwxr-xr-x[-rw-r--r--]check/check-tilde0
-rwxr-xr-xcheck/check-whitespace4
-rw-r--r--check/config.sh.in8
-rw-r--r--check/pcfiledir.pc11
-rw-r--r--check/pkgconfig/prefixdef-expanded.pc11
-rw-r--r--check/pkgconfig/prefixdef.pc11
-rw-r--r--check/special-flags.pc (renamed from check/idirafter.pc)7
-rw-r--r--check/sub/broken.pc4
-rwxr-xr-xcompile347
-rwxr-xr-xconfig.guess351
-rw-r--r--config.h.in14
-rwxr-xr-xconfig.sub134
-rwxr-xr-xconfigure625
-rw-r--r--configure.ac51
-rwxr-xr-xdepcomp455
-rw-r--r--glib/Makefile.am13
-rw-r--r--glib/Makefile.decl97
-rw-r--r--glib/Makefile.in1043
-rw-r--r--glib/NEWS6351
-rw-r--r--glib/README37
-rw-r--r--glib/README.in35
-rw-r--r--glib/aclocal.m4488
-rwxr-xr-xglib/compile10
-rwxr-xr-xglib/config.guess351
-rw-r--r--glib/config.h.in132
-rwxr-xr-xglib/config.sub134
-rwxr-xr-xglib/configure4005
-rw-r--r--glib/configure.ac781
-rwxr-xr-xglib/depcomp455
-rw-r--r--glib/glib.mk225
-rw-r--r--glib/glib/Makefile.am52
-rw-r--r--glib/glib/Makefile.in1935
-rwxr-xr-xglib/glib/abicheck.sh13
-rw-r--r--glib/glib/deprecated/gallocator.h6
-rw-r--r--glib/glib/deprecated/gcache.c6
-rw-r--r--glib/glib/deprecated/gcache.h6
-rw-r--r--glib/glib/deprecated/gcompletion.c36
-rw-r--r--glib/glib/deprecated/gcompletion.h6
-rw-r--r--glib/glib/deprecated/gmain.h6
-rw-r--r--glib/glib/deprecated/grel.c18
-rw-r--r--glib/glib/deprecated/grel.h6
-rw-r--r--glib/glib/deprecated/gthread-deprecated.c36
-rw-r--r--glib/glib/deprecated/gthread.h9
-rw-r--r--glib/glib/docs.c97
-rw-r--r--glib/glib/galloca.h10
-rw-r--r--glib/glib/garray.c113
-rw-r--r--glib/glib/garray.h55
-rw-r--r--glib/glib/gasyncqueue.h26
-rw-r--r--glib/glib/gatomic.c70
-rw-r--r--glib/glib/gatomic.h22
-rw-r--r--glib/glib/gbacktrace.c3
-rw-r--r--glib/glib/gbacktrace.h8
-rw-r--r--glib/glib/gbase64.c18
-rw-r--r--glib/glib/gbase64.h12
-rw-r--r--glib/glib/gbitlock.c5
-rw-r--r--glib/glib/gbitlock.h6
-rw-r--r--glib/glib/gbookmarkfile.c37
-rw-r--r--glib/glib/gbookmarkfile.h46
-rw-r--r--glib/glib/gbytes.c16
-rw-r--r--glib/glib/gbytes.h20
-rw-r--r--glib/glib/gcharset.c12
-rw-r--r--glib/glib/gcharset.h10
-rw-r--r--glib/glib/gcharsetprivate.h32
-rw-r--r--glib/glib/gchecksum.c357
-rw-r--r--glib/glib/gchecksum.h25
-rw-r--r--glib/glib/gconvert.c328
-rw-r--r--glib/glib/gconvert.h60
-rw-r--r--glib/glib/gdataset.c542
-rw-r--r--glib/glib/gdataset.h38
-rw-r--r--glib/glib/gdate.c4
-rw-r--r--glib/glib/gdate.h53
-rw-r--r--glib/glib/gdatetime.c123
-rw-r--r--glib/glib/gdatetime.h53
-rw-r--r--glib/glib/gdir.c154
-rw-r--r--glib/glib/gdir.h34
-rwxr-xr-xglib/glib/gen-unicode-tables.pl1
-rw-r--r--glib/glib/genviron.c20
-rw-r--r--glib/glib/genviron.h37
-rw-r--r--glib/glib/gerror.c1
-rw-r--r--glib/glib/gerror.h20
-rw-r--r--glib/glib/gfileutils.c233
-rw-r--r--glib/glib/gfileutils.h65
-rw-r--r--glib/glib/ggettext.c20
-rw-r--r--glib/glib/ggettext.h12
-rw-r--r--glib/glib/ghash.c124
-rw-r--r--glib/glib/ghash.h43
-rw-r--r--glib/glib/ghmac.h6
-rw-r--r--glib/glib/ghook.h29
-rw-r--r--glib/glib/ghostutils.h11
-rw-r--r--glib/glib/giochannel.c55
-rw-r--r--glib/glib/giochannel.h83
-rw-r--r--glib/glib/giounix.c14
-rw-r--r--glib/glib/giowin32.c12
-rw-r--r--glib/glib/gkeyfile.c11
-rw-r--r--glib/glib/gkeyfile.h55
-rw-r--r--glib/glib/glib-init.c8
-rw-r--r--glib/glib/glib-init.h12
-rw-r--r--glib/glib/glib-mirroring-tab/gen-mirroring-tab.c6
-rw-r--r--glib/glib/glib-private.c10
-rw-r--r--glib/glib/glib-private.h21
-rw-r--r--glib/glib/glib-unix.c177
-rw-r--r--glib/glib/glib-unix.h33
-rw-r--r--glib/glib/glib.h2
-rw-r--r--glib/glib/glib.rc8
-rw-r--r--glib/glib/glib.symbols1665
-rw-r--r--glib/glib/glibintl.h2
-rw-r--r--glib/glib/glist.c141
-rw-r--r--glib/glib/glist.h43
-rw-r--r--glib/glib/gmacros.h51
-rw-r--r--glib/glib/gmain-internal.h6
-rw-r--r--glib/glib/gmain.c1134
-rw-r--r--glib/glib/gmain.h147
-rw-r--r--glib/glib/gmappedfile.c26
-rw-r--r--glib/glib/gmappedfile.h14
-rw-r--r--glib/glib/gmarkup.c72
-rw-r--r--glib/glib/gmarkup.h27
-rw-r--r--glib/glib/gmem.c122
-rw-r--r--glib/glib/gmem.h43
-rw-r--r--glib/glib/gmessages-private.h35
-rw-r--r--glib/glib/gmessages.c559
-rw-r--r--glib/glib/gmessages.h43
-rw-r--r--glib/glib/gnode.c3
-rw-r--r--glib/glib/gnode.h40
-rw-r--r--glib/glib/gnulib/Makefile.am13
-rw-r--r--glib/glib/gnulib/Makefile.in997
-rw-r--r--glib/glib/gnulib/vasnprintf.c5
-rw-r--r--glib/glib/goption.c80
-rw-r--r--glib/glib/goption.h32
-rw-r--r--glib/glib/gpattern.c15
-rw-r--r--glib/glib/gpattern.h12
-rw-r--r--glib/glib/gpoll.h7
-rw-r--r--glib/glib/gprimes.h7
-rw-r--r--glib/glib/gprintf.h15
-rw-r--r--glib/glib/gqsort.h7
-rw-r--r--glib/glib/gquark.c361
-rw-r--r--glib/glib/gquark.h24
-rw-r--r--glib/glib/gqueue.h46
-rw-r--r--glib/glib/grand.c6
-rw-r--r--glib/glib/grand.h22
-rw-r--r--glib/glib/gscanner.c20
-rw-r--r--glib/glib/gscanner.h31
-rw-r--r--glib/glib/gscripttable.h8
-rw-r--r--glib/glib/gsequence.c12
-rw-r--r--glib/glib/gsequence.h43
-rw-r--r--glib/glib/gshell.c29
-rw-r--r--glib/glib/gshell.h10
-rw-r--r--glib/glib/gslice.c13
-rw-r--r--glib/glib/gslice.h20
-rw-r--r--glib/glib/gslist.c66
-rw-r--r--glib/glib/gslist.h40
-rw-r--r--glib/glib/gspawn-win32.c31
-rw-r--r--glib/glib/gspawn.c193
-rw-r--r--glib/glib/gspawn.h96
-rw-r--r--glib/glib/gstdio.c52
-rw-r--r--glib/glib/gstdio.h23
-rw-r--r--glib/glib/gstrfuncs.c53
-rw-r--r--glib/glib/gstrfuncs.h54
-rw-r--r--glib/glib/gstring.c50
-rw-r--r--glib/glib/gstring.h46
-rw-r--r--glib/glib/gstringchunk.h12
-rwxr-xr-xglib/glib/gtester-report2
-rw-r--r--glib/glib/gtestutils.c1414
-rw-r--r--glib/glib/gtestutils.h140
-rw-r--r--glib/glib/gthread-posix.c38
-rw-r--r--glib/glib/gthread-win32.c5
-rw-r--r--glib/glib/gthread.c70
-rw-r--r--glib/glib/gthread.h48
-rw-r--r--glib/glib/gthreadpool.c9
-rw-r--r--glib/glib/gthreadpool.h20
-rw-r--r--glib/glib/gthreadprivate.h7
-rw-r--r--glib/glib/gtimer.c8
-rw-r--r--glib/glib/gtimer.h17
-rw-r--r--glib/glib/gtimezone.c1401
-rw-r--r--glib/glib/gtimezone.h16
-rw-r--r--glib/glib/gtrashstack.h6
-rw-r--r--glib/glib/gtree.c9
-rw-r--r--glib/glib/gtree.h22
-rw-r--r--glib/glib/gtypes.h12
-rw-r--r--glib/glib/gunibreak.h986
-rw-r--r--glib/glib/gunichartables.h15
-rw-r--r--glib/glib/gunicode.h83
-rw-r--r--glib/glib/gunicodeprivate.h5
-rw-r--r--glib/glib/gunicollate.c29
-rw-r--r--glib/glib/gunicomp.h62
-rw-r--r--glib/glib/gunidecomp.h7443
-rw-r--r--glib/glib/guniprop.c16
-rw-r--r--glib/glib/gurifuncs.c7
-rw-r--r--glib/glib/gurifuncs.h10
-rw-r--r--glib/glib/gutf8.c14
-rw-r--r--glib/glib/gutils.c781
-rw-r--r--glib/glib/gutils.h60
-rw-r--r--glib/glib/gvariant-core.c48
-rw-r--r--glib/glib/gvariant-core.h7
-rw-r--r--glib/glib/gvariant-internal.h9
-rw-r--r--glib/glib/gvariant-parser.c43
-rw-r--r--glib/glib/gvariant-serialiser.c4
-rw-r--r--glib/glib/gvariant-serialiser.h9
-rw-r--r--glib/glib/gvariant.c208
-rw-r--r--glib/glib/gvariant.h124
-rw-r--r--glib/glib/gvarianttype.c13
-rw-r--r--glib/glib/gvarianttype.h36
-rw-r--r--glib/glib/gvarianttypeinfo.h10
-rw-r--r--glib/glib/gversion.h7
-rw-r--r--glib/glib/gversionmacros.h147
-rw-r--r--glib/glib/gwakeup.c15
-rw-r--r--glib/glib/gwakeup.h12
-rw-r--r--glib/glib/gwin32.h41
-rw-r--r--glib/glib/libcharset/Makefile.am12
-rw-r--r--glib/glib/libcharset/Makefile.in972
-rwxr-xr-xglib/glib/libcharset/config.charset32
-rw-r--r--glib/glib/valgrind.h4840
-rw-r--r--glib/glib/win_iconv.c14
-rwxr-xr-xglib/install-sh374
-rw-r--r--glib/m4macros/Makefile.am4
-rw-r--r--glib/m4macros/Makefile.in897
-rw-r--r--glib/m4macros/attributes.m4288
-rw-r--r--glib/m4macros/glib-gettext.m41
-rw-r--r--glib/m4macros/glibtests.m428
-rw-r--r--glib/m4macros/libtool.m4277
-rw-r--r--glib/m4macros/ltoptions.m419
-rwxr-xr-xglib/missing414
-rwxr-xr-xglib/mkinstalldirs162
-rwxr-xr-xglib/test-driver148
-rwxr-xr-xinstall-sh374
-rw-r--r--main.c77
-rwxr-xr-xmissing414
-rw-r--r--parse.c237
-rw-r--r--pkg-config-guide.html8
-rw-r--r--pkg-config.1148
-rw-r--r--pkg.c152
-rw-r--r--pkg.h24
-rw-r--r--pkg.m4214
-rw-r--r--pkg.m4.in275
-rw-r--r--rpmvercmp.c131
-rw-r--r--rpmvercmp.h19
250 files changed, 31676 insertions, 22007 deletions
diff --git a/INSTALL b/INSTALL
index a1e89e1..2099840 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
Installation Instructions
*************************
-Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
@@ -12,8 +12,8 @@ without warranty of any kind.
Basic Installation
==================
- Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
+ Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
@@ -309,9 +309,10 @@ causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
@@ -367,4 +368,3 @@ operates.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
-
diff --git a/Makefile.am b/Makefile.am
index 41e48e8..e46c798 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -34,19 +34,21 @@ pkg_config_SOURCES= \
pkg.c \
parse.h \
parse.c \
+ rpmvercmp.c \
+ rpmvercmp.h \
main.c
if HOST_TOOL
host_tool = $(host)-pkg-config$(EXEEXT)
install-exec-hook:
- cd $(DESTDIR)$(bindir) && $(LN) pkg-config$(EXEEXT) $(host_tool)
+ cd $(DESTDIR)$(bindir) && $(LN) -f pkg-config$(EXEEXT) $(host_tool)
uninstall-hook:
cd $(DESTDIR)$(bindir) && rm -f $(host_tool)
endif
# Various data files
m4dir = $(datadir)/aclocal
-dist_m4_DATA = pkg.m4
+m4_DATA = pkg.m4
dist_doc_DATA = pkg-config-guide.html
dist_man_MANS = pkg-config.1
EXTRA_DIST = README.win32
diff --git a/Makefile.in b/Makefile.in
index a1ad77c..f3904d8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,23 +16,61 @@
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -53,25 +91,24 @@ build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = pkg-config$(EXEEXT)
subdir = .
-DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
- $(dist_m4_DATA) $(dist_man_MANS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
- config.guess config.sub depcomp install-sh ltmain.sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/pkg.m4 $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/pkg.m4.in \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = pkg.m4
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
"$(DESTDIR)$(docdir)" "$(DESTDIR)$(m4dir)"
PROGRAMS = $(bin_PROGRAMS)
-am_pkg_config_OBJECTS = pkg.$(OBJEXT) parse.$(OBJEXT) main.$(OBJEXT)
+am_pkg_config_OBJECTS = pkg.$(OBJEXT) parse.$(OBJEXT) \
+ rpmvercmp.$(OBJEXT) main.$(OBJEXT)
pkg_config_OBJECTS = $(am_pkg_config_OBJECTS)
am__DEPENDENCIES_1 =
pkg_config_DEPENDENCIES = $(am__DEPENDENCIES_1)
@@ -115,13 +152,14 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(pkg_config_SOURCES)
DIST_SOURCES = $(pkg_config_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -157,15 +195,40 @@ am__uninstall_files_from_dir = { \
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(dist_man_MANS)
-DATA = $(dist_doc_DATA) $(dist_m4_DATA)
+DATA = $(dist_doc_DATA) $(m4_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
+ $(srcdir)/config.h.in $(srcdir)/pkg.m4.in AUTHORS COPYING \
+ ChangeLog INSTALL NEWS README compile config.guess config.sub \
+ depcomp install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -277,9 +340,11 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+TESTS_PKG_CONFIG = @TESTS_PKG_CONFIG@
TESTS_SHELL = @TESTS_SHELL@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
+WINE = @WINE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -319,6 +384,7 @@ localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
+native_win32 = @native_win32@
oldincludedir = @oldincludedir@
pc_path = @pc_path@
pdfdir = @pdfdir@
@@ -367,13 +433,15 @@ pkg_config_SOURCES = \
pkg.c \
parse.h \
parse.c \
+ rpmvercmp.c \
+ rpmvercmp.h \
main.c
@HOST_TOOL_TRUE@host_tool = $(host)-pkg-config$(EXEEXT)
# Various data files
m4dir = $(datadir)/aclocal
-dist_m4_DATA = pkg.m4
+m4_DATA = pkg.m4
dist_doc_DATA = pkg-config-guide.html
dist_man_MANS = pkg-config.1
EXTRA_DIST = README.win32
@@ -403,7 +471,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -424,8 +491,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then rm -f stamp-h1; else :; fi
- @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -437,6 +504,8 @@ $(srcdir)/config.h.in: $(am__configure_deps)
distclean-hdr:
-rm -f config.h stamp-h1
+pkg.m4: $(top_builddir)/config.status $(srcdir)/pkg.m4.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
@@ -446,10 +515,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p || test -f $$p1; \
- then echo "$$p"; echo "$$p"; else :; fi; \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -470,7 +541,8 @@ uninstall-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -483,6 +555,7 @@ clean-binPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
+
pkg-config$(EXEEXT): $(pkg_config_OBJECTS) $(pkg_config_DEPENDENCIES) $(EXTRA_pkg_config_DEPENDENCIES)
@rm -f pkg-config$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pkg_config_OBJECTS) $(pkg_config_LDADD) $(LIBS)
@@ -496,20 +569,21 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpmvercmp.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -590,9 +664,9 @@ uninstall-dist_docDATA:
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-install-dist_m4DATA: $(dist_m4_DATA)
+install-m4DATA: $(m4_DATA)
@$(NORMAL_INSTALL)
- @list='$(dist_m4_DATA)'; test -n "$(m4dir)" || list=; \
+ @list='$(m4_DATA)'; test -n "$(m4dir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(m4dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(m4dir)" || exit 1; \
@@ -606,9 +680,9 @@ install-dist_m4DATA: $(dist_m4_DATA)
$(INSTALL_DATA) $$files "$(DESTDIR)$(m4dir)" || exit $$?; \
done
-uninstall-dist_m4DATA:
+uninstall-m4DATA:
@$(NORMAL_UNINSTALL)
- @list='$(dist_m4_DATA)'; test -n "$(m4dir)" || list=; \
+ @list='$(m4_DATA)'; test -n "$(m4dir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(m4dir)'; $(am__uninstall_files_from_dir)
@@ -618,14 +692,13 @@ uninstall-dist_m4DATA:
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
@@ -646,31 +719,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-cscopelist-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
- done
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -686,12 +741,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -703,15 +753,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -720,18 +766,16 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
-
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-
clean-cscope:
-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
-cscope.files: clean-cscope cscopelist-recursive cscopelist
-
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
@@ -750,19 +794,6 @@ distclean-tags:
@INTERNAL_GLIB_TRUE@dist-hook:
distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically 'make maintainer-clean' will remove them" >&2; \
- exit 1; \
- else :; fi; \
- else :; fi
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -846,10 +877,16 @@ dist-xz: distdir
$(am__post_remove_distdir)
dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -882,18 +919,19 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod u+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1010,7 +1048,7 @@ info: info-recursive
info-am:
-install-data-am: install-dist_docDATA install-dist_m4DATA install-man
+install-data-am: install-dist_docDATA install-m4DATA install-man
install-dvi: install-dvi-recursive
@@ -1060,40 +1098,39 @@ ps: ps-recursive
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \
- uninstall-dist_m4DATA uninstall-man
+ uninstall-m4DATA uninstall-man
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
uninstall-man: uninstall-man1
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- cscopelist-recursive ctags-recursive install-am \
- install-exec-am install-strip tags-recursive uninstall-am
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-binPROGRAMS \
- clean-cscope clean-generic clean-libtool cscope cscopelist \
- cscopelist-recursive ctags ctags-recursive dist dist-all \
- dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \
- dist-xz dist-zip distcheck distclean distclean-compile \
- distclean-generic distclean-hdr distclean-libtool \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS install-data install-data-am \
- install-dist_docDATA install-dist_m4DATA install-dvi \
+.MAKE: $(am__recursive_targets) all install-am install-exec-am \
+ install-strip uninstall-am
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-binPROGRAMS \
+ clean-cscope clean-generic clean-libtool cscope cscopelist-am \
+ ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
+ dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
+ distclean distclean-compile distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS install-data \
+ install-data-am install-dist_docDATA install-dvi \
install-dvi-am install-exec install-exec-am install-exec-hook \
install-html install-html-am install-info install-info-am \
- install-man install-man1 install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-recursive uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-dist_docDATA \
- uninstall-dist_m4DATA uninstall-hook uninstall-man \
- uninstall-man1
+ install-m4DATA install-man install-man1 install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-dist_docDATA uninstall-hook \
+ uninstall-m4DATA uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
@HOST_TOOL_TRUE@install-exec-hook:
-@HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && $(LN) pkg-config$(EXEEXT) $(host_tool)
+@HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && $(LN) -f pkg-config$(EXEEXT) $(host_tool)
@HOST_TOOL_TRUE@uninstall-hook:
@HOST_TOOL_TRUE@ cd $(DESTDIR)$(bindir) && rm -f $(host_tool)
diff --git a/NEWS b/NEWS
index 2cd306b..3977495 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,39 @@
+pkg-config 0.29
+===
+
+- Fixed a regression from 0.28 in system -L flag handling. If the pc
+ file has multiple system -L flags, every other flag will be left as
+ is. Thanks to Andrew Oakley for the fix. (#78077)
+- Quoting of variables queried through --variable is removed so that the
+ output can be used verbatim in subsequent shell commands. Thanks to
+ Marek Kasik for the fix. (#67904)
+- Fixed a regression from 0.28 in -L flag handling on Windows. A .libs
+ suffix was inadvertantly being added to the library path.
+- Added a --validate option to check pc file syntax. This works just
+ like --exists, but package dependencies are disabled. (#7000)
+- Added the PKG_PREREQ autoconf macro. Whereas PKG_PROG_PKG_CONFIG is
+ used to check the version of the pkg-config tool, this is used to
+ check the version of the pkg-config autoconf macros in use.
+- Added the PKG_CHECK_MODULES_STATIC autoconf macro. This will
+ temporarily add --static to the pkg-config calls while invoking
+ PKG_CHECK_MODULES. (#19541)
+- Many fixes to the testsuite for Windows. It should now pass for a
+ MinGW, Cygwin, and cross-compiled MinGW using Wine for test execution.
+ (#66939)
+- More consistent handling of prefix redefinition. On Windows, the
+ prefix was always being redefined based on the pc file path. This
+ feature can now be enabled or disabled at runtime on all platforms
+ using the --define-prefix and --dont-define-prefix options. (#63602)
+- Continue listing packages with --list-all even if there are errors in
+ pc files. (#26615)
+- Various documentation improvements. (#62018, #62374, #66155)
+- Fixed a bug when multiple -isystem arguments are used. (#72584)
+- pkg-config is now built with largefile support to ensure that it works
+ correctly on filesystems with 64 bit inodes. Thanks to Peter Jones for
+ the fix. (#90078)
+- Bugs fixed: 7000, 19541, 26615, 62018, 62374, 63602, 66155, 66939,
+ 67904, 70690, 72584, 78077, 80378, 80380, 89267, 90078, 90437, 92002.
+
pkg-config 0.28
===
- Fixed a pair of long-standing and intertwined bugs involving unwanted
diff --git a/aclocal.m4 b/aclocal.m4
index 9d6d55e..f3ba166 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -11,6 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
@@ -1325,7 +1326,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -1339,7 +1340,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -1358,7 +1362,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -8610,24 +8617,22 @@ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 8
-
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.12'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.12.2], [],
+m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -8643,21 +8648,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.12.2])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
@@ -8697,22 +8700,19 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
-
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
@@ -8738,13 +8738,12 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 17
# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -8930,19 +8929,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -8971,7 +8969,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -9007,17 +9005,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 19
-
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
@@ -9030,7 +9032,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -9060,8 +9062,7 @@ AC_SUBST([CYGPATH_W])
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
-[$0: two- and three-arguments forms are deprecated. For more info, see:
-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+ [$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
@@ -9094,8 +9095,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -9115,21 +9116,63 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX],
- m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
@@ -9138,7 +9181,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
@@ -9160,20 +9202,18 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 8
-
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -9183,14 +9223,12 @@ if test x"${install_sh}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
@@ -9206,14 +9244,12 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -9258,14 +9294,12 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 7
-
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
@@ -9273,11 +9307,10 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
-
# AM_MISSING_HAS_RUN
# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
@@ -9290,8 +9323,8 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing])
@@ -9300,14 +9333,12 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
@@ -9331,15 +9362,77 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
# AM_SANITY_CHECK
# ---------------
@@ -9416,14 +9509,12 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
@@ -9478,14 +9569,12 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor 'install' (even GNU) is that you can't
@@ -9508,14 +9597,12 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -9529,14 +9616,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
@@ -9550,76 +9635,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
diff --git a/check/Makefile.am b/check/Makefile.am
index 30a527c..34d0e34 100644
--- a/check/Makefile.am
+++ b/check/Makefile.am
@@ -1,4 +1,3 @@
-TESTS_PKG_CONFIG = $(top_builddir)/pkg-config$(EXEEXT)
TESTS_ENVIRONMENT = PKG_CONFIG='$(TESTS_PKG_CONFIG)' $(TESTS_SHELL)
TESTS = \
@@ -13,7 +12,7 @@ TESTS = \
check-includedir \
check-conflicts \
check-missing \
- check-idirafter \
+ check-special-flags \
check-sort-order \
check-duplicate-flags \
check-whitespace \
@@ -26,7 +25,8 @@ TESTS = \
check-uninstalled \
check-debug \
check-gtk \
- check-tilde
+ check-tilde \
+ check-relocatable
EXTRA_DIST = \
$(TESTS) \
@@ -38,12 +38,13 @@ EXTRA_DIST = \
includedir.pc \
missing-requires-private.pc \
missing-requires.pc \
- idirafter.pc \
+ special-flags.pc \
conflicts-test.pc \
whitespace.pc \
fields-blank.pc \
sub/sub1.pc \
sub/sub2.pc \
+ sub/broken.pc \
inst.pc \
inst-uninstalled.pc \
other.pc \
@@ -93,4 +94,7 @@ EXTRA_DIST = \
gtk/xcb.pc \
gtk/xproto.pc \
gtk/xrender.pc \
- tilde.pc
+ tilde.pc \
+ pkgconfig/prefixdef.pc \
+ pkgconfig/prefixdef-expanded.pc \
+ pcfiledir.pc
diff --git a/check/Makefile.in b/check/Makefile.in
index 4f6fab4..15c03ed 100644
--- a/check/Makefile.in
+++ b/check/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,23 +14,61 @@
@SET_MAKE@
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
esac; \
- test $$am__dry = yes; \
- }
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -50,12 +88,12 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = check
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/config.sh.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/pkg.m4 $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/pkg.m4.in \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = config.sh
@@ -79,10 +117,30 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.sh.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -153,9 +211,11 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+TESTS_PKG_CONFIG = @TESTS_PKG_CONFIG@
TESTS_SHELL = @TESTS_SHELL@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
+WINE = @WINE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -195,6 +255,7 @@ localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
+native_win32 = @native_win32@
oldincludedir = @oldincludedir@
pc_path = @pc_path@
pdfdir = @pdfdir@
@@ -213,7 +274,6 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
use_indirect_deps = @use_indirect_deps@
-TESTS_PKG_CONFIG = $(top_builddir)/pkg-config$(EXEEXT)
TESTS_ENVIRONMENT = PKG_CONFIG='$(TESTS_PKG_CONFIG)' $(TESTS_SHELL)
TESTS = \
check-cflags \
@@ -227,7 +287,7 @@ TESTS = \
check-includedir \
check-conflicts \
check-missing \
- check-idirafter \
+ check-special-flags \
check-sort-order \
check-duplicate-flags \
check-whitespace \
@@ -240,7 +300,8 @@ TESTS = \
check-uninstalled \
check-debug \
check-gtk \
- check-tilde
+ check-tilde \
+ check-relocatable
EXTRA_DIST = \
$(TESTS) \
@@ -252,12 +313,13 @@ EXTRA_DIST = \
includedir.pc \
missing-requires-private.pc \
missing-requires.pc \
- idirafter.pc \
+ special-flags.pc \
conflicts-test.pc \
whitespace.pc \
fields-blank.pc \
sub/sub1.pc \
sub/sub2.pc \
+ sub/broken.pc \
inst.pc \
inst-uninstalled.pc \
other.pc \
@@ -307,7 +369,10 @@ EXTRA_DIST = \
gtk/xcb.pc \
gtk/xproto.pc \
gtk/xrender.pc \
- tilde.pc
+ tilde.pc \
+ pkgconfig/prefixdef.pc \
+ pkgconfig/prefixdef-expanded.pc \
+ pcfiledir.pc
all: all-am
@@ -324,7 +389,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu check/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu check/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -350,11 +414,9 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
cscope cscopelist:
@@ -586,16 +648,19 @@ uninstall-am:
.MAKE: check-am install-am install-strip
.PHONY: all all-am check check-TESTS check-am clean clean-generic \
- clean-libtool distclean distclean-generic distclean-libtool \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am
+ clean-libtool cscopelist-am ctags-am distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/check/check-debug b/check/check-debug
index 5ee95f2..01ac795 100755
--- a/check/check-debug
+++ b/check/check-debug
@@ -11,12 +11,12 @@ RESULT="PKG_CONFIG_DEBUG_SPEW variable enabling debug spew
Adding directory '$srcdir' from PKG_CONFIG_PATH
Global variable definition 'pc_sysrootdir' = '/'
Global variable definition 'pc_top_builddir' = '\$(top_builddir)'
-Error printing enabled by default due to use of output options besides --exists or --atleast/exact/max-version. Value of --silence-errors: 0
+Error printing enabled by default due to use of output options besides --exists, --atleast/exact/max-version or --list-all. Value of --silence-errors: 0
Error printing enabled
$PACKAGE_VERSION"
PKG_CONFIG_DEBUG_SPEW=1 run_test --version
-RESULT="Error printing enabled by default due to use of output options besides --exists or --atleast/exact/max-version. Value of --silence-errors: 0
+RESULT="Error printing enabled by default due to use of output options besides --exists, --atleast/exact/max-version or --list-all. Value of --silence-errors: 0
Error printing enabled
$PACKAGE_VERSION"
run_test --debug --version
diff --git a/check/check-idirafter b/check/check-idirafter
deleted file mode 100755
index a41d11e..0000000
--- a/check/check-idirafter
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/sh
-
-set -e
-
-. ${srcdir}/common
-
-RESULT="-idirafter -I/after -I/foo -I/bar"
-run_test --cflags idirafter
diff --git a/check/check-path b/check/check-path
index fecfc06..2a6be75 100755
--- a/check/check-path
+++ b/check/check-path
@@ -9,14 +9,27 @@ PKG_CONFIG_PATH="$srcdir/sub" run_test --exists sub1
# default pkg-config path, making sure to resolve the variables fully
eval pc_path="$pc_path"
-case ${MACHTYPE} in
-*-msys)
- # Make sure path doesn't get mangled on MSYS
- RESULT=$(echo $pc_path | sed 's,/,\\/,g')
- ;;
-*)
+if [ "$native_win32" = yes ]; then
+ # This is pretty hacky. On native win32 (MSYS/MINGW), pkg-config
+ # builds the default path from the installation directory. It
+ # then adds lib/pkgconfig and share/pkgconfig to it. Normally,
+ # the autoconf build directory would be used, but that path is in
+ # Unix format.
+ if [ "$OSTYPE" = msys ]; then
+ # MSYS has "pwd -W" to get the current directory in Windows format
+ pcdir=$(cd $top_builddir/.libs && pwd -W)
+ else
+ # Assume we have cmd somewhere to get variable %cd%. Make sure
+ # to strip carriage returns.
+ pcdir=$(cd $top_builddir/.libs &&
+ $WINE cmd /C echo %cd% | sed -r 's/\r//g')
+ fi
+ win_path="$pcdir/lib/pkgconfig;$pcdir/share/pkgconfig"
+
+ # Convert from forward slashes to Windows backslashes
+ RESULT=$(echo $win_path | sed 's,/,\\,g')
+else
RESULT=$pc_path
- ;;
-esac
+fi
unset PKG_CONFIG_LIBDIR
run_test --variable=pc_path pkg-config
diff --git a/check/check-print-options b/check/check-print-options
index a2a41e7..198e5a1 100755
--- a/check/check-print-options
+++ b/check/check-print-options
@@ -12,13 +12,14 @@ RESULT=1.0.0
run_test --modversion simple
# --print-variables, make sure having no variables doesn't crash
-RESULT=""
+RESULT="pcfiledir"
run_test --print-variables no-variables
RESULT="exec_prefix
-prefix
+includedir
libdir
-includedir"
+pcfiledir
+prefix"
run_test --print-variables simple
# --print-provides
@@ -34,8 +35,9 @@ RESULT="private-dep >= 1"
run_test --print-requires-private requires-test
# --list-all, limit to a subdirectory
-RESULT="sub1 Subdirectory package 1 - Test package 1 for subdirectory
-sub2 Subdirectory package 2 - Test package 2 for subdirectory"
+RESULT="sub1 Subdirectory package 1 - Test package 1 for subdirectory
+sub2 Subdirectory package 2 - Test package 2 for subdirectory
+broken Broken package - Module with broken .pc file"
PKG_CONFIG_LIBDIR="$srcdir/sub" run_test --list-all
# Check handling when multiple incompatible options are set
diff --git a/check/check-relocatable b/check/check-relocatable
new file mode 100755
index 0000000..589eddf
--- /dev/null
+++ b/check/check-relocatable
@@ -0,0 +1,46 @@
+#! /bin/sh
+
+set -e
+. ${srcdir}/common
+
+# Convert absolute directories to Windows format if necessary.
+if [ "$native_win32" = yes ]; then
+ # Assume we have cmd to do the conversion, except we have to escape
+ # the command switch on MSYS.
+ [ "$OSTYPE" = msys ] && opt="\\/C" || opt="/C"
+ abs_top_srcdir=$($WINE cmd $opt echo "$abs_top_srcdir" | tr -d '\r')
+ abs_srcdir=$($WINE cmd $opt echo "$abs_srcdir" | tr -d '\r')
+fi
+
+# See if the pcfiledir variable is defined. First, with the path
+# built from the relative PKG_CONFIG_LIBDIR. Second, with the path
+# built from the full path to the pc file.
+RESULT=$srcdir
+run_test --variable=pcfiledir pcfiledir
+RESULT=$abs_srcdir
+run_test --variable=pcfiledir "$abs_srcdir/pcfiledir.pc"
+
+# Test if pcfiledir metadata variable is substituted correctly
+RESULT="-I${srcdir}/include -L${srcdir}/lib -lfoo"
+run_test --cflags --libs pcfiledir
+
+# Test prefix redefinition for .pc files in pkgconfig directory. Try .pc
+# files with both unexpanded and expanded variables. Use the absolute
+# directory for the search path so that pkg-config can strip enough
+# components of the file directory to be useful.
+PKG_CONFIG_LIBDIR="${abs_srcdir}/pkgconfig"
+for pkg in prefixdef prefixdef-expanded; do
+ # Typical redefinition
+ RESULT="-I${abs_top_srcdir}/include -L${abs_top_srcdir}/lib -lfoo"
+ run_test --define-prefix --cflags --libs $pkg
+
+ RESULT="-I/reloc/include -L/reloc/lib -lfoo"
+ run_test --dont-define-prefix --cflags --libs $pkg
+
+ # Non-standard redefinition
+ RESULT="-I/reloc/include -L${abs_top_srcdir} -lfoo"
+ run_test --define-prefix --prefix-variable=libdir --cflags --libs $pkg
+
+ RESULT="-I/reloc/include -L/reloc/lib -lfoo"
+ run_test --dont-define-prefix --cflags --libs $pkg
+done
diff --git a/check/check-sort-order b/check/check-sort-order
index 77c0806..714d2ef 100755
--- a/check/check-sort-order
+++ b/check/check-sort-order
@@ -34,8 +34,9 @@ set -e
. ${srcdir}/common
-order1="$srcdir/sort/sort:$srcdir/sort"
-order2="$srcdir/sort:$srcdir/sort/sort"
+[ "$native_win32" = yes ] && sep=';' || sep=':'
+order1="${srcdir}/sort/sort${sep}${srcdir}/sort"
+order2="${srcdir}/sort${sep}${srcdir}/sort/sort"
export PKG_CONFIG_PATH
PKG_CONFIG_PATH="$order1"
diff --git a/check/check-special-flags b/check/check-special-flags
new file mode 100755
index 0000000..c0a9ebb
--- /dev/null
+++ b/check/check-special-flags
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+set -e
+
+. ${srcdir}/common
+
+RESULT="-isystem /system1 -idirafter /after1 -idirafter /after2 -isystem /system2 -I/foo -I/bar"
+run_test --cflags special-flags
+
+RESULT="-framework Foo -lsimple -framework Bar"
+run_test --libs special-flags
diff --git a/check/check-sysroot b/check/check-sysroot
index 0820206..7b72ed9 100755
--- a/check/check-sysroot
+++ b/check/check-sysroot
@@ -6,6 +6,11 @@ set -e
export PKG_CONFIG_SYSROOT_DIR=/sysroot
+# MSYS mangles / paths to its own root in windows format. This probably
+# means sysroot doesn't work there, but match what pkg-config passes
+# back anyway.
+[ "$OSTYPE" = msys ] && root=$(cd / && pwd -W) || root=
+
RESULT=""
run_test --cflags simple
@@ -20,8 +25,8 @@ if [ "$list_indirect_deps" = yes ]; then
fi
run_test --libs --static simple
-RESULT="-I/sysroot/public-dep/include"
+RESULT="-I$root/sysroot/public-dep/include"
run_test --cflags public-dep
-RESULT="-L/sysroot/public-dep/lib -lpublic-dep"
+RESULT="-L$root/sysroot/public-dep/lib -lpublic-dep"
run_test --libs public-dep
diff --git a/check/check-tilde b/check/check-tilde
index 0ffc8f5..0ffc8f5 100644..100755
--- a/check/check-tilde
+++ b/check/check-tilde
diff --git a/check/check-whitespace b/check/check-whitespace
index e4388ba..b062bc0 100755
--- a/check/check-whitespace
+++ b/check/check-whitespace
@@ -4,6 +4,10 @@ set -e
. ${srcdir}/common
+# variables come out unquoted
+RESULT='/usr/white space/include'
+run_test --variable=includedir whitespace
+
# expect cflags from whitespace
RESULT='-Dlala=misc -I/usr/white\ space/include -I$(top_builddir) -Iinclude\ dir -Iother\ include\ dir'
run_test --cflags whitespace
diff --git a/check/config.sh.in b/check/config.sh.in
index 91f20a2..3d7b8a2 100644
--- a/check/config.sh.in
+++ b/check/config.sh.in
@@ -2,6 +2,12 @@
# Settings from the configure script
#
+abs_srcdir=@abs_srcdir@
+top_srcdir=@top_srcdir@
+abs_top_srcdir=@abs_top_srcdir@
+abs_builddir=@abs_builddir@
+top_builddir=@top_builddir@
+abs_top_builddir=@abs_top_builddir@
prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
@@ -13,3 +19,5 @@ system_include_path="@system_include_path@"
system_library_path="@system_library_path@"
list_indirect_deps=@use_indirect_deps@
PACKAGE_VERSION=@PACKAGE_VERSION@
+native_win32=@native_win32@
+WINE=@WINE@
diff --git a/check/pcfiledir.pc b/check/pcfiledir.pc
new file mode 100644
index 0000000..da50e6d
--- /dev/null
+++ b/check/pcfiledir.pc
@@ -0,0 +1,11 @@
+prefix=${pcfiledir}
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: pcfiledir relocation test
+Description: Test pkg-config pcfiledir metadata variable
+Version: 1.0.0
+Requires:
+Libs: -L${libdir} -lfoo
+Cflags: -I${includedir}
diff --git a/check/pkgconfig/prefixdef-expanded.pc b/check/pkgconfig/prefixdef-expanded.pc
new file mode 100644
index 0000000..464334a
--- /dev/null
+++ b/check/pkgconfig/prefixdef-expanded.pc
@@ -0,0 +1,11 @@
+prefix=/reloc
+exec_prefix=/reloc
+libdir=/reloc/lib
+includedir=/reloc/include
+
+Name: Prefix redefinition with expanded variables test
+Description: Test magic prefix redefinition when variables expanded
+Version: 1.0.0
+Requires:
+Libs: -L${libdir} -lfoo
+Cflags: -I${includedir}
diff --git a/check/pkgconfig/prefixdef.pc b/check/pkgconfig/prefixdef.pc
new file mode 100644
index 0000000..9f4a4ba
--- /dev/null
+++ b/check/pkgconfig/prefixdef.pc
@@ -0,0 +1,11 @@
+prefix=/reloc
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Prefix redefinition test
+Description: Test pkg-config magic prefix redefinition
+Version: 1.0.0
+Requires:
+Libs: -L${libdir} -lfoo
+Cflags: -I${includedir}
diff --git a/check/idirafter.pc b/check/special-flags.pc
index fced885..318eab0 100644
--- a/check/idirafter.pc
+++ b/check/special-flags.pc
@@ -3,10 +3,9 @@ exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
-Name: idirafter test
+Name: Special flags test
Description: Dummy pkgconfig test package for testing pkgconfig
Version: 1.0.0
Requires:
-Libs: -lsimple
-Libs.private: -lm
-Cflags: -I/foo -idirafter -I/after -I/bar
+Libs: -framework Foo -lsimple -framework Bar
+Cflags: -I/foo -isystem /system1 -idirafter /after1 -I/bar -idirafter /after2 -isystem /system2
diff --git a/check/sub/broken.pc b/check/sub/broken.pc
new file mode 100644
index 0000000..684d027
--- /dev/null
+++ b/check/sub/broken.pc
@@ -0,0 +1,4 @@
+Name: Broken package
+Description: Module with broken .pc file
+Version: 1.0
+Name: 2nd name
diff --git a/compile b/compile
new file mode 100755
index 0000000..a85b723
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.guess b/config.guess
index d622a44..dbfb978 100755
--- a/config.guess
+++ b/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2012-02-10'
+timestamp='2015-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-02-10'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches@gnu.org>.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -54,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -560,8 +579,9 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
@@ -801,10 +821,13 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
- i*:MSYS*:*)
+ *:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@@ -852,21 +875,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -879,59 +902,54 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -950,54 +968,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
- or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1201,6 +1228,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1227,19 +1257,31 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1256,7 +1298,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1330,157 +1372,6 @@ EOF
exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
cat >&2 <<EOF
$0: unable to guess system type
diff --git a/config.h.in b/config.h.in
index 0aac8f3..30fa32e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,5 +1,8 @@
/* config.h.in. Generated from configure.ac by autoheader. */
+/* Define ${prefix} in .pc files at runtime */
+#undef ENABLE_DEFINE_PREFIX
+
/* Link library to all dependent libraries, not only directly needed ones */
#undef ENABLE_INDIRECT_DEPS
@@ -72,3 +75,14 @@
/* Version number of package */
#undef VERSION
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
diff --git a/config.sub b/config.sub
index c894da4..6467c95 100755
--- a/config.sub
+++ b/config.sub
@@ -1,24 +1,18 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2012-02-10'
+timestamp='2015-01-01'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-02-10'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,7 +116,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
@@ -156,7 +149,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
@@ -225,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -253,21 +252,24 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | be32 | be64 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
- | c4x | clipper \
+ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
- | fido | fr30 | frv \
+ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -281,23 +283,26 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | open8 \
- | or32 \
+ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -308,6 +313,7 @@ case $basic_machine in
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
@@ -322,7 +328,10 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -364,13 +373,13 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -379,11 +388,13 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -397,18 +408,22 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
+ | or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -426,6 +441,7 @@ case $basic_machine in
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
+ | visium-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -763,6 +779,9 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
@@ -782,11 +801,15 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -814,6 +837,10 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -822,7 +849,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-msys
;;
mvs)
@@ -998,7 +1025,7 @@ case $basic_machine in
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
@@ -1013,7 +1040,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1340,29 +1371,29 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1486,9 +1517,6 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1537,6 +1565,12 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
tic54x-*)
os=-coff
;;
diff --git a/configure b/configure
index 160ecab..d09ce1f 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pkg-config 0.28.
+# Generated by GNU Autoconf 2.69 for pkg-config 0.29.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=pkg-config>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='pkg-config'
PACKAGE_TARNAME='pkg-config'
-PACKAGE_VERSION='0.28'
-PACKAGE_STRING='pkg-config 0.28'
+PACKAGE_VERSION='0.29'
+PACKAGE_STRING='pkg-config 0.29'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=pkg-config'
PACKAGE_URL=''
@@ -650,19 +650,18 @@ PKG_CONFIG
subdirs
INTERNAL_GLIB_FALSE
INTERNAL_GLIB_TRUE
+WINE
NATIVE_WIN32_FALSE
NATIVE_WIN32_TRUE
+native_win32
WARN_CFLAGS
use_indirect_deps
system_library_path
system_include_path
pc_path
+TESTS_PKG_CONFIG
TESTS_SHELL
LN
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
CPP
OTOOL64
OTOOL
@@ -710,6 +709,10 @@ build_vendor
build_cpu
build
LIBTOOL
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
am__untar
am__tar
AMTAR
@@ -774,6 +777,7 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
+enable_silent_rules
enable_shared
enable_static
with_pic
@@ -782,11 +786,12 @@ enable_dependency_tracking
with_gnu_ld
with_sysroot
enable_libtool_lock
-enable_silent_rules
+enable_largefile
with_pc_path
with_system_include_path
with_system_library_path
enable_indirect_deps
+enable_define_prefix
with_internal_glib
with_gcov
enable_host_tool
@@ -1346,7 +1351,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pkg-config 0.28 to adapt to many kinds of systems.
+\`configure' configures pkg-config 0.29 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1416,7 +1421,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pkg-config 0.28:";;
+ short | recursive ) echo "Configuration of pkg-config 0.29:";;
esac
cat <<\_ACEOF
@@ -1424,6 +1429,8 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
@@ -1433,11 +1440,11 @@ Optional Features:
--disable-dependency-tracking
speeds up one-time build
--disable-libtool-lock avoid locking (might break parallel builds)
- --enable-silent-rules less verbose build output (undo: "make V=1")
- --disable-silent-rules verbose build output (undo: "make V=0")
+ --disable-largefile omit support for large files
--enable-indirect-deps list both direct and indirect dependencies.
--disable-indirect-deps only list direct dependencies.
default=auto
+ --enable-define-prefix redefine prefix in .pc files [default=yes on Win32]
--disable-host-tool install link to pkg-config with $host- prefix
[default=yes]
@@ -1541,7 +1548,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pkg-config configure 0.28
+pkg-config configure 0.29
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1910,7 +1917,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pkg-config $as_me 0.28, which was
+It was created by pkg-config $as_me 0.29, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2263,7 +2270,9 @@ ac_config_headers="$ac_config_headers config.h"
-am__api_version='1.12'
+
+
+am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2464,8 +2473,8 @@ test "$program_suffix" != NONE &&
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
@@ -2476,15 +2485,15 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -2717,6 +2726,45 @@ else
fi
rmdir .tst 2>/dev/null
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
@@ -2739,7 +2787,7 @@ fi
# Define the identity of the package.
PACKAGE='pkg-config'
- VERSION='0.28'
+ VERSION='0.29'
cat >>confdefs.h <<_ACEOF
@@ -2773,12 +2821,16 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
@@ -2786,6 +2838,50 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
+
case `pwd` in
*\ * | *\ *)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
@@ -3803,6 +3899,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
depcc="$CC" am_compiler_list=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -6176,7 +6331,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -6194,7 +6349,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -6213,7 +6371,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -11389,6 +11550,207 @@ fi
AM_BACKSLASH='\'
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+
+
+fi
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11928,6 +12290,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
depcc="$CC" am_compiler_list=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -12158,6 +12579,9 @@ done
test -n "$TESTS_SHELL" || TESTS_SHELL="$CONFIG_SHELL"
+TESTS_PKG_CONFIG='${top_builddir}/pkg-config${EXEEXT}'
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default search path for .pc files" >&5
$as_echo_n "checking for default search path for .pc files... " >&6; }
@@ -12624,7 +13048,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-pkg-config config.lt 0.28
+pkg-config config.lt 0.29
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -13630,7 +14054,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Win32" >&5
$as_echo_n "checking for Win32... " >&6; }
-case "$build" in
+case "$host" in
*-*-mingw*)
native_win32=yes
;;
@@ -13640,6 +14064,7 @@ case "$build" in
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $native_win32" >&5
$as_echo "$native_win32" >&6; }
+
if test "x$native_win32" = xyes; then
NATIVE_WIN32_TRUE=
NATIVE_WIN32_FALSE='#'
@@ -13649,91 +14074,80 @@ else
fi
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+if test "$cross_compiling" = yes && test "$native_win32" = yes; then
+ # Extract the first word of "wine", so it can be a program name with args.
+set dummy wine; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_WINE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$WINE"; then
+ ac_cv_prog_WINE="$WINE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_WINE="wine"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+WINE=$ac_cv_prog_WINE
+if test -n "$WINE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINE" >&5
+$as_echo "$WINE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test "x$WINE" != x && TESTS_PKG_CONFIG='${WINE} '"$TESTS_PKG_CONFIG"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if prefix should be redefined at runtime" >&5
+$as_echo_n "checking if prefix should be redefined at runtime... " >&6; }
+# Check whether --enable-define_prefix was given.
+if test "${enable_define_prefix+set}" = set; then :
+ enableval=$enable_define_prefix;
+else
+ enable_define_prefix=$native_win32
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_define_prefix" >&5
+$as_echo "$enable_define_prefix" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ENABLE_DEFINE_PREFIX `test "x$enable_define_prefix" = xyes && echo TRUE || echo FALSE`
+_ACEOF
+
+
+
+
+
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-# PKG_PROG_PKG_CONFIG
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-# _PKG_CONFIG
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-# _PKG_SHORT_ERRORS_SUPPORTED
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-# PKG_CHECK_MODULES
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
-# PKG_CHECK_VAR
@@ -14044,7 +14458,7 @@ else
fi
-ac_config_files="$ac_config_files Makefile check/Makefile check/config.sh"
+ac_config_files="$ac_config_files Makefile pkg.m4 check/Makefile check/config.sh"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -14592,7 +15006,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pkg-config $as_me 0.28, which was
+This file was extended by pkg-config $as_me 0.29, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14658,7 +15072,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pkg-config config.status 0.28
+pkg-config config.status 0.29
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -15069,6 +15483,7 @@ do
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "pkg.m4") CONFIG_FILES="$CONFIG_FILES pkg.m4" ;;
"check/Makefile") CONFIG_FILES="$CONFIG_FILES check/Makefile" ;;
"check/config.sh") CONFIG_FILES="$CONFIG_FILES check/config.sh" ;;
@@ -15667,7 +16082,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -15718,7 +16133,7 @@ $as_echo X"$mf" |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
diff --git a/configure.ac b/configure.ac
index 2b33371..af2172c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,14 +1,26 @@
AC_PREREQ([2.62])
AC_INIT([pkg-config],
- [0.28],
+ [0.29],
[https://bugs.freedesktop.org/enter_bug.cgi?product=pkg-config],
[pkg-config])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([main.c])
-dnl Initialize automake and libtool
-AM_INIT_AUTOMAKE([1.11])
+dnl Initialize automake. Sadly, we have to kludge around the automake
+dnl test driver here. We need to use the serial driver (for now), but
+dnl the parallel driver is the default in 1.13. So, we want to specify
+dnl the serial driver. Unfortunately, the option to specify that driver
+dnl didn't exist until 1.12.
+m4_define([automake_version],
+ [m4_esyscmd([${AUTOMAKE-automake} --version |
+ awk '/^automake/{print $NF}'])])
+m4_define([automake_serial_tests],
+ [m4_if(m4_version_compare(automake_version, [1.12]), [-1],
+ [], [serial-tests])])
+AM_INIT_AUTOMAKE([1.11 ]automake_serial_tests)
+
+dnl Initialize libtool
LT_PREREQ([2.2])
LT_INIT
@@ -17,6 +29,9 @@ dnl by either passing --disable-silent-rules to configure or passing V=1
dnl to make
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+dnl Enable large file support
+AC_SYS_LARGEFILE
+
dnl Check for programs
AC_PROG_CC
AC_CHECK_PROG([LN], [ln], [ln], [cp -Rp])
@@ -32,6 +47,10 @@ AC_ARG_VAR([TESTS_SHELL], [Path to a POSIX shell to be used for testing])
conf_path="$PATH:`getconf PATH 2>/dev/null`"
AC_PATH_PROGS([TESTS_SHELL], [bash ksh sh], [$CONFIG_SHELL], [$conf_path])
+dnl The built pkg-config to use for testing. This allows it to be set
+dnl from the make command line if necessary.
+AC_SUBST([TESTS_PKG_CONFIG], ['${top_builddir}/pkg-config${EXEEXT}'])
+
dnl
dnl Default pkg-config search path
dnl
@@ -138,7 +157,7 @@ fi
AC_SUBST(WARN_CFLAGS)
AC_MSG_CHECKING([for Win32])
-case "$build" in
+case "$host" in
*-*-mingw*)
native_win32=yes
;;
@@ -147,15 +166,36 @@ case "$build" in
;;
esac
AC_MSG_RESULT([$native_win32])
+AC_SUBST([native_win32])
AM_CONDITIONAL(NATIVE_WIN32, [test "x$native_win32" = xyes])
+dnl When cross compiling to Windows, Wine might be available to help
+dnl for testing.
+if test "$cross_compiling" = yes && test "$native_win32" = yes; then
+ AC_CHECK_PROG([WINE], [wine], [wine])
+ test "x$WINE" != x && TESTS_PKG_CONFIG='${WINE} '"$TESTS_PKG_CONFIG"
+fi
+
+dnl On Windows, the prefix variable in .pc files can be redfined at
+dnl runtime. Allow the default behavior to be controlled.
+AC_MSG_CHECKING([if prefix should be redefined at runtime])
+AC_ARG_ENABLE([define_prefix],
+ [AS_HELP_STRING([--enable-define-prefix],
+ [redefine prefix in .pc files @<:@default=yes on Win32@:>@])],
+ [],
+ [enable_define_prefix=$native_win32])
+AC_MSG_RESULT([$enable_define_prefix])
+AC_DEFINE_UNQUOTED([ENABLE_DEFINE_PREFIX],
+ [`test "x$enable_define_prefix" = xyes && echo TRUE || echo FALSE`],
+ [Define ${prefix} in .pc files at runtime])
+
dnl
dnl Find glib or use internal copy. Required version is 2.16 for
dnl g_win32_get_package_installation_directory_of_module().
dnl
dnl Pull in pkg-config macros to find external glib.
dnl
-m4_include([pkg.m4])
+m4_include([pkg.m4.in])
m4_define([glib_module], [glib-2.0 >= 2.16])
AC_ARG_WITH([internal-glib],
[AS_HELP_STRING([--with-internal-glib], [use internal glib])],
@@ -215,6 +255,7 @@ AM_CONDITIONAL([HOST_TOOL], [test "x$enable_host_tool" = xyes])
AC_CONFIG_FILES([
Makefile
+pkg.m4
check/Makefile
check/config.sh
])
diff --git a/depcomp b/depcomp
index 25a39e6..fc98710 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-03-27.16; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
case $1 in
'')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -57,11 +56,65 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
# A tabulation character.
tab=' '
# A newline character.
nl='
'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -86,32 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
fi
if test "$depmode" = xlc; then
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
- gccflag=-qmakedep=gcc,-MF
- depmode=gcc
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -134,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -143,13 +198,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -157,15 +216,14 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
@@ -174,15 +232,15 @@ gcc)
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' "$nl" < "$tmpdepfile" |
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -200,8 +258,7 @@ sgi)
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -209,7 +266,6 @@ sgi)
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
-
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
@@ -217,19 +273,15 @@ sgi)
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr "$nl" ' ' >> "$depfile"
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
-
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
@@ -247,9 +299,8 @@ aix)
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -262,9 +313,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -273,65 +322,113 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form 'foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
-icc)
- # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
- # However on
- # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using '\':
+ # and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
- # tcc 0.9.26 (FIXME still under development at the moment of writing)
- # will emit a similar output, but also prepend the continuation lines
- # with horizontal tabulation characters.
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
+
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form 'foo.o: dependent.h',
- # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
- < "$tmpdepfile" > "$depfile"
- sed '
- s/[ '"$tab"'][ '"$tab"']*/ /g
- s/^ *//
- s/ *\\*$//
- s/^[^:]*: *//
- /^$/d
- /:$/d
- s/$/ :/
- ' < "$tmpdepfile" >> "$depfile"
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -342,9 +439,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -355,8 +451,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -366,76 +461,61 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in 'foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
msvc7)
if test "$libtool" = yes; then
@@ -446,8 +526,7 @@ msvc7)
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
- if test "$stat" = 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -473,6 +552,7 @@ $ {
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
@@ -524,13 +604,14 @@ dashmstdout)
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -583,10 +664,12 @@ makedepend)
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -622,10 +705,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -657,15 +740,15 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
diff --git a/glib/Makefile.am b/glib/Makefile.am
index 95c71de..583b914 100644
--- a/glib/Makefile.am
+++ b/glib/Makefile.am
@@ -1,5 +1,5 @@
## Process this file with automake to produce Makefile.in
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib.mk
# http://people.gnome.org/~walters/docs/build-api.txt
.buildapi-allow-builddir:
@@ -18,20 +18,21 @@ AM_CPPFLAGS = \
EXTRA_DIST += \
acglib.m4 \
README.in \
- Makefile.decl \
- mkinstalldirs
+ glib.mk \
+ $(NULL)
# These may be in the builddir too
-BUILT_EXTRA_DIST = \
- README
+BUILT_EXTRA_DIST += \
+ README \
+ $(NULL)
CONFIGURE_DEPENDENCIES = acglib.m4
# build documentation when doing distcheck
DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-gtk-doc --enable-man --disable-maintainer-mode
-DISTCLEANFILES = config.lt
+DISTCLEANFILES += config.lt
distclean-local: lcov-clean
if test $(srcdir) = .; then :; else \
diff --git a/glib/Makefile.decl b/glib/Makefile.decl
deleted file mode 100644
index 50cf169..0000000
--- a/glib/Makefile.decl
+++ /dev/null
@@ -1,97 +0,0 @@
-# GLIB - Library of useful C routines
-
-#GTESTER = gtester # for non-GLIB packages
-GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
-GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
-
-# initialize variables for unconditional += appending
-EXTRA_DIST =
-TEST_PROGS =
-
-### testing rules
-
-# test: run all tests in cwd and subdirs
-test: test-nonrecursive
-if OS_UNIX
- @ for subdir in $(SUBDIRS) . ; do \
- test "$$subdir" = "." -o "$$subdir" = "po" || \
- ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
- done
-
-# test-nonrecursive: run tests only in cwd
-test-nonrecursive: ${TEST_PROGS}
- @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
-else
-test-nonrecursive:
-endif
-
-# test-report: run tests in subdirs and generate report
-# perf-report: run tests in subdirs with -m perf and generate report
-# full-report: like test-report: with -m perf and -m slow
-test-report perf-report full-report: ${TEST_PROGS}
- @test -z "${TEST_PROGS}" || { \
- case $@ in \
- test-report) test_options="-k";; \
- perf-report) test_options="-k -m=perf";; \
- full-report) test_options="-k -m=perf -m=slow";; \
- esac ; \
- if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
- elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
- fi ; \
- }
- @ ignore_logdir=true ; \
- if test -z "$$GTESTER_LOGDIR" ; then \
- GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
- ignore_logdir=false ; \
- fi ; \
- if test -d "$(top_srcdir)/.git" ; then \
- REVISION=`git describe` ; \
- else \
- REVISION=$(VERSION) ; \
- fi ; \
- for subdir in $(SUBDIRS) . ; do \
- test "$$subdir" = "." -o "$$subdir" = "po" || \
- ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
- done ; \
- $$ignore_logdir || { \
- echo '<?xml version="1.0"?>' > $@.xml ; \
- echo '<report-collection>' >> $@.xml ; \
- echo '<info>' >> $@.xml ; \
- echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
- echo ' <version>$(VERSION)</version>' >> $@.xml ; \
- echo " <revision>$$REVISION</revision>" >> $@.xml ; \
- echo '</info>' >> $@.xml ; \
- for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
- sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
- done ; \
- echo >> $@.xml ; \
- echo '</report-collection>' >> $@.xml ; \
- rm -rf "$$GTESTER_LOGDIR"/ ; \
- ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
- }
-.PHONY: test test-report perf-report full-report test-nonrecursive
-
-.PHONY: lcov genlcov lcov-clean
-# use recursive makes in order to ignore errors during check
-lcov:
- -$(MAKE) $(AM_MAKEFLAGS) -k check
- $(MAKE) $(AM_MAKEFLAGS) genlcov
-
-# we have to massage the lcov.info file slightly to hide the effect of libtool
-# placing the objects files in the .libs/ directory separate from the *.c
-# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
-genlcov:
- rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
- $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
- LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
- @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
-
-lcov-clean:
- -$(LTP) --directory $(top_builddir) -z
- -rm -rf glib-lcov.info glib-lcov
- -find -name '*.gcda' -print | xargs rm
-
-# run tests in cwd as part of make check
-check-local: test-nonrecursive
diff --git a/glib/Makefile.in b/glib/Makefile.in
index ef181ad..e363d60 100644
--- a/glib/Makefile.in
+++ b/glib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,24 +15,66 @@
@SET_MAKE@
# GLIB - Library of useful C routines
+
+
+
+
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -51,15 +93,43 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/README.in \
- $(srcdir)/config.h.in $(top_srcdir)/Makefile.decl \
- $(top_srcdir)/configure AUTHORS COPYING NEWS compile \
- config.guess config.sub depcomp install-sh ltmain.sh missing \
- mkinstalldirs
+installed_test_PROGRAMS = $(am__EXEEXT_1)
+noinst_PROGRAMS = $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_1)
+@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs)
+
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
+ $(top_srcdir)/m4macros/glibtests.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/m4macros/ltoptions.m4 \
$(top_srcdir)/m4macros/ltsugar.m4 \
$(top_srcdir)/m4macros/ltversion.m4 \
@@ -71,12 +141,52 @@ am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = README
CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_test_metadir)" \
+ "$(DESTDIR)$(installed_testdir)"
+LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
+am__EXEEXT_1 =
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1)
+PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
+SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -91,26 +201,228 @@ am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
+ $(noinst_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- cscope distdir dist dist-all distcheck
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope check recheck distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/README.in \
+ $(srcdir)/config.h.in $(top_srcdir)/glib.mk AUTHORS COPYING \
+ compile config.guess config.sub depcomp install-sh ltmain.sh \
+ missing test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -192,6 +504,7 @@ GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
@@ -199,6 +512,7 @@ GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
+GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GREP = @GREP@
GSPAWN = @GSPAWN@
@@ -229,7 +543,6 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
@@ -245,6 +558,7 @@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
+NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -271,14 +585,13 @@ PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
-SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDRES = @WINDRES@
-XATTR_LIBS = @XATTR_LIBS@
+WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -309,7 +622,6 @@ gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
-gthread_INCLUDES = @gthread_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -319,6 +631,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -345,12 +659,99 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
# initialize variables for unconditional += appending
-EXTRA_DIST = acglib.m4 README.in Makefile.decl mkinstalldirs
-TEST_PROGS =
+BUILT_SOURCES =
+
+# These may be in the builddir too
+BUILT_EXTRA_DIST = README $(NULL)
+CLEANFILES = *.log *.trs $(am__append_14)
+DISTCLEANFILES = config.lt
+MAINTAINERCLEANFILES =
+EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) acglib.m4 \
+ README.in glib.mk $(NULL)
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
+ $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+installed_test_LTLIBRARIES = $(am__append_13)
+installed_test_SCRIPTS = $(am__append_11)
+nobase_installed_test_DATA = $(am__append_12)
+noinst_LTLIBRARIES = $(am__append_2)
+noinst_SCRIPTS = $(am__append_4)
+noinst_DATA = $(am__append_5)
+check_LTLIBRARIES = $(am__append_6)
+check_SCRIPTS = $(am__append_8)
+check_DATA = $(am__append_9)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
+ $(installed_test_scripts) $(test_extra_scripts) \
+ $(uninstalled_test_extra_scripts) \
+ $(installed_test_extra_scripts) $(all_dist_test_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+
+all_test_data = $(test_data) $(uninstalled_test_data) \
+ $(installed_test_data) $(all_dist_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS}
SUBDIRS = . m4macros glib
DIST_SUBDIRS = $(SUBDIRS)
@@ -360,23 +761,18 @@ AM_CPPFLAGS = \
-DG_DISABLE_DEPRECATED \
-DGLIB_COMPILATION
-
-# These may be in the builddir too
-BUILT_EXTRA_DIST = \
- README
-
CONFIGURE_DEPENDENCIES = acglib.m4
# build documentation when doing distcheck
DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-gtk-doc --enable-man --disable-maintainer-mode
-DISTCLEANFILES = config.lt
-all: config.h
+all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
am--refresh: Makefile
@:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -389,7 +785,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -399,7 +794,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/Makefile.decl:
+$(top_srcdir)/glib.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -411,8 +806,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then rm -f stamp-h1; else :; fi
- @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -427,6 +822,165 @@ distclean-hdr:
README: $(top_builddir)/config.status $(srcdir)/README.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+clean-checkLTLIBRARIES:
+ -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
+ @list='$(check_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
+ }
+
+uninstall-installed_testLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
+ done
+
+clean-installed_testLTLIBRARIES:
+ -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
+ @list='$(installed_test_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files
+
+clean-installed_testPROGRAMS:
+ @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+
mostlyclean-libtool:
-rm -f *.lo
@@ -435,6 +989,51 @@ clean-libtool:
distclean-libtool:
-rm -f libtool config.lt
+install-installed_test_metaDATA: $(installed_test_meta_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
+ done
+
+uninstall-installed_test_metaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
+install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_installed_testDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
@@ -442,14 +1041,13 @@ distclean-libtool:
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
@@ -470,31 +1068,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-cscopelist-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
- done
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -510,12 +1090,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -527,15 +1102,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -544,18 +1115,16 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
-
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-
clean-cscope:
-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
-cscope.files: clean-cscope cscopelist-recursive cscopelist
-
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
@@ -572,6 +1141,162 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@@ -655,10 +1380,16 @@ dist-xz: distdir
$(am__post_remove_distdir)
dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
@@ -691,18 +1422,19 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod u+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
@@ -756,12 +1488,20 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-recursive
-all-am: Makefile config.h
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
+ $(check_SCRIPTS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+ config.h
installdirs: installdirs-recursive
installdirs-am:
-install: install-recursive
+ for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
@@ -781,8 +1521,12 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -792,9 +1536,14 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
-clean-am: clean-generic clean-libtool mostlyclean-am
+clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
+ mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -814,7 +1563,10 @@ info: info-recursive
info-am:
-install-data-am:
+install-data-am: install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA \
+ install-nobase_installed_testDATA
install-dvi: install-dvi-recursive
@@ -860,29 +1612,44 @@ ps: ps-recursive
ps-am:
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
- cscopelist-recursive ctags-recursive install-am install-strip \
- tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am check-local clean \
- clean-cscope clean-generic clean-libtool cscope cscopelist \
- cscopelist-recursive ctags ctags-recursive dist dist-all \
- dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \
- dist-xz dist-zip distcheck distclean distclean-generic \
- distclean-hdr distclean-libtool distclean-local distclean-tags \
+uninstall-am: uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-TESTS check-am check-local clean \
+ clean-checkLTLIBRARIES clean-checkPROGRAMS clean-cscope \
+ clean-generic clean-installed_testLTLIBRARIES \
+ clean-installed_testPROGRAMS clean-libtool \
+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscope \
+ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-local distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
+ install-info-am install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA install-man \
+ install-nobase_installed_testDATA install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.PRECIOUS: Makefile
### testing rules
@@ -896,7 +1663,7 @@ test: test-nonrecursive
# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
-@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:
# test-report: run tests in subdirs and generate report
@@ -910,9 +1677,9 @@ test-report perf-report full-report: ${TEST_PROGS}
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}
@ ignore_logdir=true ; \
@@ -970,6 +1737,12 @@ lcov-clean:
# run tests in cwd as part of make check
check-local: test-nonrecursive
+@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
+@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@)
+
# http://people.gnome.org/~walters/docs/build-api.txt
.buildapi-allow-builddir:
diff --git a/glib/NEWS b/glib/NEWS
deleted file mode 100644
index 0495565..0000000
--- a/glib/NEWS
+++ /dev/null
@@ -1,6351 +0,0 @@
-Overview of changes from GLib 2.32.3 to 2.32.4
-==============================================
-
-* Bugs fixed:
- 639771 g_dir_read_name() can also return NULL on error
- 660851 Breakage of code due to changes in the GThread...
- 666386 Empathy doesn't open Redirect URI with particu...
- 671545 Constify collect and lcopy strings in GTypeVal...
- 672329 memory leaks in gutils.c and glib tests
- 672548 g_utf8_validate: @str shouldn't end up annotat...
- 672889 GLib.utf8_validate does segfault
- 673253 Not strict enough autconf test for libelf
- 674452 SEGFAULT in gio contenttype test
- 674777 What's the (transfer) of g_variant_lookup()?
- 675309 gkeyfile: Fix annotations for g_key_file_load_...
- 675446 gfile: Plug memory leak in g_file_make_directo...
- 675832 Incomplete gsettings bash auto-completion
- 676265 GNetworkMonitor leaks a lot of memory
- 676277 Document that g_app_info_create_from_commandli...
- 676397 g_environ_* should work with NULL envp
- 676594 [Patch] fix g_reload_user_special_dirs_cache
- 676816 Add more GLIB_AVAILABLE_IN_*
- 677235 Clarify the comment at the top of gmarshal.list
- 677782 Install bash completion files in /usr/share
- 677817 g_key_file_to_data adds extra blank lines in so...
- 677952 Missing annotation for GDBusConnection signal "...
- 678052 g_wakeup_acknowledge is called too often.
- 678066 gdbus codegen does not work with python3
- 678273 unicode othercasing is wrong in gregex
- 678333 gdbus-codegen code causes warnings under -Wfloa...
- 678758 GTlsInteraction unlocks an unlocked mutex
- 678881 Test failures in /socket/timed_wait in some cas...
- 678941 /contenttype/guess test case failure
- 678944 gio returns the wrong default applications for ...
- 678949 wrong definition of ulong_bool for 64 bit big e...
- 678959 /mainloop/timeouts race condition: assertion fa...
- 679258 The 'Since' tag for G_SOURCE_CONTINUE and G_SOU...
- 679671 Misc fixes for g_dbus_node_info_new_for_xml
- 679813 Documentation bug on http://developer.gnome.org...
-
-
-Overview of changes from GLib 2.32.2 to 2.32.3
-==============================================
-
-* Bug fixes:
- Correct a typo in the ELF configure check
- Reset LIBS after the ELF configure check
- Fix GIO/GObject Visual C++ projects
- gio: fix error handling in async case of GProxy...
- GConverterInputStream: fix an infinite loop...
-
-* Translation updates:
- Bulgarian
- Catalan
- Czech
- German
- Japanese
- Slovenian
- Telugu
-
-
-Overview of changes from GLib 2.32.1 to 2.32.2
-==============================================
-
-* GApplication: can now have a NULL application ID
-
-* g_clear_object: fix warnings when using it on C++ (due to lack of
- ability to implicitly cast void*)
-
-* GDBus:
- - add our own implementation of the message bus for use on Windows only
- - fix up a few bugs that use of this bus uncovered in GDBus
- - escape nonce files in dbus addressess (think 'c:\')
- - support initial underscores in dbus codegen namespace (for private)
-
-* Fix misdetection of GNUstep as Cocoa (for the MacOS GSettings backend)
-
-* make sure configure fails if AC_CHECK_ALIGNOF cannot detect the alignment
-
-* GAppInfo: overwrite the DISPLAY only if it is set in the launch context
-
-* glib/tests/date: force US locale running the GDateTime tests
-
-* GSocketControlMessage: Don't warn about unknown messages
-
-* Resources:
- - fix broken use of GVDB on big endian machines
- - set a 'display name' so that pretty file names appear in Gtk CSS
- warning messages
-
-* GMainContext:
- - block child sources when blocking the parent
- - introduce more testcases for child sources
-
-* Translations updates:
- Brazilian Portuguese
- French
- Galician
- Italian
- Lithuanian
- Polish
- Polish
- Serbian
- Simplified Chinese
- Spanish
-
-* Bug fixed:
- 619026 avoid warning in gutils.h when using gcc with -Wconversion
- 669260 Open/Save dialog hangs waiting for data with libsoup
- 671249 GApplication: Allow a null application_id?
- 672786 goa-daemon: action in notification doesn't work
- 673409 g_resource_lookup_data may return stale data pointer
- 674172 glib-2.32.1 misdetects GNUstep as Cocoa
- 674345 cssprovider: Make sure to print out file name in css warnings
- 674483 broken configure results when cross-compiling with gcc >= 4.5
-
-Overview of changes from GLib 2.32.0 to 2.32.1
-==============================================
-
-* Bugs fixed:
- 670254 glib-2.30.2: Fails /GDateTime/new_from_unix test
- 672541 glib-compile-resources prepends --sourcedir to absolute paths
- 673139 URL to mailing lists in README incorrect
- 673174 g_input_stream_read[_finish]: document returning 0 on EOF
- 673191 glib/gchecksum.c warning: dereferencing type-punned pointer...
- 673216 [W32] gtestutils does not use path separators consistently
- 673439 Properly deprecate g_value_{set,get}_char
- 673612 Fails to decode dictionaries wrapped in two layers of array
- 673803 gclosure: Support return values of GVariants
- 669285 glib/tests/markup-parse fails under non-english locale
- 673911 gio-2.0.pc lists full path to executables, breaking cross com..
- 673762 gnextstepsettingsbackend.c:343: error: parse error before 'in'
-
-* Updated translations:
- Belarusian
- British English
- Bulgarian
- Catalan
- Czech
- French
- German
- Hebrew
- Hindi
- Hungarian
- Italian
- Japanese
- Kannada
- Latvian
- Lithuanian
- Marathi
- Norwegian bokmål
- Odia
- Polish
- Serbian
- Slovenian
- Spanish
- Swedish
- Telugu
-
-
-Overview of changes from GLib 2.31.22 to 2.32.0
-===============================================
-
-* Bugs fixed:
- 671988 Quickly registering / unregistering objects on bus...
- 672095 glib needs stable sort function
- 672406 glib/tests/include.c fails to build on FreeBSD
-
-* Updated translations:
- Telugu
-
-
-Overview of changes from GLib 2.31.20 to 2.31.22
-================================================
-
-* Bugs fixed:
- 531901 Use __builtin_bswap* for GUINT*_SWAP_LE_BE if building...
- 653167 Out of tree build is broken on windows
- 668973 Test /gvariant/parser fails on Solaris 10
- 669797 gvfs now lists its fuse mounts
- 670846 deadlock: GStreamer-WARNING **: wrong STREAM_LOCK count 0
- 671664 gio-querymodules: unlink instead of writing empty cache
- 671676 Glib can't be cross-compiled any more after merge of...
- 671918 gnome-shell is inaccessible unless started while an AT...
- 671942 GSocketMsgFlags: annotate as a flags
- 671997 Unix signal handling assumes that volatile 1-byte writes...
- 672013 GSimpleAsyncResult: support reliable cancellation
- 672026 default log output should include pid and/or prgname
- 672095 glib needs stable sort function
- 672201 G_SPAWN_SEARCH_PATH should continue on ENODEV and ETIMEDOUT
- 672239 request NO_REPLY from g_dbus_connection_call() with no as...
- 672249 gdbusproxy leaks asyncresult in an error case instead of...
-
-* Translation updates:
- Assamese
- British English
- Catalan
- Catalan (Valencian)
- Danish
- Esperanto
- Finnish
- French
- German
- Hungarian
- Korean
- Lithuanian
- Norwegian bokmål
- Polish
- Portuguese
- Russian
- Traditional Chinese
-
-
-Overview of changes from GLib 2.31.18 to 2.31.20
-================================================
-
-* Update to Unicode 6.1
-
-* Update PCRE to 8.30
-
-* Deprecations are now versioned, and new API is
- marked with the version it was introduced.
- Use these with GLIB_VERSION_{MIN,MAX}_REQUIRED
-
-* The performance of signal emissions has been
- improved for simple cases
-
-* Bugs fixed:
- 529806 Cannot build in 64-bit Mac OS X due to libiconv
- 580873 Documentation of register type functions incomplete
- 592666 Document how to unset an attribute
- 597785 g_type_class_add_private code snippet is a bad example
- 621368 glib-2.24.1: FAIL: run-assert-msg-test.sh when updating...
- 622149 --disable-regex breaks glib2 build
- 639873 GBinding: Crash when binding two properties on the same...
- 640202 For GLIB v. 2.23.6 and above: impossibility to build mu...
- 668295 Need a way to classify GVolume instances
- 669670 gasyncqueue: don't use deprecated g_cond_timed_wait()
- 670542 Add version information for deprecations
- 670557 gvaluetransform: Fix an infinite loop with GFlagsValue...
- 670721 global variable for signal ID should be hidden
- 670751 IceWM build fails due to the G_DEPRECATED_FOR macro
- 670909 g_dbus_connection_call leaks when it receives an error...
- 670922 Include path to gdbus-codegen in the pkgconfig file
- 670969 GSequence lookup may fail if there was no sort prior to...
- 671025 Constants and identifiers starting with a number are no...
- 671270 make distclean failures
- 671281 glib-compile-resources.xml is missing from the dist tar...
-
-* Translation updates:
- Basque
- Belarusian
- Brazilian Portuguese
- Bulgarian
- Galician
- Hebrew
- Lithuanian
- Persian
- Punjabi
- Serbian
- Simplified Chinese
- Slovenian
- Telugu
- Traditional Chinese
- Uyghur
- Vietnamese
-
-
-Overview of changes from GLib 2.31.16 to 2.31.18
-================================================
-
-* GDBusProxy has now a flag, G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
- which can be set to make GDBus automatically reload
- changed properties even if the propertychanged signal
- does not contain the new values.
-
-* GApplication puts non-unique applications on the bus
-
-* GApplication now has g_application_quit()
-
-* g_async_queue_timed_pop has been deprecated in favor of
- the new g_async_queue_timeout_pop, which uses relative
- delays in microseconds instead of a GTimeVal.
-
-* a huge number of API documentation fixes
-
-* Bugs fixed:
- 647986 put non-unique apps on D-Bus
- 658484 vpn connection vs NetworkSecretDialog
- 664237 GDateTime falls back to UTC if TZ is set
- 669329 gthread-win32: update for g_get_monotonic_time() changes
- 669330 glocalfile: fix error code when opening a directory on win32
- 669372 glib/tests memory leaks.
- 669412 mem leak in g_environ_unsetenv
- 669538 Fix compilation of glib-compile-resources.c on Windows
- 669544 gdbus-codegen example introspection XML is not complete
- 669595 glib-mkenums: fix handling of forward enum declarations
- 669670 gasyncqueue: don't use deprecated g_cond_timed_wait()
- 669671 gobject: use #pragmas to avoid deprecated function warnings
- 669689 Retrieve cwd and environ in local GApplicationCommandLine
- 669810 socket/win32: flush pending read before signaling HUP
- 669865 g_regex_fetch()
- 670085 memory leak in g_output_stream_write_async
- 670138 gbytes.h is missing the G_BEGIN/END_DECL guards
- 670485 Simplify session API (shared bug with gtk+)
-
-* Updated translations:
- Belarusian
- Danish
- Galician
- Serbian
- Telugu
- Hebrew
-
-
-Overview of changes from GLib 2.31.14 to 2.31.16
-================================================
-
-* GResource:
- - The resource compiler can now convert pngs into
- pixel data that can be used without parsing at runtime
- (requires gdk-pixbuf-pixdata to be present)
-
-* Bugs fixed:
- 669123 resource compiler: failing to-pixdata should...
- 669173 resource: fix xml preprocess entity handling
- 669224 Cross-compilation broken by data-to-c
- 669253 gsettings set buggy on array values
- 669334 fix memory leak in bookmark file parser
-
-* Translation updates:
- Norwegian bokmål
- Spanish
-
-
-Overview of changes from GLib 2.31.12 to 2.31.14
-================================================
-
-* GResource:
- - GLib now includes a commandline utility, gresource,
- to explore resources in ELF files
- - The resource compiler can now optionally strip
- ignorable whitespace from XML resources
- - The resource compiler can now generate build dependencies
- - The resource compiler will now autoselect output formats
-
-* GApplication:
- - The menu markup parser API has been dropped, the
- menu XML support lives in GTK+ now
-
-* GValueArray has been deprecated
-
-* Bugs fixed:
- 626258 N-ary Trees - 'nodes' can be inserted before and after...
- 634232 Core Dump / Aborted using g_key_file_to_data
- 639099 schema compiler chokes on valid schema
- 667228 Deprecate GValueArray
- 667243 Add an element clear function to GArray
- 667929 glib-compile-resources: xml resources doesn't need to...
- 668250 g_date_time_format() produces a non-UTF8 string
- 668468 'IP_ADD_SOURCE_MEMBERSHIP' undeclared
- 668532 resources: add dependency generator to the resource compiler
- 668539 resources: compiler should autoselect output format...
- 668561 gresource-tool not internationalized
- 668572 glib_cv_g_atomic_lock_free config.cache setting not honored...
- 668650 GRealArray->clear_func should be initialized
- 668756 GKeyFile: allow loading from empty strings
- 668857 fix couple of typos in comments
- 669024 goption: implement platform_get_argv0() for OpenBSD
-
-* Updated translations:
- Galician
- Norwegian bokmål
- Spanish
- Traditional Chinese
-
-Overview of changes from GLib 2.31.10 to 2.31.12
-================================================
-
-* GApplication:
- - Drop support for exporting menus - this functionality
- will be provided in GtkApplication
- - Add a way to create actions that change settings
-
-* Bugs fixed:
- 629503 Add async versions of g_unix_connection_{receive,send}_credentials
- 656301 glib-compile-schemas should not create an empty file
- 668071 mingw-gcc build fails on gio/gsocket.[c|h]
- 668118 the big appmenu switcheroo
- 668158 base64 encode and line termination
- 668163 GDBusConnection: note that exit-on-close is sometimes TRUE
- 668269 gsignal: add g_signal_handlers_disconnect_by_data
- 668279 create GAction from GSettings
-
-* Translation updates:
- Norwegian bokmål
-
-
-Overview of changes from GLib 2.31.8 to 2.31.10
-===============================================
-
-* GResource:
- - A new facility to allow linking data files into binaries
- and make them available as resources
- - Resources are compiled using glib-compile-resources
- - GIO supports resource:/// uris to access resources
-
-* Bugs fixed:
- 619126 Missing dependency libs
- 658315 g_key_file_get_keys() should set length to 0...
- 660371 is it ever valid to have 0 as a GError domain?
- 666700 Add some missing (allow-none) annotations
- 667375 GAsyncInitable subclassing (and async subclassing...
- 667447 Missing many introspection annotations
- 667790 Protect call to pthread_condattr_setclock with define
- 667938 wrong gtypes generated for empty flags enums
-
-* Translation updates:
- Hebrew
- Spanish
-
-
-Overview of changes from GLib 2.31.6 to 2.31.8
-==============================================
-
-* GObject:
- - The type checks for overriding properties have been loosened.
- In particular, it is now possible to add the CONSTRUCT flag
- to an overridden property
- - GWeakRef is a new API for weak references; unlike g_object_weak_ref
- and g_object_add_weak_pointer, it is thread-safe.
-
-* GHashTable has grown new convenience api for use as a set:
- g_hash_table_add, g_hash_table_contains
-
-* GSocketConnection has gained API for managing connection status
-
-* GSettings: a native OS X backend has been added, under the
- name 'nexstep'
-
-* Bugs fixed
- 455640 Something fishy with GRegex and unicode
- 548954 weak references are not threadsafe
- 625751 Add G_FILE_ATTRIBUTE_FILESYSTEM_USED
- 658871 gbacktrace: g_get_prgname () isn't called for a NULL argu...
- 664069 gvariant: Never break out of g_variant_iter_loop
- 664830 g_strescape doesn't natively handle \v (vertical tab)
- 665211 GDBusConnection singleton access can race with disposal
- 665805 Add GSocketClient::action, for tracking socket client status
- 666116 some tests provoke undefined behaviour, which is undesira...
- 666422 Unreachable code in gio gnetworkmonitornetlink.c
- 666551 Crash in g_thread_xp_SleepConditionVariableSRW
- 666595 menu parser disallows id='' on submenu and section
- 666615 loosen property override flag restrictions
- 666616 gobject: fix property override type checks
- 666803 g_utf8_validate() fails to validate strings with known size
- 666804 g_ateaxit deprecation warning in devhelp points in wrong ...
- 666951 g_mkdtemp: Since version incorrect in docs
- 666978 Fails to compile glib applications with ISO C90 compiler
- 667098 ginetaddressmask leaks its address property
- 667225 GSocket: add missing type checks to public methods
- 667226 GSocket: fix an error return value
- 667279 Sometimes crashes when launching commandline-crea...
- 667285 Wrong keyname listed in documentation for g_deskt...
- 667331 Use g_queue_free_full() convenience function
- 667420 GHashTable GDB pretty printing is broken
-
-* Updated translations
- Belarusian
- Bulgarian
- Hebrew
- Norwegian bokmål
- Norwegian Nynorsk
- Spanish
- Vietnamese
-
-
-Overview of changes from GLib 2.31.4 to 2.31.6
-==============================================
-
-* GApplication no longer has APIs for setting menus. Those have been
- moved to GtkApplication.
-
-* the GActionGroup import/export functionality has been decoupled from
- GApplication by the introduction of a new interface for the purpose of
- handling platform data: GRemoteActionGroup. This allows Gtk to
- properly deal with platform data (and gdk threads) on window actions.
-
-* lots of documentation improvements
-
-* bug fixes and a huge number of memory leak fixes
-
-* the test suite now passes on ARM and some of the GDBus testcase hangs
- we've been seeing have been resolved (although others could remain)
-
-* g_bytes_get_data() API changed: now includes 'size' out parameter
-
-* new g_queue_free_full() API similar to g_[s]list_free_full()
-
-* desktop files: use standard "Keywords" now, not "X-GNOME-Keywords"
-
-* gsettings commandline tool now has --schemadir option for schemas not
- installed in the usual place (ie: as part of plugins)
-
-* Bugs fixed:
- 643736 GApplication doesn't emit dbus signals on action updates
- 657433 g_queue_free_full() missing
- 664699 glib: documentation fixes
- 665737 acquire/release gdk threads lock on incoming dbus
- 665879 GBytes: add a size argument to g_bytes_get_data
- 666113 various leaks in GLib, GIO are visible in the regression tests
- 666115 various tests leak memory, obscuring real leaks in the library
- 666145 Doc could be more explicite that g_thread_init calls can be droped
- 666173 Configure warning - linux/netlink.h usability... no
- 666296 Race condition in g_thread_xp_get_srwlock
- 666415 Settings tools should allow specifying a schema directory
-
-* Translations updated:
- French
- Spanish
-
-Overview of changes from GLib 2.31.2 to 2.31.4
-==============================================
-
-* EXPERIMENTAL: Menu support has been added to GApplication. Menus
- are exported on the bus, alongside the actions that are already there.
- There have also been many related improvements to action group
- functionality.
-
- These new APIs are subject to changes in the coming releases. In
- particular, it seems somewhat likely that the APIs for registering
- menubars may change in order to accommodate windows with different
- types of menubars.
-
-* GDBusConnection previously directly dispatched destroy notifies when
- unregistering objects if the current main context was the same context
- the object was exported on. It now unconditionally dispatches these
- through an idle on the context.
-
-* Clean up Requires in pc files. Linking against GIO no
- longer drags in gmodule. This may require dependency
- fixes here and there.
-
-* Introduce GBytes, a data type for immutable, fixed-size
- byte sequences. This makes the pre-existing GBuffer
- API available outside GLib
-
-* GDBusInterfaceSkeleton can now be exported on multiple
- connections
-
-* Bugs fixed:
- 600161 Do not use static GTypeInfo and GInterfaceInfo
- 640077 GFileMonitor: Always send CHANGES_DONE_HINT after a move...
- 641720 Misleading definition for local_command_line() in GApplic...
- 648516 Little comment error and 2 useless lines of code
- 651997 Dummy backend for gapplication
- 652560 Test for g_ascii_strtod is failing
- 662208 failure to initialize a GInitable should be considered...
- 662718 GDBusInterfaceSkeleton should be able to export on multi...
- 663291 GBytes: Immutable, refcounted sequence of bytes
- 664406 Need context for a proper translation
- 664455 Build fixes for GLib GIT master (2.31.x)
- 664558 GDBusWorker.frozen has a value > 1 in a gboolean
- 664559 sys/wait.h not available on windows
- 664617 gdbus segfault error 4 in libgio-2.0.so.0.3102.0
- 664635 GMemory{Out,In}putStream _async functions break sub-class...
- 664809 Add command line option to gtester to allow skipping tests
- 665067 cryptic assertion failure if nonsensical flag combinations...
- 665184 Check ref. count before reffing/unreffing
- 665298 Add 'Requires.private: libpcre' to glib-2.0.pc
- 665391 update documentation around mainloops
- 665607 ./configure is there for fiddling with cross-compile enviro...
- 665634 g_dbus_node_info_new_for_xml() errors on unknown attributes...
- 665685 Add a #define for the max length of a Unicode decomposition
- 665733 GDBusConnection holds lock while calling destroynotify
-
-* Translation updates:
- Norwegian bokmål
- Spanish
-
-
-Overview of changes from GLib 2.31.0 to 2.31.2
-==============================================
-
-* Monotonic time is now properly supported on Windows
-
-* glib-mkenums: fix @ENUMPREFIX@ with /*< underscore_name=... >*/
-
-* EXPERIMENTAL: introduce new GSettingsSchema and GSettingsSchemaSource
- APIs for the convenience of plugin system authors and those who wish
- to introspect the contents of schemas. This API may change.
-
-* Improve the performance of GObject property notifies.
-
-* GDBus:
- - fix a race when unowning a name immediately after owning it
- - thread safety improvements on GDBusConnection
- - fixes for exit-on-close functionality
-
-* Deprecations:
- - add G_SIGNAL_DEPRECATED
- - don't use G_DISABLE_DEPRECATED masking for functions anymore
-
-* docs
- - tmpl/ is finally dead for glib
-
-* GIO:
- - GInetAddressMask: new type for internet address range matching
- - various GIO file and stream fixes
- - improvements to attribute and fileinfo handling
-
-Overview of changes from GLib 2.29/2.30 to 2.31.0
-=================================================
-
-This release contains a huge number of changes (500 commits worth). The
-list below attempts to summarise, but not every change is listed.
-
-* Major changes to threading and synchronisation
- - threading is now always enabled in GLib
- - support for custom thread implementations (including our own internal
- support for errorcheck mutexes) has been removed
- - a whole lot of dead code (to deal with the non-threaded case) has
- been ripped out. This includes the racy path of GMainContext that
- caused deadlocks with respect to child process exits in
- single-threaded programs (such as gtester).
- - libgthread is now an empty shell and g_thread_init() is no longer
- required (and has been deprecated)
- - GMutex and GCond can now be statically allocated without explicit
- initialisation. Dynamic allocation for these types is deprecated.
- - new types GRecMutex and GRWLock can also be statically allocated
- without explicit initialisation.
- - GPrivate can now be statically allocated and has an improved API.
- Dynamic allocation of GPrivate is deprecated.
- - GStaticMutex, GStaticRecMutex, GStaticRwLock, GStaticPrivate are
- deprecated.
- - GCond now uses monotonic time internally and a new API takes
- monotonic time for timed waits, deprecating the wallclock API
- - removal of the insane macro indirection used in the previous
- implementation of threading and synchronisation APIs
- - use SRWLock and CONDITION_VARIABLE APIs when available on Windows
- (Vista and later) and emulate them on XP
- - leaks of G(Static)Private-allocated data on some cases of thread exit
- have been fixed
- - simplified new thread creation API with the old API deprecated. The
- concept of joinability has disappeared (all threads are joinable) as
- have priority levels, 'bound'ness (ie: kernel vs. userspace threads)
- and ability to manipulate the stack size.
- - GThread is now a refcounted type
- - other implementation details changed
-
-* Move headers for some deprecated functionality to a separate
- deprecated/ directory.
-
-* New support for attribute-based deprecations to issue compiler
- warnings instead of breaking the build and/or giving warnings about
- implicit declarations (and possibly miscompiling).
-
-* GCache has been deprecated (after its last use was removed from our
- platform over a year ago).
-
-* It is no longer possible to include individual headers (like
- "ghash.h") -- you must #include <glib.h>.
-
-* The misguided experiment of allowing the program to stumble along with
- missing GSettings schemas is now over -- the abort is back.
-
-* Clarify that fork() is not valid while using GMainContext. This is
- because the internal resources of the GMainContext end up being shared
- by both processes. We had an assert here but it was breaking existing
- (valid) use cases as well, so it has been removed for now.
-
-* GApplication
- - add ::shutdown signal as logical dual to ::startup
- - don't use a GMainLoop: iterate the GMainContext directly (improves
- quit logic)
-
-* Several portability fixes for Windows, OpenBSD, Solaris
-
-* Add new GValue API to specifically deal in signed chars (in case the
- platform defines 'char' as unsigned)
-
-* some new API to mitigate the problems associated with calling setenv()
- in a multi-threaded program
-
-* Use CLOCK_MONOTONIC unconditionally if the libc has support at compile
- time (ie: stop checking for kernel support at runtime).
-
-* pkg-config files:
- - drop -uninstalled variants
- - remove gobject dependency on gthread
-
-* New macro G_ATOMIC_LOCK_FREE is defined if the atomic operations are
- implemented without use of a mutex. Cleaned up atomic-related
- compilation issues with mingw compilers on win32 systems.
-
-* SOCKS proxy and resolver improvements
-
-* Fix the spelling of G_IO_FLAG_IS_WRITABLE (was WRITEABLE) and
- introduce a macro for backwards compatibility.
-
-* GDBus:
- - many code generation updates and improvements
- - some race condition fixes, including testcase hangs
-
-* GVariant:
- - new g_variant_new_from_fixed_array() API
- - substantial docs improvements/clarifications
-
-* GKeyFile is now refcounted and boxed
-
-* mount monitoring is now based on /proc/mounts (where available)
- instead of mtab
-
-* new macros G_SOURCE_CONTINUE and G_SOURCE_REMOVE for returning from
- GSourceFunc (so you don't have to remember what TRUE and FALSE mean)
-
-* use xlocale functions where available to avoid too much heavy lifting
- in functions like g_ascii_strtod()
-
-* GMappedFile can now be created from an fd
-
-* error message strings grammar/i18n fixes
-
-* many docs updates
-
-* Partial list of bugs closed:
- 70598 Unify GStaticMutex and GMutex.
- 320888 optimization for g_main_context_wakeup
- 398418 GChildWatch race condition?
- 527214 g_timer_elapsed() returns random values
- 580505 add a way to set/get name for a thread
- 583511 race condition means g_main_loop_quit() does not work
- 590808 GKeyFile should have a refcount and a boxed type in GObject
- 592715 Document that g_str_hash() and g_int_hash() are not NULL safe
- 631413 Add macros for GSourceFunc return values
- 632049 not immediately clear what g_variant_get_fixed_array expects
- 640212 "Error stating file" is not a friendly message
- 640293 Use xlocale functions to implement g_ascii_strtod()
- 640975 Check that error exists before trying to set it
- 643934 GApplication lacking a logical dual for the ::startup signal
- 651268 assertion failed in GDBus worker thread
- 653987 g_key_file_get_integer cannot interpret trailing spaces
- 654412 Documentation for g_variant_get_child_value unclear
- 654563 info capplet: Failed to calculate disk space
- 655366 missing GSettings schemas lead to obscure crashes
- 656621 g_spawn_*() calls executables in current directory
- 656679 [gi] Add two annotations to gio
- 657992 Add glib__private__() API to share between glib,gio
- 658188 _set_as_last_used_for_type generates a broken mimeapps.list
- 658206 gsocks5proxy.c has invalid gettext use
- 658207 glib-compile-schemas says "can not"
- 658558 simpleaction: Fix documentation of :enabled
- 658683 clean up charset/language threading issues
- 658692 add introspection annotations to g_time_val_from_iso8601()
- 658715 Duplicite strings
- 658769 Invalid reuse of GError in GThreadedResolver
- 658806 sign error in string hash implementation
- 658976 gdbus-codegen's C namespace option needs to support Ugly_Case
- 659070 gdbus-codegen generated code segfaults when property changes
- 659082 gdbus-codegen: Single letter namespaces get dropped from names
- 659212 GMappedFile should fail on non-regular files
- 659324 _SPLICE_CLOSE_TARGET doesn't mark the output stream as closed
- 659423 Use adaptive mutexes when available
- 659427 Move deprecated code to a separate directory
- 659646 gdbus-codegen produce code that warnings at build
- 659690 Possible build warning in code generated by gdbus-codegen
- 659699 property name collision when generating code for "Connection"
- 659754 Add API to GMappedFile that allows to pass FD
- 659838 incorrect types in introspection for g_object_bind_property
- 659866 pthread_rwlock_t requires defined __USE_UNIX98
- 659870 gvalue: Fix signedness of g_value_get_char()
- 659889 glib-2.29.92/gio-2.0.pc.in has a wrong line.
- 659916 GObject size of 64K is not actively enforced
- 659920 Missing setter for read/write property 'closed' of GIOStream
- 659923 Add g_variant_new_fixed_array() function
- 660013 Remove old g_atomic configure cruft
- 660096 glib/rwlock tests failure (tests asserted)
- 660130 Possible loss of user data when updating mimeapps.list
- 660147 tracker causes g_critical in "gsettings list-recursively"
- 660413 Make G_ASSERT_STATIC work with clang
- 660498 Generated test code fails when the codegen changes
- 660511 Use /proc/mounts for monitoring mounts, not /etc/mtab
- 660536 Expose options for /etc/fstab entries
- 660635 Deprecate g_thread_foreach
- 660637 Pending dbus method calls not canceled on connection loss
- 660739 kill off g_{mutex,cond}_{new,free}()
- 660740 make GThread more standard
- 660741 g_cond_timedwait is a disaster
- 660743 macro wrappers for g_once_init_enter/leave
- 660744 finish killing g_thread_init()
- 660745 GPrivate leaks on Windows
- 660791 [gio] Improve doc for g_file_make_directory_with_parents()
- 660843 asyncqueue-test is broken
- 660849 Remove cruft from g_strerror and g_strsignal
- 660886 GDBusProxy: don't drop/complain about unknown props/signals
- 660887 g_slice_set_config() is broken
- 660994 Add g_main_context_ref_thread_default()
- 661255 gio: enable test_peer regression test for OpenBSD
- 661257 giomodules.c uses ":" instead of G_SEARCHPATH_SEPARATOR_S
- 661318 tests use pthread without appropriate compiler/linker flags
- 661421 Applications fail to initialize on GNU Hurd - commit
- 661438 Implement G_GNUC_DEPRECATED/G_GNUC_DEPRECATED_FOR on Visual C++
- 661711 Sorting keys for GDrive, GVolume and GMount instances
- 661763 desktop-app-info: Add support for X-GNOME-Keywords
- 661896 /gdbus/connection/life-cycle is racy
- 661914 Gstreamer/Totem locks up
- 662100 regression: g_dbus_connection_close() triggers exit-on-close logic
-
-* Translations updates:
- Belarusian
- Brazilian Portuguese
- British English
- Bulgarian
- Catalan
- Catalan (Valencian)
- Czech
- Danish
- Esperanto
- French
- Gujarati
- Hebrew
- Hungarian
- Italian
- Japanese
- Lithuanian
- Norwegian bokmål
- Oriya
- Polish
- Russian
- Serbian
- Simplified Chinese
- Slovak
- Slovenian
- Spanish
- Tamil
- Vietnamese
-
-Overview of changes from GLib 2.29.18 to 2.29.90
-================================================
-
-* API/ABI changes:
- - unix signal watches now match the API of all of the other sources
- - revert the addition of g_date_time_source_new () from last release
-
-* networking and other fixes for Solaris
- - we no longer support symbolic port names (ie: from /etc/services)
- - check if -lsocket is needed
- - fix g_socket_details_from_fd()
- - avoid getmntinfo
- - fix some harmless warnings
-
-* GDateTime improvements:
- - generally improved standards compliance (with C99)
- - support C99-specified format strings: %g, %G, %V, %c, %C, %w
- - consult the locale for the preferred 12-hour time format (%r)
- - drop support for non-standard %N and broken %W
- - better support for formatting non-POSIX (eg: Arabic) numerals
- - locale-related test case fixups, and fix some leaks
-
-* GTlsInteraction: add interaction method invocation guarantees
-
-* gdbus-codegen: post-process all interfaces when parsing >1 file
-
-* make GMainLoop, GMainContext and GSource boxed types
-
-* fix a race condition in the first use of g_get_monotonic_time()
-
-* lots gtk-doc cleanups
-
-* better intltool compatibility when generating pot file
-
-* avoid GCC-specific compiler options when not using GCC
-
-* Translation updates:
- Belarusian
- Brazilian Portuguese
- Canadian English
- Galician
- Indonesian
- Korean
- Lithuanian
- Norwegian bokmål
- Portuguese
- Spanish
- Swedish
-
-Overview of changes from GLib 2.29.16 to 2.29.18
-================================================
-
-* GDateTime is now respecting LC_TIME when formatting
-
-* GTimeZoneMonitor has been removed again
-
-* A new API for wallclock functionality has been added:
- g_date_time_source_new(). This API is still experimental
- and may be changed or removed before 2.30.
-
-* Bugs fixed:
- 628904 Add credential support for FreeBSD and fix a socket issue
- 650763 gdbus-codegen is broken with python 2.7
- 655129 GDateTime could provide api for implementing wall clocks
- 656341 gtlsconsoleinteraction.c uses getpass() which isn't avail...
- 656387 GCancellable can be used concurrently
- 656443 Make GTlsInteraction ask_password cancellable
- 656675 void functions should not return in glib 2.29.16
- 656772 g_variant_compare for uint64 incorrect
- 656914 Load GIO_EXTRA_MODULES first, and ignore duplicates
- 657083 The header langinfo.h is not available on all systems
- 657084 gfileutils: fix docs/annotations for temp file methods
- 657138 Some files missing in POTFILES.in
- 657206 GInputStream leaked in g_file_icon_load_async()
- 657243 g_cancellable_set_error_if_cancelled() documentation
- 657274 Use detected PYTHON variable as shebang for gdbus-codegen
- 657336 Speling fixes for glib found with codespell
- 657452 plural forms needed
- 657454 Translation comment needed
- 657540 Print out file:// URL to coverage HTML report after building
- 657593 g_test_trap_fork calls close(-1)
- 646082 Addresses from GSocket should be normalized before returning
- 657517 fix gio/tests/gdbus-peer on bsd
-
-* Translation updates:
- Brazilian Portuguese
- Galician
- Norwegian bokmål
- Punjabi
- Russian
- Serbian
- Spanish
- Swedish
- Traditional Chinese
- Uighur
-
-
-Overview of changes from GLib 2.29.14 to 2.29.16
-================================================
-
-* GTlsDatabase: an abstract class that provides support
- or certificate and key lookup. An implementation will
- be provided in glib-networking
-
-* GHmac: Support or HMAC digests
-
-* Misc new API:
- - g_ptr_array_add_full: creates a GPtrArray with
- a preallocated size and a destroy function
- - g_desktop_app_info_get_show_in: checks if a GDesktopAppInfo
- should be shown in a given desktop environment
- - g_mkdtemp, g_mkdtemp_full, g_dir_make_tmp: create
- temporary directories
-
-* Unify thread wakeup implementations of GMainContext
- and GCancellable, and use eventfd for it when available
-
-* Show mounts in $XDG_USER_DIR in addition to /media and $HOME
-
-* Bugs fixed:
- 636572 GTlsCertificateDB
- 644601 Some tests need a running dbus session
- 652284 deal with small key lengths
- 652827 glib-2.29.8 no longer builds with mingw.org's toolchain
- 653063 PEM parser fails parsing private key when put first
- 654078 Fail to static linking with Glib library
- 654450 New functions: g_ptr_array_new_full()
- 654793 Add G_VALUE_INIT
- 655044 GDesktopAppInfo: Add g_desktop_app_info_get_show_in()
- 655148 gdbusconnection is broken when compiling with mingw
- 655241 glocalfile.c no longer compiles with MinGW GCC
- 655598 g_cancellable_get_fd: silently return -1 for NULL cancellable
- 655664 gdbus should not abort if no dbus session is available
- 655769 Use ZLIB_CFLAGS when compiling gio
- 656031 Improve GVariant annotations
- 656048 glib-codegen requires Python >= 2.5
- 656151 configure test logic inverted, doesn't match comments
- 656152 GCC only syntax used, yet other compilers allowed by configure.
- 656162 allow use of lcov 1.9 for coverage
- 656282 GDBusProxy: uninitialized local variables can be freed
- 656283 Failing tls connection cause assertion
- 118563 Add g_mkdtemp in the spirit of g_mkstemp
- 636405 Add g_return_if_fail() to g_settings_bind_with_mapping()
- 656039 race condition between GDBusProxy signals and public API
- 656492 g_io_channel_new_file failure (open(2) behavior wrt POSIX)
-
-* Translation updates:
- Bulgarian
- Esperanto
- French
- Galician
- German
- Hebrew
- Indonesian
- Italian
- Norwegian bokmål
- Russian
- Spanish
- Swedish
-
-
-Overview of changes from GLib 2.29.12 to 2.29.14
-================================================
-
-* Unicode improvements
- - add g_unicode_script_{to,from}_iso15924
- - add G_UNICODE_SPACING_MARK define
- - more normalisation improvements
- - stop using deprecated g_unicode_canonical_decomposition()
-
-* GParamSpec:
- - mark the 'name' field as 'const' and add a comment to the header to
- help avoid future problems caused by bad hacks
-
-* Merge some (modified) patches from Debian:
- - 03_blacklist-directories.patch
- - add some blacklisted mount directories
- - 60_wait-longer-for-threads-to-die.patch
- - sleep longer in a test case, if needed to avoid failing
-
-* Units policy change: prefer use of SI units
- - deprecate g_format_size_for_display, add g_format_size(_full)
-
-* GSettings: don't call g_error() when the schema is missing
-
-* GVariant support for arrays of object paths:
- - new g_variant_{new,get,dup}_objv API
- - support for g_variant_{new,get} '^ao' and '^a&o' similar to '^as'
-
-* GDBus:
- - use new improved array-of-objects support and pass 'ao' as char**
- instead of GVariant*
- - improve handling of 'h' type (Unix file descriptor index)
-
-* GIO:
- - fix compilation without USE_STATFS and USE_STATVFS
-
-* Documentation fixes
-
-* Bugs fixed:
- 622921 Migrate from dbus-glib to glib's GDBus
- 648271 Add g_unicode_script_to_iso15924()
- 654948 Stop using deprecated g_unicode_canonical_decomposition()
- 654988 g_atomic_int_add should document behaviour change
- 655025 #define G_UNICODE_SPACING_MARK G_UNICODE_COMBINING_MARK
- 655076 normalization misses some Full_Composition_Exclusion=True.
-
-* Translations updated:
- Spanish
-
-Overview of changes from GLib 2.29.10 to 2.29.12
-================================================
-
-* Add new API to do Unicode (de-)composition in atomic steps,
- for use in Harfbuzz.
-
-* Bugs fixed:
- 615895 (indirectly) support non-NULL-terminated regexes in GRegex
- 617949 glib trunk fails to compile on Solaris w/ Studio 12...
- 620423 Document the possibility to unset attributes
- 627974 Floating reference headaches
- 644687 Not finding cross-links in current doc set
- 649246 g_output_stream_splice() cannot be used on 32-bit machines...
- 653841 a helper script to build glib from git master on win32
- 653935 g_slist_free_full/g_list_free_full iterates twice in the list
- 654017 tests: fix glib_translations_work() in gsettings unit test
- 654085 Don't needlessly use "echo -e" when creating .def files
- 654195 Add g_unichar_compose() and g_unichar_decompose()
- 654232 GCancellable eventfd problems
- 654394 suspicious use of floating references in GDBusInterfaceSkeleton
- 654536 GSettings: lift key name length restriction to 64
- 654627 GParamSpec: intern property names
- 654651 Better g_unicode_canonical_decomposition()
- 654917 Make g_cclosure_marshal_generic the default signal handler
-
-* Translation updates:
- Belarusian
- Finnish
- Korean
- Latvian
- Lithuanian
- Norwegian bokmål
- Turkish
-
-
-Overview of changes from GLib 2.29.8 to 2.29.10
-===============================================
-
-* New features:
- - g_desktop_app_info_get_nodisplay: a function that is required
- to port gnome-menus to GDesktopAppInfo
- - g_hash_Table_iter_replace: new function to replace a value
- while iterating over a hash table
- - g_utf8_substring: convenience API to extract substrings from
- UTF-8 strings
- - g_action_group_add_entries: convenience API for creating lots
- of actions quickly
- - Use eventfd instead of pipes for waking up main contexts and
- for cancellation when available
- - GMatchInfo is now a refcounted boxed type
-
-* API changes in GAction:
- - the 'set_state' entry in the GActionInterface vtable has been
- renamed to 'change_state
- - g_action_set_state has been renamed to g_action_change_state
- - the 'state' property has been changed to read-only
- - GSimpleAction can no longer be subclassed
-
-* Bug fixes
- 647796 g_variant_new_variant is not marked as constructor
- 652072 gmain: make use of signalfd()
- 652168 Crosscompiling Fails if build<=2.24 and host >2.24
- 652750 make dist fails
- 652758 GDataInputStream: Clarify g_data_input_stream_read_line docs...
- 652822 Add a g_hash_table_iter_replace
- 652897 tiny docs clarification for g_utf8_to_ucs4_fast
- 653140 gmain: use Linux eventfd() for main context wake up
- 653429 drop AM_MAINTAINER_MODE or enable it by default
- 653484 GAsyncCallbacks should default to allow-none
- Add missing fundamental types to the generic marshaller
-
-* Translation updates
- Belarusian
- Galician
- Russian
-
-Overview of changes from GLib 2.29.6 to 2.29.8
-==============================================
-
-* Bug fixes
- 646608 export_symbols variable for gio dynamic library is wrong
- 646635 Fix introspection of GLib
- 647930 Documentation: GDataInputStream _read_upto() version
- 651745 Switch to _ prefixing rather than G_GNUC_INTERNAL
- 651920 Improve qsort_r detection
- 651959 gbitlock: "asm goto" is not available in gcc < 4.5
- 651998 gdbus-codegen: Use relative Python imports
- 652000 Fix for gatomic.c on Windows/MSVC
- 652002 Proposal to clean up gvaluetransform.c for MSVC
- 652025 g_dbus_connection_register_object: error is not set...
- 652081 Typos in a GBinding warning message
- 652197 Improper handling of double values in GDBusMessage
- Fix a deadlock in gobject finalization
-
-* Translation updates:
- Czech
- Galician
- German
- Hebrew
- Norwegian bokmål
- Spanish
- Uighur
-
-
-Overview of changes from GLib 2.29.4 to 2.29.6
-==============================================
-
-* Atomic operations have been rewritten from scratch to make use
- of gcc builtins where possible. As a side-effect of this, calls
- to g_atomic_ API with explicit casts may now be problematic; if
- that happens to you, try first to remove the casts. Another
- side-effect of the rewrite is that g_atomic_int_exchange_and_add
- has been deprecated in favor of g_atomic_int_add.
-
-* A full set of atomic operations on pointers has been added,
- including bit locks in pointer-size locations.
-
-* Access to quarks is now lockless
-
-* GObject data scalability has been greatly improved
-
-* g_data_time_format now supports alternative digits and padding
-
-* Introspection improvements:
- - Add a boxed type for GVariantBuilder
- - Annotation fixes in GDBus, GVariant, g_base64_
-
-* Bugs fixed:
- 502560 g_rand_double_range returns 'inf'
- 612729 g_mkdir_with_parents can fail if the directory already exists
- 617491 g_once() implementation is inefficient
- 619418 Add a performance test for UTF-8 decoding functions
- 619435 Make g_utf8_to_ucs4_fast() yet faster
- 626549 G_STATIC_ASSERT_EXPR
- 631231 bitlock: Fix detection and usage of futexes with Bionic
- 632294 g_queue_remove() should return a boolean
- 640518 GMainLoop has quadratic complexity when all pollfd's...
- 642026 Race condition in g_static_private_free
- 646635 Fix introspection of GLib
- 648678 g_date_time_format(): support %O flags for localized numbers
- 649480 Use MSG_CMSG_CLOEXEC in recvmsg in gio/gsocket.c
- 649506 GTestFunc et al lacking Since tag
- 649657 Don't return gboolean for functions that throw
- 649775 glib-gio-gdbuscodegen-Makefile.patch
- 649915 gsettings accepts unquoted strings longer than two characters
- 649973 gthread: build unix tests only on unix
- 649988 gdbus-codegen: Drop dependency on argparse
- 650078 forkbomb building glib/tests/protocol
- 650211 Optimization in key file parsing
- 650236 Application over DBus implements action state incorrectly
- 650345 g_key_file_has_key_full: New function to fix g_key_file_has_key...
- 650458 reduce overhead in g_object_set/get_data
- 650459 hash table consistency while calling destroy notify funcs
- 650688 enforce rules about hash table modification
- 650823 expand the set of atomic ops
- 650874 codegen chokes on docs
- 650882 use stdout instead of stderr for informational messages
- 650884 fix compilation with gcc2
- 650885 implement glib credentials on OpenBSD (hackish)
- 650935 G_GNUC_MAY_ALIAS and atomic ops
- 651009 minor documentation fix
- 651034 Regarding g_cond_wait after g_thread_pool_push in gthreadedresolver
- 651133 race condition in GDBusConnection's emit_signal_instance_in_idle_cb
- 651141 hashtable infinite loop
- 651219 fix path to true(1) on OpenBSD
- 651223 Fix some compile warnings on OpenBSD
- 651327 Minor fixes for the gsocket API
- 651467 Add pointer sized bitlocks
- 651650 gdbus: Avoid busy wait loop
- 651725 gmain: Cleanups and a new test case
- 651745 Switch to _ prefixing rather than G_GNUC_INTERNAL
-
-* Updated translations:
- Catalan (Valencian)
- Esperanto
- Hebrew
- Hungarian
- Russian
- Spanish
-
-
-Overview of changes from GLib 2.29.2 to 2.29.4
-==============================================
-
-* GDBus:
- - Includes several new types to support modeling D-Bus
- objects and interfaces more fully, and also introduces
- an 'object manager' pattern:
- GDBusInterface, GDBusObject, GDBusObjectManager
- These interfaces have client-side implementations:
- GDBusProxy, GDBusObjectProxy, GDBusObjectManagerClient
- And server-side implementations:
- GDBusInterfaceSkeleton, GDBusObjectSkeleton, GDBusObjectManagerServer
- - The new gdbus-codegen utility uses these new classes
- to generate C code and documentation from D-Bus interface
- descriptions in XML
-
-* GTest:
- - There is now a g_test_fail() function to mark
- tests as failed
-
-* GDesktopAppInfo
- - Now has a binding-friendly filename property
- - Other new API to more fully expose desktop file contents:
- g_desktop_app_info_get_categories(),
- g_desktop_app_info_get_generic_name()
-
-* GHashTable:
- - Several optimizations to reduce space consumption of
- large hash tables, in particular tables that are used
- to store sets.
-
-* Unix-specific APIs:
- GLib now installs a separate header, glib-unix.h, that is
- meant to collect Unix-specific APIs. For now, it contains
- g_unix_open_pipe(), g_unix_set_fd_non_blocking() for dealing
- with pipes and fds, as well as APIs to create mainloop
- sources which can trigger callbacks on certain Unix
- signals (SIGTERM, SIGHUP, SIGINT).
-
-* Bugs fixed:
- 631379 GDBus nonce-tcp test failing
- 632631 GLib-CRITICAL **: g_variant_new_string: assertion `g_utf8_validate (string, -1, NULL)' failed
- 635694 gdbus aborting due to unauthorized socket in DBUS_SESSION_BUS_ADDRESS
- 637561 Crash when using G_DBUS_SERVER_FLAGS_RUN_IN_THREAD
- 642935 g_date_time_format() prints wrong value for %z and timezone -0800
- 643134 g_dbus_message_copy
- 644941 glib-unix: New Unix-specific API
- 646013 g_hash_table_remove_all_nodes optimization
- 646309 glib cannot be cross-compilled for mingw32
- 646435 GTimeZone doesn't seem to be thread-safe
- 646957 GIO chained calls don't work with a thread default context
- 647594 README link to mailing list is broken
- 647602 Cannot connect to remote message bus via TCP
- 647746 The GSocketService documentation is incomplete.
- 647826 API: gtester: Add g_test_fail()
- 647903 GDesktopAppInfo: Add g_desktop_app_info_get_categories()
- 648416 g_app_info_create_from_commandline ignores SUPPORTS_STARTUP_NOTIFICATION
- 648423 Support G_DEBUG=trap-warnings
- 648425 GDesktopAppInfo: Add "filename" property for bindings
- 648966 Update g_unichar_iswide and g_unichar_iswide_cjk
-
-* Updated translations
- Norwegian bokmål
- Spanish
- Turkish
- Uighur
-
-
-Overview of Changes from GLib 2.28.0 to 2.29.2
-==============================================
-
-* GApplication
- - The documentation has been enhanced and clarified
- - An opt-out for uniqueness has been added: G_APPLICATION_NON_UNIQUE
- - GApplication now syncs settings before g_application_run() returns
-
-* GDBus
- - Interface lookups are now happening in constant time
- - Signature checking and handling of various unexpected
- situations has been improved
-
-* GVariant
- - The format accepted by the GVariant parser has beend documented
- - GVariant accepts G_VARIANT_TYPE_VARDICT for a{sv}
-
-* GDateTime:
- - The return value of g_datetime_compare() has been fixed to
- match strcmp() semantics
- - In order to handle problems with changing timezones, a GTimeZoneMonitor
- has been added to GIO, and g_time_zone_refresh_local() can be
- called to update the cached information about the local timezone
-
-* GOption now uses /proc/self/cmdline to set the program name instead
- and only falls back to "<unknown>" if that is unavailable
-
-* GSettings:
- - The schema compiler now warns about references to non-existing schemas
-
-* Commandline utilities are now fully translated
-
-* Signals can now indicate that collecting their arguments must
- always happen, even in the absence of connected signal handlers,
- using the G_SIGNAL_MUST_COLLECT flag.
-
-* Bugs fixed:
- 635099 Memory leak in gdbus introspection when parsing xml
- 640489 $ and ^ do not match lines if G_REGEX_MULTILINE|G_R...
- 642042 Overriding GDBus org.freedesktop.DBus.Properties im...
- 642052 g_timeout_add(_seconds) cannot handle large intervals
- 642490 notify_desktop_launch() "g_variant_new_bytestring:...
- 613269 g_type_get_qdata() doesn't work as I expected on subtypes
- 624943 G_VALUE_NOCOPY_CONTENTS is undocumented
- 637738 object_interface_check_properties never actually executes
- 638185 GIOCondition should be annotated as "flags"
- 639478 GDBusServer's g_dbus_server_new_sync() function should just...
- 641755 Add g_settings_get/set_uint() helpers
- 641768 dconf gsettings backend silently drops writes if it can't...
- 642797 g_app_info_get_default_for_type() broken for subtypes
- 642825 Unnecessary assertion failure in g_option_context_parse()
- 642944 NULL key lookup using g_hash_table_lookup_extended()
- 643074 Incorrect documentation for g_socket_receive() and g_socket...
- 643197 g_application_id_is_valid docs imply no valid ids
- 643468 GApplication docs: Warn that handling "command-line" means...
- 643478 GApplication::local_command_line vfunc documentation seems wrong
- 643624 Can g_variant_unref() on an already free'd variant
- 643649 g_application_run() should say that argc/argv can be NULL
- 643780 shouldn't need to create an action group to use actions...
- 643795 g_timeout_add_seconds fires with intervals 1 second longer...
- 644309 Program name is not set when using GtkApplication
- 644428 Crash in failure section of g_markup_collect_attributes()
- 644465 undefined reference to `_usleep'
- 644552 g_timeout_add_seconds(1, ...) may have a latency of up to 2...
- 644607 Correct internal definition of C_()
- 645789 annotations for g_file_*_contents
- 646039 g_settings_list_children() returns child that cannot be opened
- 646310 Accept range with only min or max
- 646420 g_dbus_method_invocation_get_parameters() docs should say...
- 646843 occasional abort on autologin
- 646985 add G_APPLICATION_NON_UNIQUE flag
- 647579 gsettings: Implement reset-recursively
- 647600 gsettings description has typo
-
-* Translation updates
- Afrikaans
- Bulgarian
- Bengali India
- British English
- Bulgarian
- Catalan
- Czech
- Danish
- French
- Galician
- German
- Greek
- Gujarati
- Hebrew
- Hungarian
- Italian
- Japanese
- Korean
- Lithuanian
- Polish
- Portuguese
- Romanian
- Serbian
- Simplified Chinese
- Spanish
- Swedish
- Traditional Chinese
- Uighur
- Vietnamese
-
-
-Overview of Changes from GLib 2.27.93 to 2.28.0
-===============================================
-
-* Bugs fixed:
-641363 GInitable documentation isn't clear about that finalize...
-641395 Add more data about the origin application to the "Lau...
-641411 gdesktopappinfo signals lost if it's the session bus...
-641477 glib-mkenums uses unportable #! line
-641572 Add @EXEEXT@ to pkgconfig binary name
-641688 glib installs GSettings.html and gsettings.html
-
-* Translation updates:
- Galician
- Italian
- Korean
- Punjabi
-
-
-Overview of Changes from GLib 2.27.92 to 2.27.93
-================================================
-
-* Bugs fixed:
- 637013 gio/gdbusmessage.c fails to compile on Solaris
- 640192 Error creating a Gio.Settings object through py...
- 640261 Minimum version for external pcre needs to be..
- 640262 GActionGroup contains redundant TYPE macros
- 640436 Make load_user_special_dirs() resistant to non...
- 640695 g_key_file_load_from_file() mishandles a CR-LF...
- 640724 can't compile gio due to format string issues
- 640725 can't compile tests due to format string issue
- 640807 improve GVariant behaviour with invalid pointers
- 640823 wrong documentation for g_source_add_child_source
-
-* Translation updates:
- Bulgarian
- Galician
- Hebrew
- Norwegian bokmål
- Spanish
- Traditional Chinese
-
-
-Overview of Changes from GLib 2.27.91 to 2.27.92
-================================================
-
-* Update to Unicode 6.0
-
-* Update PCRE to 8.12
-
-* Bugs fixed:
- 637696 g_unix_connection_send_fd() doesn't work
- 638872 null settings backend bug
- 640042 GtkApplication's warning about not connecting...
-
-* Translation updates:
- Arabic
- Basque
- Estonian
- Greek
-
-Overview of Changes from GLib 2.27.90 to 2.27.91
-================================================
-
-* Bugs fixed:
- 638838 gdesktopappinfo: Don't crash if we don't have a desktop filename
- 638894 Splitting on \s* gives no result
- 639064 Update gschema.dtd
- 639084 Copy/paste error in GSettings::writable-changed signal
- 639177 SIGSEGV for GApplications with G_APPLICATION_IS_SERVICE
-
-* Translation updates:
- Estonian
- Galician
- Indonesian
-
-
-Overview of Changes from GLib 2.27.5 to 2.27.90
-===============================================
-
-* Test reports created by gtester-report can now
- include revision information
-
-* The g_desktop_app_info_launch_* family of functions
- now emit a DBus signal when an application is launched.
- Additionally, there is a new variant
- g_desktop_app_info_launch_uris_as_manager(), which
- gives more control over the launched process.
-
-* The memory and null GSettings backends are now available
- as public API
-
-* g_get_locale_variants() is a new function that returns a
- list of variants of a locale identifier
-
-* Bugs fixed:
- 587898 I/O timeouts for GSocket
- 606960 gio: Add extension point for informing parties...
- 631980 Handle an optional <revision> node in the report...
- 634569 Document that g_variant_builder_add_value consumes...
- 635998 Make _g_compute_locale_variants public
- 636806 Add g_{memory,null}_settings_backend_get_default
- 637262 Need a binary DER version of ::accepted-cas
- 637544 Skip fsync() on btrfs
- 637720 void functions should not return a value.
- 637738 object_interface_check_properties never actually...
- 637759 GIOChannel: fix a crash in g_io_channel_read_chars()
- 637852 Updates to glib.vsprops file for MSVC 2008 builds...
- 637858 Updates to test/testglib.c...
- 638349 parameter name of g_variant_new_* may conflict...
-
-* Translation updates:
- Hebrew
- Norwegian bokmål
- Simplified Chinese
- Spanish
- Swedish
- Uyghur
- Vietnamese
-
-
-Overview of Changes from GLib 2.27.4 to 2.27.5
-==============================================
-
-* Network support:
- - Add g_tls_certificate_verify() to verify a certificate
- - Add GTlsConnection:use-system-certdb
- - Other TLS api additions
-
-* GIO:
- - Add g_io_stream_splice_async()/_finish() to splice two iostreams
- - Add g_emblemed_icon_clear_emblems() and make GEmblemedIcon derivable
- - Remove GPeriodic; it did not receive the necessary review and
- integration work to declare it stable
-
-* GSequence:
- - New methods g_sequence_lookup() and g_sequence_lookup_iter()
-
-* Bugs fixed:
- 617254 Missing g_sequence_lookup
- 632544 g_dbus_connection_send_message can not send a locked message...
- 633350 g_hostname_to_ascii() ignores non-ascii dots
- 634583 Better error reporting for g_variant_parse()
- 635007 gsetting enum rule don't work for out-of-srcdir builds
- 635626 GDBus message idle can execute while flushes are pending
- 636100 Can't read GSettings:backend property
- 636305 Typo on g_queue_remove_all() function description
- 636311 appinfo: tweak application positioning for content-types
- 636351 g_simple_async_result_is_valid lacks a version tag
- 636387 gdb autoload files shadow the "dir" builtin
- 636673 g_simple_async_report_error_in_idle should allow object...
- 637147 Add a "delay-apply" property to GSettings
- 637171 emblemedicon: add g_emblemed_icon_clear_emblems()
- 637237 gapplication: plug a memory leak
-
-* Translation updates:
- Estonian
- Galician
- Hebrew
- Norwegian bokmål
- Simplified Chinese
- Spanish
- Traditional Chinese
- Vietnamese
-
-
-Overview of Changes from GLib 2.27.3 to 2.27.4
-==============================================
-
-* GIO
- - Mounts are treated as hidden if they have a path element
- that starts with a dot
- - GAppInfo gained API to differentiate between recommended
- and fallback mime handlers
- - g_cancellable_create_source: creates a GSource that triggers
- when the GCancellable is canceled
- - GPollableInput/OutputStream: Interfaces for pollable streams
- - TLS support has landed, with an extension point that is
- implemented in glib-networking
-
-* GLib
- - Mainloop sources can now have 'child sources'
- - g_get_runtime_dir: New function to return the XDG_RUNTIME_DIR
-
-* Bugs fixed:
- 530786 GFileMonitor "changed" signal underdocumented
- 588189 TLS support for GSocket*
- 630357 g_object_new_valist uses uninitialized memory
- 630559 typo in public string in gsocks: 'The SOCKSv5 require...
- 632445 Documentation refers to removed GNOME 2.0 porting guide
- 634239 Child GSources
- 634241 Add pollable input/output streams
- 634504 allow passing a NULL emblem to g_emblemed_icon_new()
- 634613 unsufficient g_get_user_runtime_dir() documentation
- 635640 schema should inherit gettext-domain from schemalist
- 635768 Protect g_file_monitor_set_rate_limit() against negative...
- 635882 Fix the wrong-category schema test
- 635187 Wrong type of GVariant received in an action...
-
-* Updated translations:
- Galician
- Italian
- Norwegian bokmål
- Uyghur
-
-
-Overview of Changes from GLib 2.27.2 to 2.27.3
-==============================================
-
-* The GTimeSpec type that was introduced in the 2.27.2 has been
- dropped again in favour of APIs that return microseconds as
- 64-bit integer.
- Affected functions:
- g_source_get_time
- g_periodic_unblock
- g_get_monotonic_time
- g_get_real_time
- The similar GTimeVal struct is still around, but its use is
- discouraged.
-
-* GTimer is now using monotonic time unconditionally
-
-* There are some new functions to facilitate error reporting
- in async GIO APIs:
- g_simple_async_result_take_error
- g_simple_async_result_new_take_error
- g_simple_async_report_take_gerror_in_idle
-
-* There is new convenience API to us GVariant dictionaries:
- g_variant_lookup
-
-* It is now possible to delay sending match rules to the
- D-Bus daemon in GDBus:
- G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE
-
-* Support has been added for XDG_RUNTIME_DIR:
- g_get_user_runtime_dir
-
-* Various fixes for Win64/MSVC builds have been committed
-
-* Bugs fixed:
- 620263 Add g_clear_object, g_clear_pointer, g_clear_boxed
- 633075 update Project Files and sources for MSVC 2008/C89
- 633381 gsettings Makefile rules should handle empty list...
- 633685 Use g_simple_async_result_{new_,}take_error
- 633686 Add g_simple_async_report_take_gerror_in_idle
-
-* Translation updates:
- Belarusian
- Galician
- Hebrew
- Punjabi
- Spanish
-
-
-Overview of Changes from GLib 2.27.1 to 2.27.2
-==============================================
-
-* GApplication
- - Export actions over DBus and support activating them from remote instances
- - Support environment passing
-
-* GSettings
- - The gsettings utility has a list-recursively command
- - The gsettings utility has commandline completion for enum values
-
-* GLib is now linked against librt and uses monotonic time for
- timeouts and GPeriod sources. GSource has a new g_source_get_time()
- which returns monotonic time, and g_source_get_current_time() has
- been deprecated
-
-* Bugs fixed:
- 158725 free linked list with data
- 626320 GVariant: Avoid locking in g_variant_get_child_value() if possible
- 629247 add gsimpleasyncresult methods to take over a GError
- 629274 GNetworkService does not do fallback when there is no SRV record
- 631264 gsettings-tool choice/range support
- 631482 g_date_time_from_instant: 1000000000000000000
- 632169 docs for manual use of gsettings-data-convert
- 632571 Add equivalent to gconftool-2's -R option
- 633115 GSettings m4 doesn't fail the build for broken schemas
- 633206 Default g_application_local_command_line() doesn't set exit_status...
- 633339 support more complex gapplication setups
- 633356 Make timeout G_MAXINT mean "no timeout"
-
-* Translation updates:
- Catalan (Valencian)
- Indonesian
- Japanese
-
-
-Overview of Changes from GLib 2.27.0 to 2.27.1
-==============================================
-
-* GDateTime now has full week number support.
- New API: g_date_time_get_week_numbering_year
-
-* The GSettings schema compiler will now skip over
- broken .xml schema files instead of aborting altogether
-
-* GSettings now works properly on bigendian systems
-
-* GSettings has more complete support for ranges
- New API:
- g_settings_get_range
- g_settings_range_check
- The gsettings commandline tool supports ranges too.
-
-* GApplication has been rewritten; see the API docs for details
- and examples. The action support is not complete yet.
-
-* The GLib mainloop has gained 'dispatch to context' functionality,
- which can replace manually created idles in many cases.
- New API:
- g_main_context_invoke
- g_main_context_invoke_full
-
-* The gio-desktop-app-info-lookup extension point has been
- removed from GIO. GIO now uses x-scheme-handler mimetypes when
- looking for default applications.
-
-* On win32, make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA
- folder on Windows, and not CSIDL_PERSONAL. This matches what Qt does,
- and has been widely requested. Also make g_get_user_config_dir() return
- this and not the (roaming) CSIDL_APPDATA folder.
-
-* A periodic event clock has been added in GIO: GPeriodic. Note that this
- API is still experimental and expected to undergo changes before it
- will be incorporated into a stable GLib release. Use at your own risk.
-
-Bug fixes:
- 613822 gobject signal connect/disconnect not thread safe
- 618737 "dispatch to context" functionality
- 620710 g_get_user_data_dir() uses CSIDL_PERSONAL and not CSIDL_APPDATA
- 623400 acquire context before dispatching
- 627126 gsettings schema files don't get installed on FreeBSD
- 627171 g_socket_new_from_fd() doesn't set the right protocol
- 628876 Wrong error description
- 628937 gracefully handle broken schemas
- 629274 GNetworkService doesn't fallback when there is no SRV record
- 629289 g_error() used wrong, produces core dump
- 629687 leaks class refcount in gsocketcontrolmessage
- 629849 GLib-CRITICAL **: g_source_get_context: assertion `!SOURCE_...
- 629945 GDBus deadlock in g_bus_get_sync()
- 630000 g_date_time_difference
- 630077 GDateTime week number support
- 630185 Allow NULL strings in g_quark_try_string()
- 630797 docs mention non-existent g_object_dispose()
- 630968 gschema-compile problems on power g5
- 631263 GSettings needs range/choice APIs
- 631264 gsettings-tool choice/range support
- 631379 GDBus nonce-tcp test failing
- 631410 Port gapplookupgconf.c to using x-scheme-handler/
- 632884 Possible deadlock in g_object_remove_toggle_ref()
-
-Transation updates:
- Basque
- Brazilian Portuguese
- British English
- Bulgarian
- Czech
- Dutch
- Estonian
- French
- Galician
- German
- Greek
- Hebrew
- Hungarian
- Japanese
- Lithuanian
- Polish
- Portuguese
- Romanian
- Simplified Chinese
- Slovenian
- Spanish
-
-
-Overview of Changes from GLib 2.25.15 to GLib 2.27.0
-====================================================
-
-Build:
- - massive restructuring to reduce #include abuse
- - tweaks to silence some harmless compiler warnings
- - rename gschema-compile.c to glib-compile-schemas.c
- - Windows fixes
- - fix building with zlib < 1.2.4 on win32
-
-GDateTime:
- - better msgctxt for translating month and weekday names
- - API is changed quite a lot, implementation is improved
- - GTimeZone is now exposed
-
-GObject:
- - make ordering for overridden interface properties consistent
- - ->priv structures are limited to 64k but this was not documented,
- and exceeding this limit produced bad results. Add docs and enforce
- the limit properly.
- - add g_object_class_install_properties() to install multiple
- properties in one go
- - improve debugging output for GValue containing G_TYPE_STRV
-
-GIO:
- - fix priority sorting of GIO extensions
- - add GCredentials support on FreeBSD
- - fix support for IPv6 addresses in URI parsing functions
- - GSocketClient fixes for when g_socket_connect succeeds immediately
- - clarify string encoding for GFile constructors in docs
- - new functions g_data_input_stream_read_upto{,async,finish}
- - tweak confusing documentation for g_output_stream_write()
-
-GDBus:
- - GDBusMessage can now be locked and copied (like in libdbus)
- - GDBusConnection filter function API has changed again
- - GDBusServer: ::new-connection now declares if the connection was claimed
- - add a partial workaround for GObject bug 627724.
- - very many memory leaks fixed
-
-GVariant:
- - check for size == 0 in g_variant_get_bytestring to avoid a crash
- when attempting to get_bytestring() from an empty array
- - improve gobject-introspection annotations
-
-GSettings:
- - add GSettings Windows registry backend
- - some internal tweaks to the backend API
- - remove g_settings_list_items
- - add g_settings_list_children and _list_keys to replace it
- - add schema compiler restrictions for dealing with lists
- - don't automatically emit value changed signals on writability
- changes
-
-Other:
- - constify the 'parser' vtable param to g_markup_parse_context_push()
- - plug many memory leaks in test cases
-
-Bugs closed:
- 50076 Time API to go with date API
- 584284 g_data_input_stream_read_until_async different from sync version
- 624546 Modification of GDBusMessage in filter function
- 626919 Let g_object_class_install_property() return the installed GParamSpec*
- 628029 GDateTime missing get_week_of_year method
- 628253 Interface properties not listed in a consistent order
- 628331 Plug lots of mem leaks in gio test suite
- 628345 Plug a mem leak
- 628436 Plug a mem leak
- 628505 Fix building with zlib < 1.2.4 on win32
- 628839 [PATCH] datetime: Rename shadowing variables
- 628904 [PATCH] Add credential support for FreeBSD and fix a socket issue
- 628952 incorrect glib_major_version and other variables on cygwin.
- 629192 g_strdup_value_contents(): dump GStrv more usefully
- 629251 g_socket_client_async_connect_complete: assertion failed
- 629259 Failed to connect to "::1"
- 629328 g_markup_parse_context_push doesn't respect const structs
- 629429 month "May" short and full form same with "GDateTime" msgctxt
- 629689 GDBusConnection leaks its GCredentials
- 629698 Segfault in g_variant_get_bytestring()
-
-Updated translations:
- Arabic
- Armenian
- Basque
- British English
- Czech
- Finnish
- Galician
- German
- Hungarian
- Indonesian
- Japanese
- Lithuanian
- Norwegian bokmål
- Polish
- Portuguese
- Punjabi
- Simplified Chinese
- Slovenian
- Spanish
- Swedish
- Swedish
- Traditional Chinese
-
-Overview of Changes from GLib 2.25.14 to GLib 2.25.15
-=====================================================
-
- * GIO
- - Memory leak fixes
- - The GZip(De}Compressor can now process header information
- - Support for network proxies has been added, with the GProxy
- interface and the gio-proxy-resolver extension point. GIO
- includes SOCKSv4 and SOCKSv5 implementations, and libproxy
- is also going to provide an implementation of this extension
- point.
- - There are GAction and GActionGroup interfaces now, which will
- be used in GApplication in the near future.
-
- * GObject
- - There are now convenience macros for defining boxed and
- pointer types
-
- * GDBus
- - Memory leak fixes
- - GDBusProxy for well-known names can now auto-restart
- the service if the name owner disapperas
- - Filter functions are now allowed to modify messages
-
- * GLib
- - GDateTime is a replacement for GDate that supports time
- and timezone information.
-
- * Bugs fixed:
- 50076 Time API to go with date API
- 449565 Add G_DEFINE_BOXED_TYPE()
- 617691 Add GZIP header processing to GZlibCompressor/GZlibDecompressor
- 622184 add g_memory_output_stream_steal_data
- 624546 Modification of GDBusMessage in filter function
- 627088 Build failure in gdbus-peer.c on FreeBSD
- 627181 save a memdup
- 627182 Plug a mem leak in the gdbus-connection test
- 627187 Plug some gdbus mem leaks
- 627188 gdbus-non-socket test occasionally fails
- 627252 G_OPTION_FLAG_NO_ARG is only for callback options
- 627392 gdbus commit 8a3a4596 breaks win32 compile
- 627407 FTBFS on !linux UNIX platforms
- 627604 String error: 'that' twice in a row
- 627969 ABR in g_file_open_tmp
- 628084 gdbus-peer fails with assertion
- 628193 Miscellaneous string fixes
- 628296 abort() in gsocketconnection.c
- 628309 Plug a mem leak in GConverterOutputStream
- 628317 GEmblemedIcon:equal implementation is buggy
- 628323 Fix invalid reads
- 628327 Plug a mem leak
- 628328 Plug a mem leak
- 628329 Don't leak the FD list
- 628324 Invalid reads in gdbus-export test
-
- * Updated translations:
- British English
- Danish
- Galician
- Hebrew
- Punjabi
- Serbian
- Spanish
- Traditional Chinese
-
-
-Overview of Changes from GLib 2.25.13 to GLib 2.25.14
-=====================================================
-
-* GDBus
- - Make the closure variants of GDBus apis work
- - Make error unregistration work
- - Use async IO in the IO thread (626748)
-
-* GIO
- - Make g_simple_async_result_is_valid work without source (626208)
- - GSocketClient: add a timeout property
- - Fix memory leaks in GSocketClient
- - Handle async vs. sync correctly in GSocketConnection stream (616458)
- - Declare stream base classes as abstract
- - Clarify semantics of g_output_stream_write() (627071)
-
-* Other
- - Improve test coverage for GDBus, GRegex, GAsyncResult
- - Drop dead code in pcre, xdgmime
- - Fix a race condition in gtester (578295)
- - Avoid an extra allocation in GAsyncQueue (626704)
- - Add test case for non-socket GIOStream (626841)
- - More explicit GVariant docs (622770)
- - Imroved docs for GAsyncInitable and GSimpleAsyncResult (602417)
-
-* Translation updates:
- - Galician
- - Norwegian bokmål
- - Punjabi
- - Simplified Chinese
- - Swedish
-
-
-Overview of Changes from GLib 2.25.12 to GLib 2.25.13
-=====================================================
-
-+-------------------------------------------------------------------+
-| WARNING: There have been no breaks in API or ABI. Weird, eh? |
-+-------------------------------------------------------------------+
-
-The primary purpose of this release is to fix a serious problem with
-glib 2.25.12: glibconfig.h (as generated on a Fedora amd64 system) was
-being distributed in the tarball. It was being used to build some parts
-of glib on other systems (eg: 32bit ones). This was causing some very
-serious problems.
-
-There have been many other improvements, however:
-
- Build and testing:
- - vastly improved test coverage
- - old tests moved to the gtester framework
- - gtester Makefile modified so that the tests only run once
- - cleanup of how we handle includes while building glib
-
- GVariant:
- - add a g_return_if_fail (utf8) to g_variant_new_string()
-
- GDBus:
- - perform extra sanity checks when serialising messages
- - add API to query and set the byteorder of a GDBusMessage
- - improve debug output, add some extra options
- - if exiting due to the bus disconnecting us, print an error message
- explaining why
- - sort property names correctly
- - don't bother sending RemoveMatch when we will close the connection
- anyway
- - use effective uid/gid for credential passing
-
- GSettings:
- - add G_SETTINGS_BIND_INVERT_BOOLEAN for inverting boolean bindings
- without mapping functions
- - mark all strings in the schema compiler for translation
-
- Binding:
- - improve closure support for bindings
- - copy GSettings INVERT_BOOLEAN flag
-
- Other:
- - fix another complicated GCancellable deadlock possibility
-
-Bugs closed:
- 599590 glib build doesn't look for correct pkg-config
- 619026 avoid warning in gutils.h when using gcc with -Wconversion
- 624739 Please fix POTFILES.in
- 625472 Valgrind claims uninitialized bytes used
- 625500 g_date_set_time_val documentation doesn't mention local time
- 625628 GDBusProxy: wrong property name sorting
- 625753 Incorrect flags used in g_dbus_connection_call_sync()
- 625827 Expand documentation about error quark naming
- 625988 builddir != srcdir issues
- 626107 glibconfig.h is being disted
-
-Updated translations:
- French
- Galician
- Hebrew
- Norwegian bokmål
- Spanish
-
-
-Overview of Changes from GLib 2.25.11 to GLib 2.25.12
-=====================================================
-
-+-------------------------------------------------------------------+
-| WARNING: There have been many API changes in GDBus -- sending |
-| messages, subscribing to signals, closing connections and |
-| registering subtrees are affected. The ABI for GSettingsBackend |
-| has also been changed. For both reasons, a new dconf release is |
-| required (and will be along soon). |
-+-------------------------------------------------------------------+
-
-Build:
- - cleanup automake setup
- - rename configure.in to configure.ac
- - various docs fixups
- - move glibconfig.h to glib/
- - disable dtrace support on Mac OS (which has incompatible 'dtrace')
-
-GSettings:
- - add support for vendor override files (to change the default values
- in a schema)
- - change GSettingsBackend vtable
- - add g_settings_reset()
- - support binding to G_TYPE_STRV properties
-
-GDBus:
- - many bug fixes, including a serialisation fix
- - stop handling incoming connections as soon as stop() is called
- - proper support for file descriptor passing
- - new flags parameter for sending messages
- - new flags parameter for subscribing to signals
- - always reset the message serial when sending a message unless
- G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL is given
- - constness fixes for introspection structures
- - clean ups to subtree registration API
-
-Other:
- - fix divide by zero bug in g_malloc_n functions
- - GIO: don't blindly assume that SOCK_CLOEXEC is supported
- - make GObject property notify freezes threadsafe
- - GIO: clean up credentials passing
- - GApplication: make default-quit not apply if register=FALSE
- - GIO: add annotations for gobject-introspection
-
-Bugs closed:
- 166020 use GAtomic for refcounting
- 617483 Credentials passing
- 622005 [GApplication] no way to modify the "default-quit" property
- 623293 vendor override files
- 623810 Message serialization bug
- 623815 Don't check sender for GDBusProxy objects where name is not set
- 624473 GDBusSubtreeIntrospectFunc return type
- 624483 GDBusSubtreeEnumerateFunc clarification
- 624484 GDBusSubtreeDispatchFunc clarification
- 624754 gdbusaddress.c missing sys/wait.h
- 624968 div by zero in g_malloc_n family
- 624991 GSettings mapping for G_TYPE_STRV
- 625383 Add missing GI annotations
-
-Updated Translations:
- Armenian
- Galician
- German
- Hebrew
- Kazakh
- Romanian
- Simplified Chinese
- Spanish
-
-Overview of Changes from GLib 2.25.10 to GLib 2.25.11
-=====================================================
-
-+-------------------------------------------------------------------+
-| WARNING: There have been minor API changes in GDBus and GVariant. |
-| These API changes will not affect many users, but they do require |
-| a new version of GTK+ to be installed. |
-+-------------------------------------------------------------------+
-
-Build:
- - add a --disable-Bsymbolic configure flag to disable linking with
- -Bsymbolic-functions
- - this release sees the complete removal of the old 'g*alias' hacks
- - honour the NOCONFIGURE environment variable from autogen.sh
- - use proper feature test macros for isnan
- - use pkg-config to check for zlib
- - add ACLOCAL_AMFLAGS to Makefile.am
-
-GDBus:
- - hide Class and instance structures for all GDBus types except
- GDBusProxy. This breaks API by preventing subclassing, but probably
- nobody was doing that.
- - add new GDBusConnection call to support flushing all pending
- outgoing messages
- - change the register_object API to add a reference to the
- GDBusInterfaceInfo object so the caller need not keep it alive
- themselves
- - don't rewrite the serial number when sending messages that already
- have a serial number
- - better error checking for DBUS_SESSION_BUS_ADDRESS environment
- variable
- - switch to g_parse_debug_string for G_DBUS_DEBUG and add a lot of new
- flags
- - add support for temporarily freezing a freshly created
- GDBusConnection. Do this until after the ::new-connection signal
- has finished running on GDBus services.
- - never require non-closed connections (the user is incapable of doing
- this due to the obvious race)
- - remove weird/misleading redundant check on NameOwnerChanged signal
- - emit GDBusProxy::g-properties-changed on NameOwnerChanged
-
-GVariant:
- - the 'g_variant_{new,get}_byte_array' APIs have been removed
- - g_variant_{new,get,dup}_bytestring has been added, with different
- arguments and different behaviour
- - g_variant_{new,get,dup}_bytestring_array has been added, doing
- essentially the same thing as the 'strv' functions, but with byte
- strings instead of utf8 strings
- - G_VARIANT_TYPE_BYTESTRING ('ay'), BYTESTRING_ARRAY ('aay') and
- STRING_ARRAY ('as') constants have been added
- - the undocumented behaviour that g_variant_get_strv() deserialised
- arrays of object paths or signature strings has been dropped
- - additional varargs support for converting bytestrings or bytestring
- arrays with ^ay ^aay ^&ay and ^a&ay
- - improved gobject-introspection annotation
- - fix a problem with GBuffer calling g_slice_free for the wrong type
- - fix leaks in the type inferencing code of the parser
-
-GSettings:
- - improved documentation
- - updated schema XML DTD, now xincluded into the docs
- - added support for schemas that extend other schemas (using the
- 'extends=' attribute). Values of keys in the base schema can be
- overridden using <override>.
- - added theoretical support for lists (using the 'list-of=' attribute)
- - lots of new tests
- - add support for flags (implemented similarly to enums)
- - add support for generating .enums.xml files to gsettings.m4:
- gsettings_ENUM_NAMESPACE = org.example.myapp
- gsettings_ENUM_FILES = ../path/to/*.h
- will generate org.example.myapp.enums.xml with mappings for all
- enums and flags in the specified .h files.
- - warn with g_message() if the 'memory' backend is used by default
- (ie: because no other GSettings backends are installed)
- - fix get_property() for GSettings::schema
- - command line tool: fix a bug that prevented non-basic values from
- being set due to a premature free
- - command line tool: bash completion support
- - chain up in _finalize
- - add a new g_settings_get_mapped API to read settings that require
- post-processing
- - retry with the translated or schema default value if the
- GSettingsBindGetMapping function fails
- - schema compiler: never fail due to empty schema directories (but
- warn)
- - peek rather than ref/unref the GEnumClass in the mapping function
- - schema compiler: compile *.enums.xml before *.gschemas.xml to ensure
- that we have all the enums that the schemas may reference
- - schema compiler: improve accuracy of line numbers in error reports
- - fix crashes in the keyfile backend caused by invalid group names in
- the keyfile
-
-Other:
- - always intern GBinding prop names
- - base64: remove asserts preventing conversion of empty strings
- - document NULL special-cases for GValueArray
- - GNode docs improvements
- - improve detection of 'system internal' mounts
- - fix leaks in the inotify GFileMonitor implementation
- - annotate all custom GIO GSources to improve debugging (e.g. using
- SystemTap)
-
-Tests:
- - Turn on glibc malloc checking features for make check
- - improvements for GSettings tests, plus new tests
- - improved tests for GKeyfile
- - new tests for GDir, GSList, GSList, GAppLaunchContext,
- CharsetConverter, GIcon, ...
- - move some tests to GTester (tree tests, uri tests)
- - generally, really an awful lot of new tests
- - don't try to allocate 2gigs of memory anymore for the array test
-
- 552363 g_value_array_{insert,prepend,append}'s special cases for NULL
- 561248 Improve return value description from g_node_prev/next_sibling()
- 570036 Add ACLOCAL_AMFLAGS to Makefile.am
- 576833 g_sprintf add a reference to g_strdup_printf
- 576854 g_strconcat() documentation should provide a hint about bad l10n
- 582227 reference: add other URI functions to 'URI Functions' section
- 599223 should provide g_spawn_* variants that take a GAppLaunchContext
- 610784 array test failing
- 613057 Leak in inotify GFileMonitor implementation
- 620536 Annotate all custom GIO GSource using g_source_set_name
- 620913 More control with G_DBUS_DEBUG
- 622124 implement flags
- 622127 GSettings extended key validation
- 622128 retry with default value for failed mapping
- 622294 More annotations for GVariant
- 622565 glib-compile-schemas fails when no schemas
- 622600 Fix missing prototype warning
- 622813 gsettings mapping & enum buglet
- 623142 Ensure ::new-connection runs before processing D-Bus messages
- 623143 Never require non-closed connections
- 623319 use g_parse_debug_string for dbus debug flags
- 623401 process enums first
- 623402 schema compiler reports wrong line numbers
- 623407 g_keyfile_settings_backend_new crashes with the key "/"
- 623473 zlib should be checked with pkg-config
- 623537 GDBusProxy has weird checking on NameOwnerChanged
- 623538 GDBusProxy::g-properties-changed emission for corner cases
- 623692 directory with file at multiple MLS levels may display empty
- 623720 gschema.dtd does not contain enum definitions
- 623770 quoting of expand_macro in gdesktopappinfo.c
- 623772 gdesktopappinfo.c, function child_setup
- 623780 g_unix_is_mount_path_system_internal
- 623954 g_settings_finalize
- 623955 Dubious return values
-
-Updated translations:
- Galician
- Hebrew
- Norwegian bokmål
- Spanish
-
-Overview of Changes from GLib 2.25.9 to GLib 2.25.10
-====================================================
-
-+----------------------------------------------------------------+
-| WARNING: There have been API changes in GDBus. Users of these |
-| APIs will need to be adapted. In particular, a new release of |
-| dconf is required to go along with this one. There has also |
-| been a change in the GSettings backend API used for keyfiles. |
-+----------------------------------------------------------------+
-
-* GDBus:
- - add direction parameter to filter functions (API change)
- - allow calling other interfaces with a GDBusProxy
- - padding added to class struct fields (ABI change)
- - fixes for closures-based functions
-
-* GVariant:
- - new is_floating() call
- - add g_value_take_variant() call (required for marshallers)
-
-* GSettings:
- - support for binding GParamSpecEnum properties
- - ifelse-style condition support for GLIB_GSETTINGS m4 macro
- - remove gsettings-schema-convert tool (now in GConf)
- - allow introspection of all installed schemas
- - allow introspection of the keys in a schema
- - rewrite keyfile backend (API change)
-
-* GNIO:
- - don't implicitly close GSocket until it is destroyed
- - windows fixups
-
-* Other:
- - allow GChecksum to take (NULL, 0) for data/length
- - GRelation and GCompletion are now deprecated
- - introduce G_PARAM_DEPRECATED and G_ENABLE_DIAGNOSTIC
- - add working directory to GApplication platform data
- - lots of documentation cleanups
- - PCRE updated to 8.02
-
-* Build:
- - the IA__g_* style symbol aliasing has been disabled and replaced with
- the -Bsymbolic-functions linker flag on platforms that support it.
- Please be on the watch for portability issues and report them to us.
- - many test cases have been moved to the GTester framework
- - lcov support has been added for tests
- - many windows fixes
-
-* Bugs fixed:
- 501057 lcov coverage suite and GLib integration
- 551271 deprecate GRelation
- 601686 Implement diagnostic mode
- 603309 GSocketOutputStream broken on Windows (?)
- 616718 GLIB_GSETTINGS macro can't be used conditionally
- 616855 GSocketConnection: don't close the socket if it's still reffed
- 618866 g_ptr_array_remove_index_fast memory leak
- 619878 keyfile backend calls keys_changed with invalid argument
- 619879 keyfile backend doesn't make use of expected_type
- 621092 Add with_closures() variants for bindings
- 621172 Cross compiling fails
- 621838 Actually add cwd to platform data
- 621945 Filter outgoing messages in GDBusConnection
- 621947 add g_value_take_variant
- 622038 GSettings: "It is a programmer error" documentation is unclear
- 622154 [patch] update documentation for g_application_new
- 622281 binding: Add SYNC_CREATE to the flags
- 622480 Improve documentation for g_strcmp0()
- 622554 g_error called if schema not installed
- 622601 Return interned strings from g_settings_list_keys
-
-* Translation updates:
- - Galician
-
-Overview of Changes from GLib 2.25.8 to GLib 2.25.9
-===================================================
-
-+----------------------------------------------------------------+
-| WARNING: There have been API changes in GDBus, GSettings and |
-| GApplication. Users of these APIs will need to be adapted. In |
-| particular, a new release of GTK+ is required to go along with |
-| this one. |
-+----------------------------------------------------------------+
-
-* GDBus
- - Use Gio's default async implementation
- - Fix proxy construction for objects with no properties
- - Fix error handling in synchronous initialization
- - Do not dispatch calls to unregistered objects
- - Add _with_closures alternative functions
- - Allow constructing GDBusProxy with well-known names
- - Remove GType parameters from GDBusProxy constructors
- - Nuke g_bus_watch_proxy API
- - Add --xml to gdbus-tool to print raw introspected XML
-
-* GSettings
- - schema file format change: store (default, options) in gvdb
- - Add g_settings_sync()
- - Add support for enums and ranges
- - 'context' support has been replaced by direct use of
- GSettingsBackend
-
-* GApplication
- - Switch to using variants for timestamps
- - Use GInitable
-
-* GObject
- - Introduce g_object_notify_by_pspec
- - Add GBinding
- - The GVariant gtype G_TYPE_VARIANT was changed from boxed
- to fundamental. We believe there were no existing users
- of the boxed type, so this should not cause any applications
- to break.
-
-* Test framework
- - Add package and version to the test report XML
- - Use optparse to parse gtester-report commandline
- - Add subunit support to gtester-report
- - Prevent division by zero if no tests
-
-* Bugs fixed:
- 621782 Crash using gbinding
- 619945 GConverterOutputStream triggers assertion and corrupts data
- 621319 more leaked GVariants in GSettings
- 621168 GKeyFile memory leak on Windows platform
- 621002 Switch to using variants for timestamps, split out signals
- 620953 tiny docs addition
- 618904 Lies in gunixmounts documentation
- 621702 Correctly initialize GError
- 611778 minor cleanup of gtester-report
- 621213 GDBusProxy and well-known names
- 621034 Rewrite apps test to ensure children are killed
- 620954 gapplication gvariant simplifications
- 611869 add subunit out feature to gtester-report
- 621119 GDBusProxy and objects with no properties
- 620990 Use Gio's default async implementation again
- 620952 g_application_register_with_data is an ugly API
- 621252 GSettings leaks context
- 618715 fork() in GSettings test cases is problematic 618715
- 621905 Assume a ref when doing async work
- 621266 GSettings "context" clarification
-
-* Translation updates:
- Chinese
-
-
-Overview of Changes from GLib 2.25.7 to GLib 2.25.8
-===================================================
-
-* Initial support for dtrace and systemtap profiling:
- - mainloop sources can be named
- - probes for memory allocation with g_malloc and gslice
- - gquark name tracking
- - type creation
- - object life-cyle (creation, finalization, ref, unref)
- - signal creation and emission
-
-* GVariant
- - has been fixed to work with the FreeBSD malloc
- - added introspection annotations
- - new function: g_variant_builder_add_parsed
-
-* GSettings:
- - g_settings_set/get_strv functions have lost their length parameter
- - g_settings_set_strv accepts NULL
- - added introspection annotiations
-
-* GPermission: an abstract interface for representing permissions,
- with a minimal implementation named GSimplePermission
-
-* GApplication: a basic application support class, with a D-Bus based
- implementation
-
-* Bugs fixed:
- 619585 glib-compile-schemas asserts on FreeBSD
- 620384 Annotate GVariant and GSettings _strv() functions
- 606044 Add support for dtrace/systemtap static markers
- 620350 add g_variant_builder_add_parsed() API
- 620349 utf8ify GVariant printer
- 620767 Typo in GSettings documentation: "INTLTOOL_NOMERGE_RULE"
- 620312 Fix g_settings_[gs]et_strv() API
- 620519 GPermission
- 620582 GPermission needs a simple implementation
- 620496 GSettings schema compiler should reject invalid paths
- 620173 missing single header inclusion guards
- 620265 g_assertion_message_error should take const GError *
-
-* Translation updates:
- Esperanto
- Galician
- Hebrew
- Indonesian
- Norwegian bokmål
- Slovenian
- Spanish
-
-
-Overview of Changes from GLib 2.25.6 to GLib 2.25.7
-===================================================
-
-* NOTE: API/ABI breaks since 2.25.6 release:
- - g_dbus_connection_sync{,_sync} takes a new 'reply_type' argument
- - GSettingsBackendClass 'list' virtual function changed
-
- GSettings backends and things using GDBus may need to be rebuilt.
-
-* GDBus: many build-related fixes
-
-* GDBus (service): return a DBus error when receiving a method call for
- an unknown interface.
-
-* GSettings: fix 'make install' bug in gsettings.m4 for generated schema
- files
-
-* GSettings: avoid non-portable use of LC_MESSAGES
-
-* better approach to handling man pages
-
-
-* Bugs fixed:
- 619527 please improve docs on g_file_make_symlink
- 619391 send-with-reply should have expected result signature
- 618616 Use stack-allocated GVariantBuilders
- 617004 Build with "--disable-nls" fails under MinGW/Win32
- 619142 Build fixes (GDBus)
-
-* Updated translations:
- Estonian
- Galician
- Norwegian bokmål
-
-Overview of Changes from GLib 2.25.5 to GLib 2.25.6
-===================================================
-
-* GDBus: introspection improvements
-* GDBus: build fixes
-
-* GSettings: GSettingsBackend ABI changed **** NOTE ****
-* GSettings: --uninstall option for schema compiler
-* GSettings: new m4 macro with more power
-* GSettings: thread support
-
-* rework of file notification on Solaris
-* fixes for gold linker
-
-* Bugs fixed:
- 619038 increase gsettings.m4 power
- 619031 method-calls-in-thread test failing
- 618839 Typo at translation message
- 616864 GSETTINGS_CHECK_RULE doesn't work with multiple files
- 618730 gunixcredentialsmessage.c doesn't compile on GNU/kfreebsd
- 616314 Make GSettings (partially) threadsafe
-
-* Updated Translations:
- Indonesian
- Galician
- Spanish
-
-Overview of Changes from GLib 2.25.4 to GLib 2.25.5
-===================================================
-
-* GDBus: Fix serialization of empty arrays
-
-* GDBus: Plug various memory leaks
-
-* GSettings: Fix problems with GSETTINGS_CHECK_RULE
-
-* Bugs fixed:
- 616731 GSETTINGS_CHECK_RULE doesn't work in non-srcdir builds
- 616864 GSETTINGS_CHECK_RULE doesn't work with multiple files
- 618615 mem leaks in parse_value_from_blob
- 618622 Plug some mem leaks in gdbus
- 618650 Plug a mem leak in gdbusauth
- 618663 Plug mem leaks in gdbus tests & examples
-
-* Updated translations:
- Spanish
-
-
-Overview of Changes from GLib 2.25.3 to GLib 2.25.4
-===================================================
-
-* GDBus D-Bus support has been merged. This provides an API
- to replace dbus-glib
-
-* GVariant no requires strings to be UTF-8. You can use byte
- arrays for non-UTF-8 strings.
-
-* GSettings allows to bind string properties to byte arrays
-
-* The schema compiler supports range restrictions
-
-* Bugs fixed:
- 618051 socket-server|client.c fail to compile under AIX...
- 616102 GSettings ignores <choice> and <range>
- 616720 Chunked quark allocation
- 616877 Several issues with g_socket_receive_message
- 616892 gio: Add a boxed type for GFileAttributeMatcher
- 616967 Add g_regex_get_compile_flags() and g_regex_get_match_flags()
- 617767 g_settings_[gs]et_strv() 'length' argument has missing docs...
- 617914 gtester-report: cope with binaries with no test cases
- 617937 output_stream_close vs output_stream_close_async semantics
- 615494 Connction timeouts produce partially invalid error messages
- 617823 glib-compile-schemas problems with an out of source build
- 617947 glib-mkenums: add @valuenum@ support
-
-* Translation updates:
- Galicaian
- Norwegian bokmål
- Shavian
- Spanish
-
-
-Overview of Changes from GLib 2.25.2 to GLib 2.25.3
-===================================================
-
-* New macro: G_GNUC_DEPRECATED_FOR, a variant of G_GNUC_DEPRECATED
- that lets you add replacement information (requires gcc 4.5)
-
-* Rename AM_GSETTINGS autoconf macro to GLIB_GSETTINGS
-
-* Rename gschema-compile utility to glib-compile-schemas
-
-* Add support for timeouts in GSocket
-
-* Bugs fixed:
- 589989 Compilation error on Solaris 9
- 616648 Change AM_GSETTINGS macro to GLIB_GSETTINGS
- 587898 I/O timeouts for GSocket
- 614541 Add G_TYPE_ERROR boxed type for GError
-
-
-Overview of Changes from GLib 2.25.0 to GLib 2.25.2
-===================================================
-
-* Include a 'gsettings' utility, for commandline access to GSettings
-
-* Install a AM_GSETTINGS autoconf macro similar to AM_GCONF
-
-* GSettings can bind the writability of a key explicitly
-
-* There is now a predefined boxed type for GError
-
-* Bugs fixed:
- 615379 g_new macros crash if sizeof(struct_type) == 0
- 616312 Add m4 rule equivalent to GCONF_SCHEMAS_INSTALL
- 616295 mapping bug for uint64
- 616216 glib compile from remote directory fails
- 615960 Fix size passed to connect() for abstract sockets
- 616432 Crash in gschema-compile
- 616331 gsettings-schema-convert uses imaginary types
- 616309 gsettings-schema-convert should output gettext-domain
- 616384 Add mention of GConfBridge in conversion docs
- 616311 gschema-compile outputs in current directory
- 616276 simplify gschema-compile test setup
- 616156 keys with unnecessary empty options arrays
- 616405 gsettings missing g_return_if_fail's
- 616245 Use G_DEFINE_INTERFACE macro
- 614541 Add G_TYPE_ERROR boxed type for GError
-
-* Updated translations:
- Catalan (Valencian)
- Galician
- Kannada
- Spanish
-
-
-Overview of Changes from GLib 2.24.0 to GLib 2.25.0
-===================================================
-
-* The GSettings framework has been merged. This provides the API to
- replace GConf. DConf will provide a backend implementation for it.
- GConf will also provide a backend implementation to ease the
- transition. We provide utilities to assist with schema conversion
- and data migration, as well as a porting guide.
-
-* Translation updates:
- Bengali
- Catalan
- Danish
- Gujarati
- Marathi
- Thai
- Traditional Chinese
-
-
-Overview of Changes from GLib 2.23.6 to GLib 2.24.0
-===================================================
-
-* Bug fixes:
- 613601 buglet in dup_close_on_exec_fd
- 584284 g_data_input_stream_read_until_async behaves confusingly
- 613748 Write errors in middle of copy cause hang
- 613923 splice_stream_with_progress: wrong error handling
- 613667 Typo in GObject documentation
- 613618 gvariant format string docs unclear
-
-* Translation updates:
- Basque
- Ukrainian
- Vietnamese
-
-
-Overview of Changes from GLib 2.23.5 to GLib 2.23.6
-===================================================
-
-* Class private data:
- - support for private data associated with a GTypeClass
-
-* GVariant merge is now complete:
- - loading functions and parser merged
-
-* Windows improvements:
- - socket fixes
- - various build improvements
- - removal of GCC/C99isms in favour of portable code
- - drop unmaintained Visual Studio 8 support
-
-* Minor API addition:
- - g_desktop_app_info_get_filename()
-
-* Bugs fixed:
- 521707 Class private data
- 612502 build fails on glib/tests/gvariant.c
- 612832 [GDesktopAppInfo] New function g_desktop_app_info_get_filename
- 612702 [PATCH] Fix GSocket-related crash on Windows
- 612736 Improve the documentation about single include
- 610858 gvariant test fails sometimes
- 612327 uninitialized variable
-
-* New translations:
- Afrikaans
- LowGerman
-
-* Updated translations:
- Czech
- Finnish
- Galician
- Greek
- Punjabi
- Romanian
- Serbian
-
-
-Overview of Changes from GLib 2.23.4 to GLib 2.23.5
-===================================================
-
-* New API addition: g_malloc_n() and friends used to implement an
- overflow-safe family of g_new() macros.
-
-* GVariant:
- - GVariantBuilder and GVariantIter are now merged.
- - The variable arguments API is now merged.
- - The parser will be in a future release.
-
-* GIO:
- - Remove GUtf8InputStream (which never appeared in a stable release)
- for now since it doesn't satisfy the needs of its main intended use
- case. We hope to reimplement this feature in a better form in a
- future release.
-
-* Bugs fixed:
- 609531 missing licence headers
- 612107 Missing G_FILE_ATTRIBUTE_TRASH_ORIG_PATH
- 611897 g_io_modules_scan_all_in_directory leaks
- 608196 Overflow-safe g_new family
- 611696 gio uses GetAddrInfo which requires special handing on windows 2k
- 605667 Don't use G_PARAM_SPEC_VALUE_TYPE when we know the pspec is valid
- 610860 test_g_file_open_readwrite fails if $HOME is unwritable
- 552912 glib-2.18 /live-g-file/test_copy_move failed when run as root
- 609813 Renaming a file discards file notes
-
-* Updated translations:
- Basque
- Brazilian Portuguese
- British English
- Bulgarian
- Catalan
- Danish
- Estonian
- French
- German
- Hungarian
- Italian
- Lithuanian
- Norwegian bokmål
- Portuguese
- Russian
- Slovenian
- Spanish
- Swedish
- Traditional Chinese
-
-
-Overview of Changes from GLib 2.23.3 to GLib 2.23.4
-===================================================
-
-* GVariant: The core of GVariant has been merged now, with some
- API still to follow.
-
-* GIO:
- - There is a new interface GFileDescriptorBased for file descriptor
- based IO. GLocalFile{Input,Output}Stream implement it
- - Use splice(2) to transfer data between file descriptors without
- extraneous copies
- - Add a way to request move events from file monitors
-
-* Bugs fixed:
- 609143 *result_uncertain is never assigned in g_content_type_guess
- 604086 Use splice(2) when doing local file copies
- 547890 No move events for GFileMonitorEvent?
- 568760 nautilus freezes due to a bug in garray.c:322
- 609962 Add info about the use of G_DEFINE_INTERFACE
- 609564 g_base64_encode_close docs should mention outbuf size...
- 610484 g_variant_equal bug
- 610131 libasyncns does not compile on Solaris 8
- 609530 missing single header include guards
-
-* Updated translations:
- Czech
- Estonian
- Galician
- German
- Korean
- Polish
- Slovenian
- Spanish
- Traditional Chinese
-
-
-Overview of Changes from GLib 2.23.2 to GLib 2.23.3
-===================================================
-
-* GLib now has a facility for locks that consume only one bit of
- storage inside an integer: g_bit_lock()
-
-* GVariant: The serializer has been merged, with more API to follow
-
-* Bugs fixed
- 548967 1 bit mutex lock
- 604967 2.22.3 libasyncns build fails on HP-UX 11.11
- 608602 G_VALUE_COLLECT_INIT variables shadow those in G_VALUE_COLLECT
- 608743 Crash in g_hostname_to_ascii visiting certain website in epiphany
- 599197 array ref and unref functions crash on NULL array.
- 608159 mem leak in g_io_modules_scan_all_in_directory
-
-* Translation updates
- Brazilian Portuguese
- Czech
- French
- Norwegian bokmål
- Slovenian
- Spanish
- Thai
-
-
-Overview of Changes from GLib 2.23.1 to GLib 2.23.2
-===================================================
-
-* We are now using gcc builtins for atomic operations when available
-
-* g_assert() grew the ability to store assertions in core dumps
-
-* GIO supports lazy loading of GIO modules, and there is a new
- gio-querymodule utility that goes along with this.
- Packagers will need to adapt to this.
-
-* Threading changes:
- - The requirements for g_thread_init() have been relaxed slightly,
- it can be called multiple times, and does not have to be the first
- call.
- - GObject now links to GThread and threads are enabled automatically
- when g_type_init() is called.
- - Thread-safety issues with boxed types in GObject have been fixed.
-
-* GObject:
- - Another bunch of performance work has landed
-
-* GVariant:
- - GVariantType has been merged, with the rest of the GVariant
- API to follow.
-
-* Bugs fixed:
- 568760 nautilus freezes due to a bug in garray.c:322
- 602417 Document lifecycles of GSimpleAsyncResult and friends
- 604824 crash in Epiphany: Selecting my Slashdot bo...
- 448888 don't init g_slice for always-malloc
- 531902 Use GCC atomic buildins for g_atomic*
- 554887 boxed type registration is not thread safe
- 586150 unresolved symbols when building glib 2.21.2 on OS X Tiger
- 589176 row gvalue transform array exponentially
- 594872 Support storing assertion messages into core dump
- 602240 Upgrade libasyncns to 0.8
- 603590 Speed up G_VALUE_COLLECT
- 604457 gutf8inputstream.c: increasing unknown size pointer
- 605686 GCharsetConverter doesn't flush
- 605733 g_memory_output_stream_new violates GObject standards
- 605883 g_object_new() processes varargs even when there are none
- 605977 invalid utf-8 conversion in g_local_file_get_parse_name(...
- 606775 Enable threads by default in gobject
-
-* Translation updates:
- Asturian
- Basque
- Bengali
- Bulgarian
- Estonian
- Norwegian bokmål
- Spanish
- Thai
- Ukrainian
-
-
-Overview of Changes from GLib 2.23.0 to GLib 2.23.1
-===================================================
-
-* GObject performance work has landed:
- - Construction of simple objects is much faster
- - Interface lookup is lock-free and constant-time now
- - Reduced locking overhead when dealing with types
-
-* GType now has a G_DEFINE_INTERFACE convenience macro
-
-* GIO gained GUtf8InputStream, an input stream that
- performs utf-8 validation
-
-* GLib now has byte-swap macros for gsize and gssize
-
-* Bugs fixed:
-557151 Determining the newly_constructed boolean in gobject.c...
-557100 Performance improvements for GObjectClasses that don't...
-501166 Warning message says IA__g_type_init instead of g_type_init
-585375 Performance and Contention problems with g_type_class_ref...
-587892 Race in GType when instantiating the same class for the...
-603270 Input Stream validating utf8
-603476 gioenums.h:62: error: comma at end of enumerator list
-603540 g_time_val_from_iso8601 uses uninitialised variable
-603982 Stack overflow when reading file async with filter
-604645 G_DEFINE_INTERFACE_* documentation is not generated
-604875 Use of sa_len conflicts with system header
-320482 provide G_DEFINE_TYPE like macros for interfaces
-
-* Updated translations:
- Estonian
- Hebrew
- Norwegian bokmål
- Vietnamese
- Welsh
-
-
-Overview of Changes from GLib 2.22.x to GLib 2.23.0
-===================================================
-
-* GIO:
- - GConverter: a generic interface for stateful conversions of data,
- suitable for charset conversion, compression, decompression, regexp
- replacement. Concrete implementations are GCharsetConverter,
- GZlibCompressor and GZlibDecompressor. GConverterInputStream,
- GConverterOutputStream are stream implementations that convert data
- while loading or saving it.
- - GMounts can now have a 'default location': a path that reflects
- the main entry point for the user (e.g. the home directory).
- - As a consequence of the compression support, GIO depends on zlib now.
-
-* GObject:
- - G_IMPLEMENT_INTERFACE_DYNAMIC: a convenience macro for adding
- interfaces to dynamic types.
-
-* GModule:
- - The -pthread flag has been added to all gmodule .pc files, because
- it is not generally permissible to load modules that are linked
- against libpthread if the program has not been compiled with threading
- support.
-
-* Bugs fixed:
- 601637 GUnixFDMessage should contain a GUnixFDList
- 585566 GSocketListener API issues
- 572252 Bug in g_file_test() function.
- 600550 g_app_info_create_from_commandline doesn't treat arguments properly
- 541236 not detecting exact content type
- 350200 [PATCH] GTypeModule derived class unref does not unload plugin
- 589631 Please enclose literal values with double quotes
- 577711 cross compile check for g++ broken
- 600620 Support X-GNOME-FullName in GAppInfo
- 598899 GWin32DirectoryMonitor is broken
- 593809 Nautilus does not restore the position of the icons on the desktop...
- 563627 g_get_prgname() threadsafety
- 600141 Add -pthread to gmodule pkg-config
- 593856 file and directory monitors don't work when glib is compiled...
- 324930 Nautilus should disallow copying of symlink to FAT drive early
- 587300 Deadlock when calling g_cancellable_disconnect in a...
- 595138 GFile not robust with invalid input
- 591216 Warning building resolver.o
- 590016 Does not compile under MinGW32 + Wine
- 591214 Warnings building gcancellable.o
- 561998 Have specific entry points (paths) for mounts...
- 508157 Add G_IMPLEMENT_INTERFACE_DYNAMIC
- 535159 g_file_has_parent
-
-* Updated translations:
- Brazilian Portuguese
- Catalan
- Estonian
- Galician
- Norwegian bokmål
- Shavian
- Slovenian
- Spanish
- Swedish
-
-
-Overview of Changes from GLib 2.22.1 to GLib 2.22.2
-===================================================
-
-* GIO:
- - Support case-sensitive globs in the shared mime database,
- including support for the newer cache format that allows these.
- Case-sensitive globs have been introduced in shared-mime-info
- version 0.70
-
-* GObject:
- - Speed up creation of simple objects
-
-* Bugs fixed:
- 597194 Typo in _G_TYPE_CVH macro
-
-* Updated translations:
- Russian
-
-
-Overview of Changes from GLib 2.22.0 to GLib 2.22.1
-===================================================
-
-* Bugs fixed:
- 596064 Test file marked for translation
- 595972 possibly invalid search in mime_info_cache_dir_add_...
- 596561 C99 style of declaration of variable in gmessages.c
- 596314 g_utf16_to_utf8 returns an invalid UTF8 string
- 596748 g_async_result_get_source_object returns a new ref
- 593809 Nautilus does not restore the position of the icons...
- 593775 uses inotify_init1 unconditionally
-
-* Updated translations:
- Bengali
- Hebrew
-
-
-Overview of Changes from GLib 2.21.6 to GLib 2.22.0
-===================================================
-
-* Add gdb python macros to make gobject debugging more pleasant
-
-* Bugs fixed:
- 579050 Allow making selected critical and warning messages non-fatal
- 594759 g_socket_send_message fails due to invalid sendmsg params
- 593941 GNetworkAddress skipping addresses when enumerating
- 594597 Fix build with srcdir != builddir
- 595619 Include gdb pretty printers
-
-* Changes that might affect bindings:
- - The error parameter of g_simple_async_result_set_from_error has been
- made const.
-
-* Updated translations:
- Assamese
- Bengali India
- British English
- Bulgarian
- Catalan
- Czech
- Danish
- Finnish
- Galician
- Greek
- Gujarati
- Hindi
- Japanese
- Kannada
- Malayalam
- Marathi
- Norwegian bokmål
- Oriya
- Polish
- Punjabi
- Romanian
- Serbian
- Simplified Chinese
- Slovenian
- Spanish
- Tamil
- Telugu
- Thai
- Traditional Chinese
- Ukrainian
- Vietnamese
-
-
-Overview of Changes from GLib 2.21.5 to GLib 2.21.6
-===================================================
-
-* Minor API additions:
- g_mkstemp_full is a variant of g_mkstemp that allows to specify flags
- and permissions
-
-* Bugs fixed:
- 593232 g_rand_new: read no more than requested from /dev/urandom
- 591995 use saved errno
- 589491 g_time_val_from_iso8601 doesn't handle some cases
- 593406 Permissions set to 777 after copying via Nautilus
- 594034 Add g_mkstemp_full()
-
-* Updated translations:
- Assamese
- Basque
- Brazilian Portuguese
- Czech
- Estonian
- French
- German
- Hungarian
- Italian
- Kannada
- Malayalam
- Marathi
- Norwegian bokmål
- Oriya
- Portuguese
- Swedish
- Tamil
- Turkish
-
-
-Overview of Changes from GLib 2.21.4 to GLib 2.21.5
-===================================================
-
-* A performance problem with trashing of many files has been fixed
-
-* GResolver now invalidates the libc resolv.conf cache as needed
-
-* Minor api additions:
- - g_cancellable_make_pollfd returns a boolean now. And there is a
- new function g_cancellable_release_fd that can be used to released
- the resources used by a GCancellable.
-
-* Bugs fixed:
- 589988 Compilation error on Solaris 9 (missing stdint.h)
- 588901 gtcpconnection.c won't compile
- 584246 GResolver needs to call res_init() when network state changes
- 591714 Figure out failure handling for g_cancellable_make_pollfd()
- 591532 redundent '/' returned from g_file_resolve_relative_path
- 591378 Use MSG_NOSIGNAL in GSocket if it's available
- 589649 API documentation migration for Base64 Encoding
- 591840 configure fails with autoconf 2.64
-
-* Updated translations:
- Basque
- Brazilian Portuguese
- Bulgarian
- Danish
- Estonian
- Finnish
- Galician
- Gujarati
- Hndi
- Irish
- Japanese
- Korean
- Norwegian bokmål
- Polish
- Portuguese
- Punjabi
- Spanish
- Swedish
- Telugu
- Traditional Chinese
- Thai
-
-
-Overview of Changes from GLib 2.21.3 to GLib 2.21.4
-===================================================
-
-* GTree is now refcounted
-
-* Bugs fixed:
- 587938 Undocumented limitation for g_str_equal
- 587773 refcounts for GTree
-
-* Updated translations:
- French
- Hebrew
- Norwegian bokmål
- Spanish
- Swedish
- Traditional Chinese
- Ukrainian
-
-
-Overview of Changes from GLib 2.21.2 to GLib 2.21.3
-===================================================
-
-* GMappedFile is refcounted now
-
-* Mainloop: It is now possible to set per-thread default contexts,
- with g_main_context_push_thread_default.
-
-* glib-mkenums supports a @basename@ substitution, in addition
- to @filename@.
-
-* GIO:
- - Vfs implementations can support storing of per-file metadata.
- - GCancellable can now be subclassed.
- - Unmount and eject methods now optionally allow interaction, via
- variants that take a GMountOperation object.
-
-* Bugs fixed:
- 556706 Inconsistent help arguments -h, -?
- 579449 FileChoosers no longer work if an idle handler is active
- 579933 mainloop FD_CLOEXEC has a race condition
- 579984 alternate GMainContext support
- 585937 gio/gsocket.c (glib 2.21.2) does not compile (Windows/mingw)
- 586675 Runtime library location
- 586797 Add GCancellables to GSocket ops
- 586868 g_filename_complete_get_completions doesn't always return...
- 587415 g_resolver_lookup_by_name_finish returns a freed list
- 587434 regression tests fail, at least on x86_64
- 586928 Avoid g++ warning in g_error()
-
-* Updated translations:
- Estonian
- Hebrew
-
-
-Overview of Changes from GLib 2.21.1 to GLib 2.21.2
-===================================================
-
-* GIO:
- - g_socket_speaks_ipv4 is a new function to check if a socket can
- speak IPv4.
- - g_socket_listener_add_address gained a new effective_address out
- parameter.
- - GIO now returns special icons for XDG user directories, by the
- name folder-music, folder-documents, etc.
- - GIO gained support for starting/stopping of drives, which can be used
- in connection with external hard disk enclosures, disk arrays, iSCSI
- devices, etc. See g_file_start/stop_mountable.
-
-* GLib:
- - g_reload_user_special_dirs_cache is a new function to force GLib to
- reload the XDG user directory mapping from disk.
-
-* Bug fixes:
- 584574 glib compile failure on Mac OS X with gunixresolver.c and...
- 585566 GSocketListener API issues
- 584255 Incorrect freeing of thread pool in GThreadedSocketService
- 585088 g_string_chunk_insert_len stops at nul bytes
- 585360 Monitor fontconfig configuration files using gio causes m...
- 580103 Terminal starts on Display :0.0 when started on :0.1 in D...
- 580301 network: a few issues on old darwin
- 583398 SRV weight sorting is incorrect
- 584176 build fixes on FreeBSD
- 585189 g_cancellable_reset() must be called in same thread as g_...
- 585280 compilation dies on gio/gsocket.c, needs sys/uio.h to con...
- 585281 gio/gunixfdmessage.c needs sys/types.h for platforms that...
- 585478 don't leak the inotify fd
- 585575 g_socket_listener_add_inet_port() doesn't do the right thing
- 585599 g_socket_listener_add_socket() consumes the socket
- 585676 GEmblem doesn't reference its 'icon' if that is set as a ...
- 585717 "bytes" nautilus translation to french is not shown in th...
- 541276 XDG directories should have their own icons
- 585726 Grammatical error in GList documentation
- 585520 Wrong warning option in documentation
- 585673 GNOME Goal: Remove deprecated glib symbols
- 585591 Starting/stopping drives
-
-* Updated translations:
- Bengali India
- Norwegian bokmål
-
-
-Overview of Changes from GLib 2.21.0 to GLib 2.21.1
-===================================================
-
-* GIO:
- - Support for network IO has been added, including a low-level
- socket API and a high-level API for network connections and
- services.
- - Support for read-write access with GIOStream and its subclasses.
- - GMount gained a pre-unmount signal.
-
-* Bug fixes:
- 576104Implement GMount::pre-unmount
- 578769 implement GWinHttpFileInputStream::close_fn
- 582856 gsocket.c doesn't compile on Solaris
- 569375 g[u]intptr undocumented
- 573246 [FIX] g_desktop_app_info_dup() can access NULL pointer
- 575013 g_cancellable_push_current() does not allow NULL
- 577884 live-g-file.c:461: error: format ‘%d’ expects type ...
- 578499 g_output_stream_splice and stream closing with gnio strea...
- 579558 Application employing gvfs crashes with only libgvfscommo...
- 583001 SIGPIPE (grr!)
- 583061 Please add convenience function to connect to machines by...
- 583198 typo in error message
- 583206 use g_set_error_literal where appropriate
- 583229 void function g_async_initable_init_async returns value
- 583324 locking problem in g_main_context_iterate()
- 583408 void function g_socket_control_message_serialize returns ...
- 578786 wrong and confusing error message
- 583205 g_inet_address_to_bytes has no length outparam
- 583196 mem leak in keyfile test
- 583663 GSocketType enum ends with a comma
- 569024 Make g_error_new_valist public
- 569376 missing G_G[U]INTPTR_FORMAT
- 580347 off-by-1 bug in GWinHttpFile
-
-* Updated translations:
- Oriya
- Spanish
- Valencian-Catalan
-
-
-Overview of Changes from GLib 2.20.x to GLib 2.21.0
-===================================================
-
-* GIO:
- - New helper functions g_cancellable_connect/disconnect to avoid
- race conditions when connecting to the "cancelled" signal on
- GCancellable.
- - New types and methods for dealing with IPv4 and IPv6 addresses (and
- UNIX domain socket addresses under UNIX). This does not include code
- for actual socket I/O.
- - GResolver provides asynchronous and cancellable APIs for resolving
- hostnames, reverse lookup of IP addresses and resolving SRV records.
-
-* Glib now provides hash and comparison functions for int64 and double
- types, suitable for use with GHashTable.
-
-* GArray, GPtrArray and GByteArray can be ref counted now, and have
- boxed types.
-
-* Bugs fixed:
- 572844 Helper for GCancellable::cancelled connect/disconnect
- 578363 goption docs should be improved
- 548466 async/cancellable DNS resolver
- 579830 param spec strings should use P_()
- 579862 requesting xattr::foo ends up calling getxattr(..., user...
- 580453 Hash and equal functions for gint64 and gdouble
- 580450 Reference counting and boxed types for arrays
- 580194 gresolver doesn't build on Solaris
- 580301 network: a few issues on old darwin
- 580299 network: include sys/types.h before sys/socket.h to insur...
- 572508 gmarkup speedup
- 580546 g_strtoull() referenced in documentation...
- 580656 g_key_file_set_string_list erroneously asserts list != NULL
- 579272 leaks in g_simple_async_result_set_op_res_gpointer
-
-
-* Updated translations:
- Catalan (ca)
- Pashto (ps)
- Spanish (es)
-
-
-Overview of Changes from GLib 2.20.0 to GLib 2.20.1
-===================================================
-
-* Bug fixes:
- 575555 Use fsync() when replacing files to avoid data loss on
- 575708 runaway inotify madness
- 575270 GVolumeMonitor::mount-pre-unmount not being emitted
- 577128 glib make check Failed to execute child process...
- 573673 Always show "backup" directories
- 578369 g_time_val_from_iso8601() parses timezones incorrectly
- 578002 Fix a small typo in GFile docs
- 578017 G_DEFINE_TYPE_EXTENDED docs
-
-* Updated translations:
- Arabic
- Assamese
- Basque
- Bularian
- Brazilian Portuguese
- British English
- Catalan
- Danish
- French
- Galician
- German
- Greek
- Hungarian
- Italian
- Japanese
- Kannada
- Lithuanian
- Malayalam
- Norwegian bokmål
- Oriya
- Polish
- Punjabi
- Russian
- Simplified Chinese
- Slovenian
- Spanish
- Swedish
- Tamil
-
-
-Overview of Changes from GLib 2.19.9 to GLib 2.20.0
-===================================================
-
-* Base64 support: Avoid integer overflows. CVE-2008-4316
-
-* Bugs fixed:
- 574019 GChecksum: document and guarantee hex characters in lower case
- 573454 Unable copy/move files to directories symlinked to gvfs share
- 561172 gnome-open fails on local URIs with anchors
- 573970 crash in gunixvolumemonitor:update_mounts when unmounting
- 573843 g_get_current_dir returns non-absolute path
-
-* Updated translations:
- Assamese (as)
- Bengali (bn_IN)
- Czech (cs)
- Hindi (hi)
- Italian (it)
- Japanese (ja)
- Lithuanian (lt)
- Malayalam (ml)
- Marathi (mr)
- Oriya (or)
- Polish (pl)
- Romanian (ro)
- Telugu (te)
-
-
-Overview of Changes from GLib 2.19.8 to GLib 2.19.9
-===================================================
-
-* GMarkup:
- - Considerable speedup
-
-* GIO
- - Add G_FILE_CREATE_REPLACE_DESTINATION flag to allow replacing
- the destination of a copying operation as if it did not exit before.
- - Be more careful when classifying files as desktop files
- - Support desktop file key X-GIO-NoFuse which disables the use
- of fuse pathnames for %u and %U arguments
-
-* Bugs fixed:
- 572672 glib/gthread.c: argument is different type
- 572464 Doc for g_file_get_contents
- 572151 “it's” and “its” confused in docs and comments
- 570501 g_win32_get_system_data_dirs uses invalid conversion...
- 167569 g_string_append_printf crashes on win32 when used...
- 572508 gmarkup speedup
- 560564 Replacing a symlink with its linked file truncates...
- 549298 impossible to copy files with p (pipe) flag
- 543183 Clarify docs for g_file_has_prefix
- 540461 g_memory_output_stream_get_data_size() doesn't behave...
- 573462 GEmblemedIcon leak
- 573421 Clarify message format in GMountOperation
- 573658 Deadlock in giomodule.c
- 556706 Inconsistent help arguments -h, -?
- 573527 Wrong shell to run config.status in Makefile.in.in
- 573128 A couple of typos in GObject documentation
-
-* Updated translations:
- Catalan (ca)
- British English (en_GB)
- Spanish (es)
- Basque (eu)
- Finnish (fi)
- French (fr)
- Gujarati (gu)
- Hebrew (he)
- Hungarian (hu)
- Korean (ko)
- Maithili (mai)
- Norwegian bokmål (nb)
- Dutch (nl)
- Portugese (pt)
- Swedish (sv)
- Thai (th)
- Traditional Chinese (zh_HK)
- Traditional Chinese (zh_TW)
-
-
-Overview of Changes from GLib 2.19.7 to GLib 2.19.8
-===================================================
-
-* GIO: Fix missing exports of new API
-
-* Fix strict aliasing warnings and violations to make Glib work
- with gcc 4.4
-
-
-Overview of Changes from GLib 2.19.6 to GLib 2.19.7
-===================================================
-
-* GIO
- - GFile gained an attribute for the actual file size in bytes
- - GMountOperation gained an "aborted' signal that allows to abort
- a mount operation from the backend side
-
-* Bugs fixed:
- 523742 Use noinst for non-installable libraries
- 566747 URIs opened with firefox %u load as local files
- 541225 Can't compile gio on AIX duplicate case value in gioerror.c
- 571598 GAsyncResult with NULL gobject
- 505042 add file attribute for actually used file size in bytes
-
-* Updates translations:
- Basque (eu)
- Gujarati (gu)
- Italian (it)
- Japanese (ja)
- Norwegian bokmål (nb)
- Dutch (nl)
- Portugese (pt)
- Thai (th)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.19.5 to GLib 2.19.6
-===================================================
-
-* New format macro to print goffset data: G_OFFSET_FORMAT
-
-* GIO:
- - Add a GFilter{Input,Output}Stream::close-base-stream properties which
- determine whether the base stream will be closed when the filter stream
- is finalized.
- - g_data_input_stream_read_line and ..._read_until have asynchronous
- variants now.
-
-* Bugs fixed:
- 568294 A wrong reference in the description of g_bookmark_file_...
- 563141 RFE: define G_OFFSET_FORMAT
- 569105 g_time_val_to_iso8601() assumes time_t==long
- 568394 dropping the last reference to a stream filter closes...
- 568741 g_buffered_input_stream_fill_async doesn't work
- 568723 g_buffered_input_stream_fill_async doesn't take count == -1
- 568575 _async functions for GDataInputStream
-
-* Updated translations:
- Bulgarian (bg)
- Finnish (fi)
- Hungarian (hu)
- Oriya (or)
- Swedish (sv)
- Traditional Chinese (zh_HK)
- Traditional Chinese (zy_TW)
-
-
-Overview of Changes from GLib 2.19.4 to GLib 2.19.5
-===================================================
-
-* Update included PCRE to 7.8
-
-* g_base64_decode_inplace: New function to do base64 decoding in place
-
-* Bugs fixed:
- 567138 get_package_directory_from_module() does not free ...
- 566569 gregex docs clarification
- 566573 g_match_info_fetch_pos docs
- 564728 Add function to decode base64 encoded data in place
- 567838 G_STRUCT_OFFSETOF fails to compile under icc 9.1
- 567977 textdomain() macro should not return NULL ...
- 512779 --disable-regex breaks compilation
- 566770 error code 0 for Too many open files is useless
- 565484 g_content_type_guess passes non-UTF8 text to XDG ...
-
-* Updated translations:
- Catalan (ca)
- Spanish (es)
- Italian (it)
- Swedish (sv)
-
-
-Overview of Changes from GLib 2.19.3 to GLib 2.19.4
-===================================================
-
-* GIO:
- - Use O_NOATIME when sniffing mimetypes
- - Add a convenience method to check if a GSimpleAsyncResult
- is valid
-
-* Bugs fixed:
- 560676 function access for g_threads_supported
- 565905 There is no g_context_group_set_translation_domain
- 564210 SUN Studio 12 has supported visibility attribute
- 565136 GObject's "notify" signal parameters are wrong in gtk-doc
- 565831 error in interface creation sample
- 566348 g_file_open_tmp uses the wrong g_mkstemp on win32
- 566064 Add NOATIME flag to query_info_flags
- 566170 g_async_result_verify_source_object
-
-* Updated translations:
- Spanish (es)
- Norwegian bokmål (nb)
- Brazilian Portugese (pt_BR)
- Simplified Chinese (zh_CN)
-
-
-Overview of Changes from GLib 2.19.1 to GLib 2.19.3
-===================================================
-
-* Bugs fixed:
- 508021 Add support for the CRIS and CRISv32 architectures
- 526320 should not list mounts that the user doesn't have permission to use
- 558458 Cannot build gio tests on Solaris using SUN cc
- 555465 GUnix{Input,Output}Stream lacks fd/close_fd_at_close property
- 558298 Hide ecryptfs mounts
- 515777 incorrect date&time on copy
- 562452 Ensure we return G_IO_ERROR_CANCELLED if cancelling
- g_simple_async_result_run_in_thread
- 473150 g_type_module_use inconsistently increases the use
- counter in case of error
- 563150 G_GU?INT*_MODIFIER/FORMAT docs
- 563156 Document printing and scanning gunichar values
-
-* Updated translations:
- Hebrew (he)
- Italian (it)
-
-
-Overview of Changes from GLib 2.19.0 to GLib 2.19.1
-===================================================
-
-* GIO:
- - g_icon_to_string, g_icon_new_for_string: GIcon serialization support
- - G_FILE_ATTRIBUTE_PREVIEW_ICON: new file attribute for preview images
- - g_app_info_get_commandline: new function to get the full commandline
- - g_mount_shadow, g_mount_unshadow, g_mount_is_shadowed: New functions
- to 'shadow' mounts (i.e. hide them from the UI when they already
- have a different representation, like a bookmark)
-
-* Bugs fixed:
- 556186 gpoll.h breaks gmain.h inclusion
- 557087 mem leak in g_content_types_get_registered
- 556921 gpoll.h breaks hal compilation
- 557210 g_compute_checksum_for_* asserts with less than 2 bytes
- 558381 Add support for compile time assertions
- 558185 'parent' variable in g_local_file_get_child_for_display_name()
- hits g_object_unref(NULL) assertion
- 558513 g_warn_if_fail FIXME in gtestutils
- 558672 NULL key lookup using g_hash_table_lookup_extended()
- 555740 gicon serialization
- 557182 preview functionality
- 528320 Incorrect icons displayed for files with custom mimetype icons
- 556910 Memory leak: sub
- 557592 Missing include in gwinhttpfile.c
- 556415 Crash on Windows 2000 in g_winhttp_vfs_init()
- 555935 Clarify the mechanism of overwriting properties
- 552776 ac_cv_func_posix_getgrgid_r not mentioned
- 559448 GObject Reference Manual (typo)
- 561212 GFileReadMoreCallback API doc refers to non-existant function
- 560569 gkeyfile doesn't use the set list_separator in some cases
- 560568 gkeyfile docs buglet
- 559413 g_option_group_set_error_hook docs buglet
- 562378 callback return value not respected for callback option
- with no arg
- 559110 Do not include libintl.h after glibintl.h
- 557603 carbon check output misplaced
- 562544 g_key_file_get_string and g_key_file_get_value
- documentation does not explain the difference
- 547264 Missing "no flags" flag
- 562638 GDebugKey key member should be const
- 562639 g_parse_debug_flags() parsing "help"
- 562549 g_byte_array_free should tell how free data
- 559452 GObject Reference Manual (typo)
- 559462 GObject Reference Manual (typo)
- 559517 GObject Reference Manual (typo)
- 562538 GObject interface tutorial shouldn't finalise with
- "Please forget everything"
- 561352 Leak of icon description
- 561375 Leaks mountpoint description
- 561807 inotify_sub.c: dup_dirname() fails to remove trailing '/'
- 562393 g_buffered_input_stream_read_byte broken if data available
- 541715 win32 : patch for warnings and signature problems in recent code
- 547481 g_data_input_stream_read_line behaves not as stated in the docs
- 548163 Nautilus displays wrong error message for too long file names
- 559633 gtk_image_new_from_gicon does not always work for .desktop files
- 555486 – No way to recover command line from GAppInfo
-
-* Translation updates:
- Spanish (es)
- Ukrainian (uk)
-
-
-Overview of Changes from GLib 2.18.1 to GLib 2.19.0
-===================================================
-
-* Rewrite GHashTable to use open addressing with quadratic probing instead
- of chaining. This has the potential to reduce memory fragmentation
- significantly, while being slightly faster due to better locality and
- no need to call alloc/free functions for nodes. Benchmarks suggest it
- also uses less memory overall.
-
-* Make g_poll available as public api
-
-* New macros g_assert_error and g_assert_no_error to assert
- that a GError is set or unset
-
-* g_cancellable_make_pollfd: New method to make a GPollFD for a cancellable
-
-* g_app_info_can_delete, g_app_info_delete, g_app_info_reset_type_associations:
- New functions to clean up app infos and content types
-
-* When launching applications, always pass fuse file:// uris when possible,
- and let gio convert such uris back to gio uris.
-
-* Bugs fixed:
- 505361 gunixinputstream.c assumes poll() available
- 509446 portable blocking gio cancellation
- 553820 gpoll.c: undeclared identifier
- 553724 python interpretter path not patched in correctly
- 553857 gbacktrace.h requires signal.h
- 553447 g_assert_no_error()
- 554092 glib doesn't return G_FILE_ERROR_NOENT et al on OS X
- 528670 Always pass file:/// uri's in GAppLaunchContext
- 555224 Improve g_format_size_for_display doc
- 555309 giochannel breaks on error
- 554790 g_convert() misbehaves with winiconv versions
- 555314 mem leak in gmarkup
- 555313 GFileAttribute boxed type get_type function should...
- 552861 glib-2.0.m4 calls system(3) without storing its result
- 554557 Patch to fix gcc warnings about missing format specifiers
- 552107 Small libtool fixes
- 551355 Make glib build with libtool 2.2
- 555311 format not a string literal and no format arguments
- 556101 static mutex yields warnings with g++
- 556186 gpoll.h breaks gmain.h inclusion
- 526456 Open addressing in GHashTable
- 553426 cancellable clarifications
- 545350 GAppInfo deletion
- 545351 Reset associations for content type
- 552168 volume's mount not mounted after g_volume_mount_finish
- 554970 segfault when update-desktop-database is not available...
- 554745 GFileAttributeInfoList should be boxed
- 555121 Improved build-time handling of gio module-dir
- 555711 Wrong fallback order of mimetype icons
- 555331 Deprecate adoption of mounts
- 556335 make check fails in abicheck.sh
- 556334 Warning when building without selinux support
- 556422 g_file_enumerator_next_file: unclear...
-
-* Updated translations:
- Arabic (ar)
- Danish (da)
- Polish (pl)
- Brazilian Portugese (pt_BR)
- Romanian (ro)
- Russian (ru)
-
-
-Overview of Changes from GLib 2.18.0 to GLib 2.18.1
-===================================================
-
-* Bugs fixed:
- 550433 g_test_init doesn't recognize --help
- 523463 Core dump in gmain.c:2482:IA__g_main_context_check
- 551228 G_STRFUNC on recent Sun compiler should be expanded...
- 551410 gtestutils.c: using printf without prototype
- 551731 g_date_set_time[_t] docs should mention what timezone
- 548321 <string.h> is not included in gi18n-lib.h
- 551149 xdgmime mem leak
- 550647 synchronous pipe I/O when reading mount reply
- 551887 Docs for g_desktop_app_info_new_from_filename aren't...
- 551681 g_content_type_guess() too naive with filenames
- 552352 g_app_info_launch doesn't work if "Path" key...
- 551408 gmodule.def generated to builddir...
- 552359 g_file_info_get_icon should return GThemedIcon, and...
-
-* Updated translations:
- Arabic (ar)
- Bengali India (bn_IN)
- British English (en_GB)
- Hindi (hi)
- Croatian (hr)
- Korean (ko)
- Oriya (or)
- Turkish (tr)
- Telugu (te)
-
-
-Overview of Changes from GLib 2.17.7 to GLib 2.18.0
-===================================================
-
-* Win32:
- - rework the g_poll() implementation to match poll() semantics more closely
-
-* Bugs fixed:
- 324234 Using g_io_add_watch_full() to wait for connect() to return...
- 548278 Async GETs connections are always terminated unexpectedly...
- 500246 Bug fixes for giowin32
- 523939 Example program for GValue
- 550096 GBookmarkFile parser is not forward compatible
- 550040 Move GString, rand and printf tests to the unit test framework
- 550104 trivial documentation fix for g_get_home_dir
- 548988 g_file_replace fails on Windows when the target file exists
- 550059 Wrong docs for g_emblemed_icon_add_emblem
- 548800 Missing a g_object_get_type function
- 550056 Missing documentation for g_emblemed_icon_get_emblems
-
-* Updated translations:
- Bulgarian (bg)
- Czech (cs)
- German (de)
- Estonian (et)
- Basque (eu)
- French (fr)
- Hebrew (he)
- Hungarian (hu)
- Italian (it)
- Japanese (ja)
- Lithuanian (lt)
- Maithili (mai)
- Dutch (nl)
- Swedish (sv)
- Thai (th)
- Ukrainian (uk)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.17.6 to GLib 2.17.7
-===================================================
-
-* More fixes for 64-bit Windows
-
-* GIO
- - Add a vfs implementation for HTTP and HTTPS URIs on Windows
-
-* Bugs fixed:
- 546329 API docs for g_utf8_normalize() are incorrect
- 546876 Modify GMarkup parser to accept &#x1; .. &#x1f;
- 547200 g_utf8_find_next_char() issues
- 547637 unconditional #include of sys/statfs.h in configure
- 547337 G_DISABLE_DEPRECATED breaks tests build
- 547832 gtk+-2.12.11 fails to build - AC_PROG_MMAP too strict
- 502498 Test framework assertion failures should follow gcc
- 546371 Improve docs re g_file_monitor
- 546483 GThemedIcon:use-default-fallbacks is not readable without...
- 546132 GFileIcon is bindings-unfriendly
- 542156 zfs mount in home directory shown on nautilus desktop
- 535124 umask 002 not being applied for new directories...
- 547080 g_file_copy leaks expected errors
- 546582 Callbacks from GFileMonitor present a GFile...
- 547262 Missing link in the docs
-
-* Updated translations:
- Arabic (ar)
- Catalan (ca)
- Spanish (es)
- Basque (eu)
- Finnish (fi)
- Galician (gl)
- Hebrew (he)
- Marathi (mr)
- Norwegian bokmål (nb)
- Portugese (pt)
- Brazilian Portugese (pt_BR)
- Swedish (sv)
- Thai (th)
-
-
-Overview of Changes from GLib 2.17.4 to GLib 2.17.6
-===================================================
-
-* Fix problems on 64-bit Windows
-
-* g_markup_context_get_user_data: New function to access
- the user_data outside of callbacks
-
-* GIO
- - g_mount_guess_content_type_sync: synchronous version of
- g_mount_guess_content_type
- - GEmblem: A GIcon implementation that adds emblem-related
- metadata to icons
- - GEmblemedIcon: A GIcon implementation that can add emblems
- to icons
-
-* Bugs fixed:
- 544088 option_test_LDADD is left in tests/Makefile.am
- 544465 gmarkup makes it hard to use pre-rolled parsers
- 545485 Implicit declaration of utime()
- 545798 "Since: 2.18" mark is missing in g_set_error_literal...
- 544140 fam-helper 64-bit issue
- 529694 SELinux context setting support
- 545157 wrong/no list of "open with" applications for .cc...
- 545203 gfile.c: argument is different type
- 545457 gdmsetup crashed with SIGSEGV in g_unix_mount_guess...
- 544177 Fix trivial cut and paste error in documentation
- 545395 Language tweak for g_value_set_string* docs
- 541036 Gnumeric crashes when trying to open Desktop...
- 546079 leak in xdgmime
- 545395 Language tweak for g_value_set_string* docs
- 546017 Don't copy attributes when copying a symlink
-
-* Updated translations:
- Arabic (ar)
- Estonian (et)
- Galician (gl)
- Italian (it)
- Japanese (ja)
- Korean (ko)
- Norwegian bokmål (nb)
- Pashto (ps)
- Portugese (pt)
-
-
-Overview of Changes from GLib 2.17.3 to GLib 2.17.4
-===================================================
-
-* GIO:
- - New API to handle content types: g_mount_guess_content_type,
- g_content_type_guess_for_tree.
- - Export the eject-button signal on the volume monitor class
- - New API to enable out-of-process volume monitors:
- g_volume_get_activation_root
-
-* GObject:
- - New API to handle signals without slots in the class structure:
- g_signal_new_class_handler, g_signal_override_class_handler
-
-* Internationalization:
- - Add an NC_ macro that is a no-op equivalent of C_
-
-* GMarkup:
- - Add two new functions g_markup_parse_context_push,
- g_markup_parse_context_pop to support "subparsers"
-
-* Bugs fixed:
- 541208 Functions to easily install and use signals without...
- 541507 Ambiguous description of assigned characters in the...
- 543040 async reading on dummy file will crash on GIO_USE_VFS=local
- 543560 enable gio-FEN back-end warnings on Solaris will crash...
- 528317 GRegex does not allow recursion limit
- 337518 GMarkup: Subparser support
- 541794 drive-eject-button signal
- 541793 activation root for volumes
- 467707 test_iconv_state() in tests/convert-test.c fails on AIX 5.3
- 428048 2 of 51 tests fail on Solaris
- 542332 small fix for error message in GMarkup
- 482413 get_contents_stdio -- overflow and memory corruption
- 406120 g_ascii_strtod
- 334234 "printf" format error
- 536996 Missing noop i18n macro equivalent to C_
- 540616 mem leak in filechooser button
- 539229 gobject-query calls itself query
- 521589 [RFC] gobject documentation should mention Vala
- 543168 Description of G_SLICE=debug-blocks discourages its use
- 543220 Case collision on gio-extension-points.html
- 530759 update the gobject tutorial to the XXI century
- 535223 gbookmark file inefficiency ...
- 543504 crash in Epiphany Web Browser: Opening local file
-
-* Updated translation:
- German (de)
- Estonian (et)
- Pashto (ps)
- Albanian (sq)
- Thai (th)
- Traditional Chinese (zh_HK)
- Traditional Chinese (zh_TW)
-
-
-Overview of Changes from GLib 2.17.1 to GLib 2.17.3
-===================================================
-
-* PCRE
- - fix for CVE-2008-2371
-
-* Bugs fixed:
- 538119 glib's mainloop leaks a pipe to sub-processes
- 537635 Corrections and improvements to g_time_val_{to,from}_iso8601
- 539067 The document g_io_channel_win32_new_fd() says...
- 535949 annotate g_strip_context and g_dpgettext with G_GNUC_FORMAT
- 539123 annotate g_d[n]gettext with G_GNUC_FORMAT
- 539074 Cannot get exit status with g_spawn_command_line_sync
- 316221 G_LOCK warns about breaking strict-aliasing rules
- 539770 migrate gstrfunc unit tests to gtest
- 539626 Update docstrings for g_object_freeze_notify and g_object_thaw_notify
- 538044 unconditional use of LC_MESSAGES
- 540545 Monotonic time and timer offset
- 535947 want g_set_error_literal
- 539999 glibconfig.h: add GLIB_USING_SYSTEM_PRINTF
- 536252 GFileEnumerator should allow access to the containing GFile
- 538362 Get Win32 icons back in the file chooser
- 540802 g_list_prepend doesn't concat lists
- 540423 unrecoverable error after g_seekable_truncate
- 538836 make check failure on PPC and ALPHA: pltcheck.sh on g_atomic_pointer_get
- 539090 g_content_type_from_mime_type() should unalias
- 540331 g_file_append_to () documentation: can return NULL
- 534639 add g_desktop_app_info_new_from_keyfile
- 536733 gio build failure on Irix
- 536160 Add g_file_monitor()
- 538127 FileChooser broken on win32
- 531476 /live-g-file/test_traverse_structure test fails on Mac HFS+
- 538564 gio should have gio-types.h
- 540047 glib-genmarshal.c: '#include <io.h>' is too before
-
-Updated translations:
- Korean (ko)
- Occitan (oc)
-
-
-Overview of Changes from GLib 2.17.0 to GLib 2.17.1
-===================================================
-
-* New function: g_utime(), a gstdio wrapper for utime()
-
-* New functions: g_dgettext() and g_dngettext(), wrappers
- for corresponding gettext functions with added functionaliy
-
-* Support the latest version of the shared-mime spec, including
- icons for mime types
-
-* New function: g_themed_icon_prepend_name()
-
-* Bugs fixed:
- 535418 Please document which glib version defines goffset
- 528715 Misprint in the description of the interface g_type_class_add_private
- 528714 Misprint in the description of the interface g_param_spec_flags
- 537260 Doc bug in G_TYPE_INSTANCE_GET_CLASS()
- 530527 Misprint in the description of the interface
- g_cclosure_marshal_VOID__FLAGS
- 530526 Misprint in the description of the fields 'class_init' and
- 'class_finalize' of the structure GTypeInfo
- 528719 Improvement to the documentation of the "g_object_connect" interface
- 528172 gtk_signal_handlers_unblock_* functions return value
- amount of matched signals, not amount of actually unblocked
- 528717 Misprint in the description of the parameter 'type_id' for
- the interface g_type_register_fundamental
- 528716 Misprint in the description of the parameter 'iface_data' for
- the callback types GInterfaceInitFunc and GInterfaceFinalizeFunc
- 537555 GObject instantiation not thread safe
- 537546 'desktop' shortcut in file chooser looks like a generic folder
- 537392 Additional colon in xattr name
- 536641 Filesystem querying in gio does not list AFS and autofs file systems
- 528600 g_dummy_file_get_parent("scheme://example.com/")
- 503071 Application direction changes to right to left even if theres no
- translation
- 502511 g_assert_cmphex prints invalid message
- 338162 Use po/LINGUAS
- 314453 Nautilus crashes in Solaris when browsing the attached file
- 529321 make check fails in glib/pcre
- 455215 g_get_user_special_dir: no reference about G_USER_DIRECTORY_DOWNLOAD
- fallback to $HOME/Desktop if xdg-user-dirs is not in use
- 498732 g_key_file_to_data cannot fail
- 511367 add g_file_make_directory_with_parents
- 531900 Use __builtin_offsetof for G_STRUCT_OFFSET if building with
- gcc 4.0 or newer
- 536158 also bump GHashTable version when a node is removed via
- g_hash_table_iter_remove()/g_hash_table_iter_steal()
- 531403 g_utf8_collate broken on Mac
- 535628 test/patterntest.c still includes gpattern.h directly
- 535625 alias.h:2648: error: 'utime' undeclared here (not in a function)
-
-* Translation updates:
- Arabic (ar)
- German (de)
- Italian (it)
- Norwegian bokmål (nb)
- Thai (th)
-
-
-Overview of Changes from GLib 2.16.x to GLib 2.17.0
-===================================================
-
-* Update to Unicode 5.1
-
-* Update included libcharset to the one shipped with libiconv 0.12
-
-* Update included PCRE to 7.7
-
-* Enforce that only toplevel headers are directly included.
- This is turned on by default for GObject and GIO. To turn
- it on for GLib, define G_DISABLE_SINGLE_INCLUDES.
-
-* Fix library version of GIO. GLib 2.16 shipped with libgio-2.0.so.0.0.0
-
-* On Solaris, use FEN for file monitoring in GIO
-
-* Use the GIO_EXTRA_MODULES environment variable to find
- additional GIO modules
-
-* G_GNUC_ALLOC_SIZE: New macro that wraps the gcc alloc_size
- function attribute
-
-* g_checksum_reset: New function to reset the state of a GChecksum
-
-* g_unix_mount_monitor_set_rate_limit: New function to limit the
- rate at which events are reported
-
-* g_file_query_file_type: New utility function to query the type of
- a file
-
-* g_memory_output_stream_get_data_size: New function to obtain the
- size of the written data.
-
-* Bugs fixed:
- 522292 Gives warnings in glib/gutils.h with GCC in C99 mode
- 523298 win_iconv can't convert from UTF-8 to GB18030 (or vice versa)
- 518160 replace two g_strdup_printf calls in GBookmarkFile
- 523877 gbookmarkfile: avoid using g_string_append_printf() and
- other optimizations
- 525192 100% CPU if run main loop with no IO sources
- 315437 extern inline -> static inline
- 524314 g_convert() on Win32 implicitly converts full width
- alphanumerics into half width
- 525732 Error in documentation for g_list_first
- 525674 A typo in gmarkup.c
- 448943 g_timeout_add_seconds() problems
- 525972 UCS-4 not in the new win_iconv implementation
- 526619 make test-report crash
- 491554 Update to Unicode 5.1.0
- 519137 g_slice_dup macro needs cast for 64-bit platform
- 528752 Win32 build and SSL not working
- 530457 G_USER_DIRECTORY_DOWNLOAD folder improperly mapped
- 528667 Typos in testing module documentation
- 459905 Bug in wcwidth data
- 534085 g_unichar_iswide_cjk() has a totally wrong table
- 501651 Update glib/libcharset
- 519026 G_STMT_START/G_STMT_END test a non-existent preprocessor symbol
- 534319 GLib's .pc files could use Libs.private
- 534137 Typo in g_spawn_async_with_pipes doc
- 517419 gio win32 directory monitor
- 526796 Wrong order of arguments in g_file_copy's fallback
- 530196 _g_local_file_has_trash_dir() doesn't handle st_dev == 0
- 532965 Should not return filesystem::free for certain file systems
- 525553 fix typo and nitpicking in GArray documentation
- 526572 Missing * in declaration of parent_class in Object
- Destruction section of GObject Reference Manual
- 528648 Extra >s in Object Construction section
- 535021 g_param_spec_internal documentation should
- describe purpose of nick and blurb
- 521513 Firefox crash when using file picker
- 528433 gdesktopappinfo snafu ...
- 533369 API g_file_info_get_attribute_string () unables to get "...
- 521045 glib f_fstypename miscellany
- 521672 compile error
- 521946 control rate limit on GUnixMountMonitor
- 522335 Fails to build: glib/gtester.c:276: error: 'ARG_MAX' unde...
- 523015 Implement sliding window based upload operation
- 523019 Use new GCC 4 feature
- 523338 list nfs4 as a nfs mount type
- 524350 Make glib build without NLS again
- 524579 g_file_copy reports wrong total on progress callback for ...
- 524742 A typo in gtestutils.c.
- 524950 Minor documentation typos.
- 525866 the user directory should not be considered as a mount to...
- 526320 should not list mounts that the user doesn't have permiss...
- 527132 nautilus crash when making ftp connection
- 532852 CRITICAL **: totem_pl_parser_parse_with_base: assertion `...
- 534759 Build failure in gio
- 534764 Typo in error produced by g_file_make_directory
- 521851 Redudant tests in gunixmounts.c
- 524344 glib/gthread.h still use G_GNUC_PRETTY_FUNCTION
- 525060 glib fails to build with -DG_DISABLE_ASSERT in CPPFLAGS o...
- 534177 Invalid description of the interface g_cclosure_marshal_S...
- 520715 Add GFile method g_file_query_file_type
- 523039 nautilus can't access to trash/computer/network if gvfs i...
-
-* Updated translations:
- Arabic (ar)
- Bulgarian (bg)
- Catalan (ca)
- Czech (cs)
- Greek (el)
- Candian English (en_CA)
- British English (en_GB)
- Spanish (es)
- Estonian (et)
- Basque (eu)
- Galician (gl)
- Hebrew (he)
- Hungarian (hu)
- Japanese (ja)
- Lithuanian (lt)
- Norwegian bokmål (nb)
- Dutch (nl)
- Occitan (oc)
- Portugese (pt)
- Russian (ru)
- Slovak (sk)
- Albanian (sq)
- Swedish (sv)
- Turkish (tr)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.16.0 to GLib 2.16.1
-===================================================
-
-* Fix a crash in g_themed_icon_new
-
-* Update the included PCRE to 7.6
-
-
-Overview of Changes from GLib 2.15.6 to GLib 2.16.0
-===================================================
-
-* Fix the definition of G_INLINE_FUNC to work with gcc 4.3.0
-
-* GIO:
- - Add missing GMountMountFlags argument to g_unix_volume_mount
- - Fix the adopt_orphan_mount vfunc to take a volume monitor
- reference
- - Add properties to GThemedIcon for bindings sake
-
-* Bugs fixed:
- 520484 gvfsd-trash crashed with SIGSEGV in g_path_is_absolute()
- 510855 g_checksum_update(): Take -1 for length.
- 517676 g_themed_icon_new*() do more than call g_object_new().
- 518816 should handle rmdir returning EEXIST correctly
- 519352 g_[s]list_delete_link() docs
- 519489 Fixes for sparse warnings in gio
- 520169 add monitor argument to vfunc for GVolumeMonitor
- 520700 Add type check in g_file_query_exists
- 521145 FILE_READ_ONLY_VOLUME not present on Mingw32
- 518720 No MIME type for empty files
- 521013 in documentation, goffset doesn't say "Since 2.x"
- 521028 Missleading error messages from g_io_channel_set_encoding()
- 517484 GMainLoop could set the thread "Alertable" for APCs to be...
-
-* Updated translations:
- Assamese (as)
- Bengali India (bn_IN)
- Czech (cs)
- German (de)
- Spanish (es)
- Estonian (et)
- Finnish (fi)
- French (fr)
- Gujarati (gu)
- Italian (it)
- Lithuanian (lt)
- Malayalam (ml)
- Marathi (mr)
- Norwegian bokmål (nb)
- Romanian (ro)
- Russian (ru)
- Slovak (sk)
- Ukrainian (uk)
-
-
-Overview of Changes from GLib 2.15.5 to GLib 2.15.6
-===================================================
-
-* GIO:
- - New file attributes: trash::item-count, filesystem::use-preview
- - Rename g_file_contains_file to g_file_has_prefix
- - g_file_query_filesystem_info grew async variants
- - g_themed_icon_append_name: new convenience function
- - g_content_type_get_icon is implemented now
- - Only show mounts in /media and ~
- - g_file_contains_file has been renamed to g_file_has_prefix
-
-* Win32:
- - g_win32_get_package_installation_directory_of_module: new function
- which supersedes g_win32_get_package_installation_directory
- - Use alertable wait functions so that I/O completion routines or
- user-mode Asynchronous Procedure Calls can be run
- - Fix race conditions in g_spawn implementation on win32
-
-* Other:
- - g_uri_get_scheme has been renamed go g_uri_parse_scheme
-
-* Updated translations:
- Arabic (ar)
- Belarusian Latin (be@latin)
- Catalan (ca)
- British English (en_GB)
- Finnish (fi)
- Galician (gl)
- Hebrew (he)
- Italian (it)
- Kannada (kn)
- Norwegian bokmål (nb)
- Dutch (nl)
- Brazilian Portugese (pt_BR)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.15.4 to GLib 2.15.5
-===================================================
-
-* Update the included PCRE to 7.6
-
-* GIO:
- - g_volume_should_automount: new function to determine if a volume
- should be mounted automatically
- - g_file_query_default_handler: new convenience function to get
- the default handler for a file
- - g_app_info_launch_default_for_uri new convenience function to
- launch the default handler for a URI
- - Use mimeapps.list and defaults.list as discussed on xdg list
- recently
- - g_app_info_get_default_for_uri_scheme has a real implementation
- now (gvfs provides a GConf-based implementation)
- - There is the beginning of a test suite
- - standard::description: new file attribute
- - GMountMountFlags flags argument added to mount calls
-
-* GObject:
- - class initialization is now threadsafe
-
-* Updated translations:
- Arabic (ar)
- Catalan (ca)
- Spanish (es)
- Basque (eu)
- Italian (it)
- Japanese (ja)
- Kannada (kn)
- Korean (ko)
- Macedonian (mk)
- Occitan (oc)
- Portugese (pt)
- Brazilian Portugese (pt_BR)
- Swedish (sv)
- Thai (th)
-
-
-Overview of Changes from GLib 2.15.3 to GLib 2.15.4
-===================================================
-
-* G_GNUC_PRETTY_FUNCTION has been deprecated
-
-* GIO:
- - g_file_copy has an async variant now
- - Drives and volumes now have API to get identifiers
- like Hal UDIs or UUIDs.
- - There is now a registration API to let modules register
- extensions they provide, such as volume monitor implementations
-
-* Bugs fixed:
- 511807 g_time_val_to_iso8601() uses MT-unsafe gmtime() function
- 316260 [patch] Doc patches for gnode (2.8.1)
- 385132 solaris gettext support fix
- 484261 ./configure check for system PCRE unicode support fails w...
- 510292 GOption main help not shown
- 511580 Implement g_file_copy_async
- 511654 Compile errors due to C99 constructs
- 487909 g_utf8_strreverse and combining marks
- 512381 unused variable 'is_main_group'
-
-* Updated translations:
- Arabic (ar)
- Belarusian (be)
- Czech (cz)
- Spanish (es)
- French (fr)
- Galician (gl)
- Portugese (pt)
- Russian (ru)
- Swedish (sv)
- Thai (th)
-
-
-Overview of Changes from GLib 2.15.2 to GLib 2.15.3
-===================================================
-
-* GChecksum:
- - g_checksum_update can accept nul-terminated strings
- - The MD5 implementation works correctly on buffers
- that are longer than 64 bytes
-
-* GIO:
- - Don't include a copy of the inotify headers, rely on system headers
- - g_file_find_enclosing_mount has an async variant now
- - Reduntant seek API on file streams has been removed
-
-* Bugs fixed:
- 508602 gmemory{in|out}putstream.c: unknown pointer size
- 508771 There is no g_file_test/exists() for GFile
- 508773 g_uri_escape_string() documentation unclear.
- 509465 AM_PATH_GLIB_2_0 doesn't support gio
- 509626 async functions: Document allowed NULL callback?
- 509990 GSeekable documentation unclear
- 510448 No inotify support on ARM or SH5
- 510855 g_checksum_update(): Take -1 for length.
-
-* Updated translations:
- Basque (eu)
- Marathi (mr)
- Swedish (sv)
- Ukrainian (uk)
-
-
-Overview of Changes from GLib 2.15.1 to GLib 2.15.2
-===================================================
-
-* GIO:
- - Mount operation API change: unhandled methods get reported via
- the reply, rather than by the signal emission return value
- - File monitor API change: Add a GError argument to g_file_monitor_file
- - g_unix_mount_guess_should_display(): new function
-
-* Bugs fixed:
- 508224 [PATCH] FAM backend crashes due to double free
- 508074 GAsyncResult documentation suggests g_freeing it.
- 508108 GFile documentation slightly unclear.
- 508309 rpc_pipefs mount points should be hidden
- 508378 GFileInfo documentation implies that it changes attribute...
- 508719 g_file_get_relative_path fails if parent is root
- 508773 g_uri_escape_string() documentation unclear.
-
-* Updated translations:
- Arabic (ar)
- Spanish (es)
- Hebrew (he)
- Italian (it)
- Korean (ko)
- Turkish (tr)
-
-
-Overview of Changes from GLib 2.15.0 to GLib 2.15.1
-===================================================
-
- * Portability fixes:
- - Assertion functions are marked as noreturn again
- - Handling of inline functions has been fixed to work with gcc 4.3
- - C99 comments have been removed from headers
- - The nonportable sed -i option is no longer used
-
- * GIO:
- - Clarified the semantics of g_app_info_get_all()
- - API for memory input and output streams has been changed a bit
- - GDirectoryMonitor has been removed; GFileMonitor can monitor
- files and directories now
-
- * Bugs fixed:
- 504829 Invalid environment passed to g_spawn_async in g_desktop_...
- 505258 crash in Users and Groups: Adding a user
- 505815 g_content_types_get_registered should not g_free keys
- 491218 g_timer_new() doesn't initialize timer->end
- 315437 extern inline -> static inline
- 476856 Inconsistency between standard and implementation of the ...
- 480122 g_module_open fails to open modules with ".la" extension
- 495589 gspawn.c failing to set FD_CLOEXEC
- 500273 doesn't build with --disable-visibility
- 504142 Do not show empty groups in --help output
- 504879 giofam incorrectly linked
- 505042 add file attribute for actually used file size in bytes
- 505058 xattr namespace docs
- 505674 Misprint in the definition of the macro G_CCLOSURE_SWAP_DATA
- 505730 Fails to build on OSX 10.4: _NSGetEnviron not declared
- 505887 older darwin lacks lchown
- 506374 gmemoryinputstream api
- 506461 Conversion of g_assert_not_reached() and friends into fun...
- 503051 Small bug in glib interface
- 506395 Updates to GIO documentation
- 507628 Missing .pc entry for gio linking against glib
- 505195 [patch] typo in g_try_new0 docs
- 507822 g{file,directory}monitor changes signal problem
- 506377 gmemoryoutputstream write implementation
- 507835 bug in gunixinputstream
-
- * Updated translations:
- Arabic (ar)
- Belarusian Latin (be@latin)
- Spanish (es)
- Basque (eu)
- Irish (ga)
- Hebrew (he)
- Occitan (oc)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.14.x to GLib 2.15.0
-===================================================
-
-Major new features:
-
- * GIO: a VFS API, designed to replace GnomeVFS. The GIO implementation
- in GLib has support for local filesystems. The new, separate gvfs
- module contains various backend implementations (cifs, ftp, sftp,
- http, ...)
-
- * GChecksum: provides various hash algorithms, such as MD5, SHA-1
- and SHA-256
-
- * GTest: a test framework
-
-Smaller additions:
-
- * GHash:
- - GHash has iterators, as an alternative to g_hash_table_foreach
-
- * GMarkup:
- - g_markup_parse_context_get_element_stack: New function to
- get the stack of open elements
- - G_MARKUP_PREFIX_ERROR_POSITION: New flag to improve error
- reporting
- - g_markup_collect_attributes: Convenience function for handling
- attributes
-
-* GKeyFile:
- - Functions that take a GError now return a boolean to indicate
- success, instead of void
- - Various performance improvements
-
-* GAsyncQueue:
- - g_async_queue_new_full: new function that allows to specify
- a free function for leftover elements
-
-* GError:
- - g_prefix_error and g_propagate_prefixed_error: New functions
- to ease error propagation
-
-* Internationalization:
- - C_: A new 2-argument variant of the Q_() macro
- - Use native character set conversion API on Windows
-
-* GLib builds with automake 1.10
-
-* Bugs fixed:
- 455725 specific combination of g_utf8_strlen and g_pattern_match...
- 467537 g_convert_with_iconv() not resetting iconv() state correc...
- 497033 Commandline option parser should warn about missing optio...
- 504527 gchecksum: Conditional jump or move depends on uninitiali...
- 445362 Non-numeric local labels in gatomic.c are causing linker ...
- 482313 gregex: no way to tell why compilation failed
- 317775 main loops continues to run after g_main_loop_quit() has ...
- 418778 Insufficient pkg-config version requirement
- 436293 g_option_context_new() doc should mention that the string...
- 466557 glib-mkenums shifts ARGV[0] to undefined
- 468882 GKeyFile doesn't accept "True" as a true boolean value
- 469551 application --help messages are garbaged on none UTF-8 lo...
- 479724 Memory leak upon calling "g_main_loop_run" in the seconda...
- 490061 outptrs uninitialized after g_parse_long_long
- 490637 gobject documentation patch
- 495294 glib-genmarshal prints warnings but returns 0
- 496046 option to prefix location of errors for GMarkup
- 498113 tests/regex-test fails on 64bit environment
- 500506 Fails to build on OSX 10.4
- 500638 gkeyfile speedup ...
- 500875 Make check fails as there is no "test" target for "build"...
- 502511 g_assert_cmphex prints invalid message
- 502927 g_array_index triggers cast aligment warning
- 503029 g_time_val_from_iso8601 parse non-ISO8601 dates
- 503222 Need context to translate
- 503420 gkeyfile leaks a hash table
- 503470 Fix build when builddir != srcdir
- 504227 Inverse variant for g_test_trap_assert_stdout, g_test_tra...
- 71704 file include order
- 491957 Misprint in the specification of the interface "g_main_co...
- 491959 Misprint in description of the structure "GThreadPool"
- 491965 Mistype in the specification of the function "g_hook_list...
- 491966 Misprint in the specification of the interface "g_main_co...
- 491968 The documentation does not mention the restriction for th...
- 491970 The documentation for the interface "g_date_clamp" is inc...
- 491974 The documentation of the interface "g_main_context_iterat...
- 491975 The documentation for the interfaces "g_io_channel_read_u...
- 491979 Misprint in the description of the interfaces g_key_file_...
- 491982 Misprint in the description of the interface "g_key_file_...
- 501107 EXTRA_DIST automake warnings
- 501997 g_utf8_normalize() returns NULL on invalid string
- 502590 C_/g_dpgettext efficiency
- 464259 g_set_application_name() docs should say "Since 2.2"
- 496518 gbase64.c API doc clarification
- 498728 g_key_file_get_*_list should set length to 0 when returni...
- 500361 Improve docs for g_array_free() and g_ptr_array_free()
- 501853 g_checksum_get_digest docs
- 503862 Allow NULL strings in g_parse_debug_string()
- 142676 Q_
- 367550 Add g_async_queue_new_full() with GDestroyNotify function
- 375651 Minor enhancements to GKeyFile API
- 443648 MD5 digest support
- 449937 Upgrade auto* sources to be clean under automake1.9
- 452887 gmarkup context "get element" function is useless when ca...
- 491549 [PATCH] Eliminate libiconv dependency on Windows
- 500507 GHashTableIter API
-
-* Translation updates
- Belarusian Latin (be@latin)
- Czech (cs)
- German (de)
- Spanish (es)
- Esperanto (et)
- French (fr)
- Korean (ko)
- Marathi (mr)
- Norwegian bokmål (nb)
- Brazilian Portugese (pt_BR)
- Slovenian (sl)
- Swedish (sv)
-
-
-Overview of Changes from GLib 2.14.2 to GLib 2.14.3
-===================================================
-
-* Update PCRE to 7.4
-
-* Bugs fixed:
- 487491 Fix some warnings from sparse
- 488068 Small (one-time) memory leak in glib_gettext initialization
- 493688 TYPE macro "_get_type ()" is documented wrong
-
-* Updated translations:
- Arabic (ar)
- Belarusian Latin (be@latin)
- Estonian (et)
- Irish (ga)
- Slovenian (sl)
-
-
-Overview of Changes from GLib 2.14.1 to GLib 2.14.2
-===================================================
-
-* Bugs fixed:
- 476849 Invocation of the interface "g_hook_free" fails in certai...
- 359165 marshallers can throw warnings with -Wunused
- 477957 more discussion on g_value_set_object vs. g_value_take_ob...
- 478459 G_DEFINE_DYNAMIC_TYPE_EXTENDED doesn't work with G_IMPLEM...
- 483337 inline is disabled for MSVC when compiling C code
- 478349 Broken link to gettext website
- 469231 g_spawn optimization for setting all open fds to CLOEXEC
-
-* Updated translations:
-Arabic (ar)
-Galician (gl)
-Hebrew (he)
-Korean (ko)
-
-
-Overview of Changes from GLib 2.14.0 to GLib 2.14.1
-===================================================
-
-* Bugs fixed:
- 476840 Invocation of the interface "g_utf8_strreverse" crashes f...
- 444765 Fix FIXME in gregex.c when new pcre is out
- 464145 g_markup_escape_text Produces Invalid XML
- 465625 g_type_default_interface_ref() does not ensure working g_...
- 466768 Clearify that comments can be put anywhere in a Key-file.
- 474229 The GError documentation should give convention for the G...
- 474899 G_BREAKPOINT() docs inaccurate
- 475854 Overuse of -lpcre when using system pcre
- 473879 Incorrect includes in gregex.c
- 468694 Typoes in documentation
- 469051 g_snprintf () talks about characters where it probably me...
- 457601 Missing arch specific atomic implementation
- 475923 Missing pcre flags when static-linking against glib
- 475619 glibthread-2.0.la does not list -lpthread
-
-* Updated translations:
- Bulgarian (bg)
- Catalan (ca)
- Danish (da)
- German (de)
- Canadian English (en_CA)
- British English (en_GB)
- Spanish (es)
- Estonian (et)
- Finnish (fi)
- French (fr)
- Gujarati (gu)
- Hungarian (hu)
- Italian (it)
- Georgian (ka)
- Kannada (kn)
- Lithuanian (lt)
- Makedonian (mk)
- Norwegian (nb)
- Dutch (nl)
- Polish (pl)
- Portugese (pt)
- Brazilian Portugese (pt_BR)
- Romanian (ro)
- Russian (ru)
- Albanian (sq)
- Serbian (sr, sr@Latn)
- Swedish (sv)
- Tamil (ta)
- Thai (th)
- Ukrainian (uk)
- Vietnamese (vi)
-
-
-Overview of Changes from GLib 2.13.7 to GLib 2.14.0
-===================================================
-
-* Last-minute API additions:
- - Make g_unichar_combining_class public
- - Add goffset type, add G_MAXSSIZE and G_MINSSIZE
-
-* Update PCRE to 7.2
-
-* Bugs fixed:
- 453998 Make _g_unichar_combining_class() public
- 462549 gregex.c: variable is declared at middle of block
- 417068 g_file_test doc inconsistency
-
-* Updated translations:
- Assamese (as)
- Basque (eu)
- Kannada (kn)
- Malayalam (ml)
- Dutch (nl)
- Polish (pl)
- Brazilian Portugese (pt_BR)
- Turkish (tr)
-
-
-Overview of Changes from GLib 2.13.6 to GLib 2.13.7
-===================================================
-
-* The memory corruption warning from the slice allocator that
- occurred when threads were initialized after the slice allocator
- has been removed, as the slice allocator now works fine
- in this scenario.
-
-* New functions g_once_init_enter() and g_once_init_leave() make
- it easier to write threadsafe one-time initialization functions
-
-* Bugs fixed:
- 454473 Simple XML Subset Parser terminates on invalid XML
- 445813 g_module_open error, add file name
- 453796 errno gets clobbered by g_filename_display_name
- 341988 don't use "-c" with msgfmt in Makefile.in.in
- 447048 Please produce slightly more output during long tests
- 454785 GModule documentation lists same block of code twice.
- 454786 GModule documentation lists same paragraph twice.
- 383155 small docs quirks in gobject/closure API documentation
- 65041 _get_type() functions aren't thread safe
-
-* Updated translations
- Assamese (as)
- Spanish (es)
- Gujarati (gu)
- Japanese (ja)
- Korean (ko)
- Macedonian (mk)
-
-
-Overview of Changes from GLib 2.13.5 to GLib 2.13.6
-===================================================
-
-* Reintroduce a GType typedef whose removal in 2.13.5
- caused trouble for C++ bindings
-
-* Bugs fixed:
- 450216 docs not explicit enough about g_free()
- 451459 g_type_register_static_simple calls g_type_register_static
-
-* Updated translations
- Norwegian bokmål (nb)
- Sinhala (si)
-
-
-Overview of Changes from GLib 2.13.4 to GLib 2.13.5
-===================================================
-
-* xdg-user-dirs support:
- - the Desktop directory is guaranteed to be defined
- - user-dirs.dirs is no longer reloaded on changes
-
-* Slice allocator:
- - new api to duplicate slices
-
-* Regular expression support:
- - GRegex is a boxed type now
-
-* Bugs fixed:
- 44793 make check failing in trunk
- 354522 Small problem with PLT hiding 6 symbols
- 363986 glib 2.12.4 does not compile with SGI IDO cc
- 443869 g_type_class_add_private doesn't warn when adding 0-sized...
- 446859 Legitimately return 0 for g_quark_from_string(NULL)
- 447534 Small typo in g_timeout_add_seconds() doc
- 447583 GStaticRWLock
- 447935 g_get_current_dir SIGSEGV on long path
- 448260 CLAMP has surprising result if low > high
- 57693 g_string_vprintf()
- 442029 add g_slice_dup()
- 445065 Add GRegex boxed type
- 448819 Add full version of g_timeout_add_seconds()
-
-* Updated translations:
- Swedish (sv)
- Oriya (or)
- Hebrew (he)
- Spanish (es)
- Estonian (et)
-
-
-Overview of Changes from GLib 2.13.3 to GLib 2.13.4
-===================================================
-
-* Bugs fixed:
- 444121 g_get_user_special_dir deadlocks
- 444161 invalid UTF8 in key name shows up as valgrind error in g_...
- 444130 g_option_context_get_help() is broken when there's a desc...
-
-
-Overview of Changes from GLib 2.13.2 to GLib 2.13.3
-===================================================
-
-* GKeyFile:
- - Added defines for easier handling of desktop files
-
-* Unicode support:
- - Update g_unichar_iswide_cjk for Unicode 5.0
-
-* Regular expression support:
- - GRegex structs can now be ref-counted
- - Some new functions for dealing with incremental
- replacement have been added
- - The GRegexEvalCallback signature has been changed
-
-* g_get_user_special_dir() has been added to support
- xdg-user-dirs
-
-* Bugs fixed:
- 419376 Functions using named subpatterns behave inconsistently w...
- 434358 g_regex_fetch_named() and g_regex_fetch_named_pos() are b...
- 423708 typo in the README.win32 file see patch below
- 339225 Add new defines for easier handling of .desktop files
- 442265 API additions/changes for GRegex
- 432651 Add a glib-ish xdg_user_dir_lookup
-
-* Updated translations:
- Estonian (et)
- Norwegian bokmål (nb)
-
-
-Overview of Changes from GLib 2.13.1 to GLib 2.13.2
-===================================================
-
-* Unicode support:
- - Add g_unichar_ismark()
-
-* GOption:
- - Allow to use callbacks for remaining args
-
-* Updated translations:
- Belarusian Latin (be@latin)
- British English (en_GB)
- Galician (gl)
- Norwegian bokmål (nb)
- Oriya (or)
- Spanish (es)
- Thai (th)
-
-
-Overview of Changes from GLib 2.13.0 to GLib 2.13.1
-===================================================
-
-* GRegex:
- - Portability fixes
- - Split into immutable GRegex and GMatchInfo
- - Add g_regex_get_max_backref() and g_regex_get_capture_count()
- to obtain information about the compiled regex
-
-* GKeyFile:
- - Fix roundtrip problems
- - Add g_key_file_load_from_dirs()
-
-* Unicode support:
- - Fix corner cases in case conversion routines
-
-* GOption:
- - Add a function to get the formatted help string
-
-* GHash:
- - Add new functions g_hash_table_get_keys() and
- g_hash_table_get_values() to retrieve the keys and
- values in list form
-
-* Updated transations:
- Simplified Chinese (zh_CN)
- Arabic (ar)
-
-
-Overview of Changes from GLib 2.12 to GLib 2.13.0
-=================================================
-
-* Add GSequence, a list that is implemented using
- a balanced binary tree.
-
-* Add GRegex, an implementation of Perl regular expressions,
- based on PCRE.
-
-* Use Posix monotonic clocks instead of gettimeofday()
- for GTimer when available.
-
-* Support static initialization of GQeues with G_QUEUE_INIT,
- g_queue_init() and g_queue_clear().
-
-* Add g_string_chunk_clear() for clearing a
- GStringChunk.
-
-* Add g_unichar_get_script() to obtain Unicode
- script information.
-
-* Add g_unichar_iszerowidth() to obtain information
- about zero-width characters.
-
-* Add G_GNUC_MAY_ALIAS which wraps the gcc may_alias
- type attribute.
-
-* G_GNUC_INTERNAL has a working definition for the
- Sun Studio compiler. This requires the macro to
- be positioned before the function declaration.
-
-* The slice allocator can produce detailed debugging
- information with G_SLICE=debug-blocks.
-
-* Modules support G_DEBUG flags resident-modules and
- bind-now-modules.
-
-* Add G_DEFINE_DYNAMIC_TYPE() to make it easier
- to define types in modules.
-
-* Bug fixes: too many to list them in detail here.
-
-* New and updated translations (be,bg,bn,ca,cs,de,
- en_CA,en_GB,et,fa,fr,he,hu,it,ja,ku,lt,mg,mk,ml,
- nb,ne,nn,pt,pt_BR,ro,sr,sr@Latn,sv,ta,uk,vi,zh_CN,
- zh_HK,zh_TW)
-
-
-Overview of Changes from GLib 2.12.1 to GLib 2.12.2
-===================================================
-
-* Unicode updates:
- - Normalization is following Unicode TR #29
- - g_unichar_isxdigit() only accept characters
- for which g_unichar_xdigit_value() returns a value
- - g_unichar_toupper and g_unichar_tolower leave
- unconvertable characters in place instead of
- replacing them by NUL
-
-* Bugs fixed
- 348491 g_utf8_strup() and g_utf8_strdown() returns
- string with NUL bytes
- 349825 GKeyFile always inserts a newline before a group
- 347842 g_unichar_isxdigit() is too general about what
- it considers a digit
- 348694 g_utf8_normalize() hasn't been updated to PR #29
- 348785 Hint about G_DEBUG in Message Logging docs
- 349792 Wrong english string (UI)
- 349952 gparamspecs.c uses gcc feature
-
-* Translation updates (ca,cs,de,dz,es,eu,fi,gu,ko,
- nl,pl,tr,uk,zh_HK,zh_TW)
-
-
-Overview of Changes from GLib 2.12.0 to GLib 2.12.1
-===================================================
-
-* Update to final Unicode Character Database 5.0.0
-
-* Bugs fixed:
- 346660 issues with base64 api documentation / g_base64_decode_cl...
- 348136 Coverity reports allocation of wrong size CID #2839
- 336281 Update to UCD 5.0
- 346197 g_date_strftime %F option doesnt work for win32
- 348011 Small optimization to real_toupper()
- 246494 prototype mismatch in glib/gconvert.c
-
-* New and updated translations (bg,bn_IN,ca,dz,eu,fi,
- fr,he,it,ja,mk,or,pt)
-
-
-Overview of Changes from GLib 2.11.4 to GLib 2.12
-=================================================
-
-* Bugs fixed:
- 344905 leap-year bug in g_time_val_from_iso8601 w/o HAVE_TIMEGM
-
-* Updated translations (cy,nb,nl)
-
-
-Overview of Changes from GLib 2.11.3 to GLib 2.11.4
-===================================================
-
-* GBookmarkFile:
- - g_bookmark_file_remove_item returns a boolean
-
-* g_mkstemp accepts the XXXXXX in the middle of
- the template
-
-* Bugs fixed:
- 344868 g_key_file_to_data should separate groups
-
-* Updated translations (de,es,fr,gu,hi,ko,th)
-
-
-Overview of Changes from GLib 2.11.2 to GLib 2.11.3
-===================================================
-
-* GBookmarkFile:
- - g_bookmark_file_move_item: Return TRUE in case of
- an empty target
-
-* Bugs fixed:
- 343919 gunicollate.c: strxfrm bug on VC8
-
-* Updated translations (fi)
-
-Overview of Changes from GLib 2.11.1 to GLib 2.11.2
-===================================================
-
-* Add g_ascii_stroll to parse signed 64bit integers
-
-* GMarkup: add a flag to treat CDATA as text
-
-* GHashTable: add functions to remove all entries
-
-* GMainLoop: add functions to find the currently
- running source, and determine if it is destroyed
-
-* Bug fixes:
- 342563 g_atomic_thread_init() needs to be called before
- other _g_*_thread_init() functions
- 343548 Potential use after free in callers of g_string_free()
- 168538 Wish: Clearing contents of GHashTables
- 321886 GTK+ cannot be reliably used in multi-threaded
- applications
- 341826 goption.c: 'strtoll' is C99's function
- 343899 g_ascii_formatd dosn't work as expected for all
- format strings
- 317793 Make GEnumValue strings const
- 337129 Compile warnings in G_IMPLEMENT_INTERFACE
- 303622 What is G_TYPE_CHAR?
-
-* Updated translations (bg,dz,eu,gl,ja,ko,nl,th,vi)
-
-
-Overview of Changes from GLib 2.11.0 to GLib 2.11.1
-===================================================
-
-* GOption
- - Support 64-bit integers
- - Allow optional text before and after the options
- in help output
-
-* Bug fixes:
- 340538 gbase64-test writes OOB
- 340816 GKeyFile set_string_list invalid memory reads
- 339105 g_key_file_parse_value_as_double
- 340434 convert-test.c fails (function test_one_half)
- 311043 Memory leaks (and potential infinite loops)
- when using G_ERRORCHECK_MUTEXES
- 335198 Error checking mutexes are fubar
- 341237 Add a G_OPTION_ARG_INT64
- 341192 g_io_channel_set_flags not implemented on win32
- 336120 Allow adding description before/after GOption
- --help output body
- 341191 misplaced check in g_relation_delete
- 340530 mismatched calloc / g_free in win32 threads
-
-* Updated translation (es)
-
-Overview of Changes from GLib 2.10.x to GLib 2.11.0
-===================================================
-
-* GBookmarkFile: a parser for files containing bookmarks
- stored using the Desktop Bookmark specification.
-
-* Base64 encoding support
-
-* Unicode 5.0 support
-
-* GOption supports floating point numbers
-
-* GKeyFile supports floating point numbers
-
-* Bug fixes:
- 155884 gatomic.c should be based on new SDK
- 157877 update-desktop-database doesn't handle duplicate entries
- 164719 keyfile parser doesn't support floats
- 327662 Import BookmarkFile from libegg
- 329548 Add G_OPTION_ARG_DOUBLE
- 329789 option-test.c type confusion
- 332841 Segmentation Fault when %llu is passed to vasnprintf and
- HAVE_SNPRINTF is not defined
- 333879 gthread/gthread-win32.c: IsDebuggerPresent needs '#define
- _WIN32_WINDOWS 0x0401'
- 333916 g_timer_elapsed docs should mention that microseconds
- may be NULL
- 334440 dlerror() portability issue causes crash on (old) a.out
- NetBSD platform
- 334646 goption + error out params
- 334799 g_remove() must check return value of remove()
- 334943 make check FAIL: threadpool-test
- 335215 Some breakages with GThreadPool
- 336085 g_option_context_new parameter lacks better explanation
- 336677 Documentation for g_object_ref_sink() is incorrect
- 337027 gbookmarkfile.c: sys/time.h include error
- 337553 Wrong escaping of URIs
- 338572 Dereferencing NULL value in g_key_file_get_group_comment
- 338845 g_completion_complete_utf8 crashes when NULL is passed to it
- 339337 g_bookmark_file_set_description
- 339338 gbookmarkfile.c, function expand_exec_line
- 339340 gbookmarkfile.c, function bookmark_app_info_dump
-
-* Translation updates (bg,en_GB,et,gl,gu,he,hi,ka,nb,nl,nn,
- or,pt_BR,ro,tr,vi,zh_CN)
-
-
-Overview of Changes from GLib 2.10.0 to GLib 2.10.1
-===================================================
-
-* Bugs fixed:
- 314794 Broken pthread detection on Darwin [Gregor Riepl]
- 322476 Missing check for .dylib [Vladimir Panov]
- 333651 Inconsistent _g_charset_get_aliases prototype [Julio
- M. Merino Vidal]
- 333761 GInitiallyUnowned breaks application code [Sven Herzberg]
-
-* Win32 changes:
- - Fix g_listenv() implementation.
- - Allow up to 100 GPrivate structs
-
-* Translation updates (fr,hu,lt,pl,sv)
-
-
-Overview of Changes from GLib 2.9.6 to GLib 2.10.0
-==================================================
-
-* Bugs fixed:
- 328997 64bit pointer trunction in glib slab-allocator
- [Pascal Hofstee]
- 331110 g_cond_broadcast(inform_cond) without holding
- inform_mutex [Chris Wilson, Sebastian Wilhelmi]
- 332093 Fix some leaks in the tests [Kjartan Maraas]
- 332435 g_utf8_strlen returns wrong value if a maximum
- number of bytes to check is specified
- [Matthias Clasen]
- 331367 gslice requires more POSIX-like semantics for
- GPrivate destructors [Tor Lillqvist]
-
-* Documentation improvements [Matthias, Kang Jeong-Hee,
- Tor Lillqvist, Stefan Kost]
-
-* Translation updates (el,eu,ka,uk)
-
-Overview of Changes from GLib 2.9.5 to GLib 2.9.6
-=================================================
-
-* Bugs fixed:
- 329124 distclean removes README [Kjartan Maraas, Tim Janik]
- 317679 GRelation field type not documented [Behdad Esfahbod]
- 329123 Typo in GTime docs [Kjartan Maraas]
-
-* Documentation improvements [Sven Herzberg, David
- Schleef, Kjartan Maraas, Behdad Esfahbod]
-
-* Translation updates (cs,cy,it,ko,pt,sq,sr,sr@Latn,ru
-
-Overview of Changes from GLib 2.9.4 to GLib 2.9.5
-=================================================
-
-* Memory management:
- Runtime debugging support: The slice allocator
- can be turned off by setting G_SLICE=always-malloc
- in the environment. Zeroing of freed memory can
- now be turned on at runtime by setting
- G_DEBUG=gc-friendly in the environment. [Tim Janik]
-
-* Bugs fixed:
- 328253 HP-UX/IA-64 uses ".so" as default shared library
- extension [Albert Chin]
- 143380 unicode-encoding test fails converting to UTF-16
- with libiconv [Marc Moorcroft]
- 328254 Build breakage (GSlice) [Jens Ganseuer]
- 328705 C99ism in glib/gmem.c [Kazuki Iwamoto]
-
-* Translation updates (da,et,zh_CN)
-
-Overview of Changes from GLib 2.9.3 to GLib 2.9.4
-=================================================
-
-* Type system:
- Fix a problem with g_object_compat_control() which
- can lead to segfaults in GTK+ applications on 64bit
- platforms.
-
-* Thread suppport:
- Unused threads now fall back to the global pool after
- 500 milliseconds, where they wait for another
- max-idle-time milliseconds. [Sebastian Wilhelmi]
-
-* Fix a memory allocation problem in GKeyFile. [Morten
- Welinder]
-
-
-Overview of Changes from GLib 2.9.2 to GLib 2.9.3
-=================================================
-
-* GTree:
- - Replace the simple recursive implementation by
- a nonrecursive, threaded one [Maurizio Monge]
-
-* Change g_filename_display_name and
- g_filename_display_basename to use the Unicode
- replacement character U+FFFD instead of a question
- mark, and don't append "(invalid encoding)" [Matthias]
-
-* Documentation improvements [Sven Herzberg, Federico
- Mena Quintero, Stefan Kost]
-
-* Bugs fixed:
- 323937 gslice.c in glib 2.9.1 doesn't build on Mac OS X
- [Bogdan Nicula]
- 326558 Some test failures on IRIX 6.5 [Daichi Kawahata]
- 169285 "threaded" tree implementation for GTree
- [Maurizio Monge]
- 326747 g_filename_display_basename adds (invalid encoding)
- [Alberto Ruiz]
-
-Other contributors: Christian Kellner, Murray Cumming
-
-New and updated translations (bg,ca,de,es,et,gu,ja,nl,th,vi)
-
-
-Overview of Changes from GLib 2.9.1 to GLib 2.9.2
-=================================================
-
-* Memory management:
- - Add tests for cache colorization [Tim Janik]
- - Minimize space consumption if small amounts of differently
- sized slices are allocated, at a small performance cost. [Tim]
-
-* Thread support:
- - Add g_atomic_pointer_set() and g_atomic_int_set() [Tim Janik,
- Sebastian Wilhelmi]
- - Add g_thread_pool_set_sort_function() to allow sorting the
- tasks of a threadpool. [Martyn Russell]
- - Add g_thread_pool_set_idle_time() to allow unused threads
- to exit after a certain time. [Martyn]
-
-* Type system:
- - introduce a new type GInitiallyUnowned, which has an initial
- floating reference. [Tim]
- - Add support for GType parameters. [Matthias]
-
-* Main loop:
- - Add g_main_context_is_owner() to determine if the current
- thread is the owner of the context. [Michael Meeks]
-
-* Provide g_access(), g_chdir(), g_unlink(), g_rmdir() as
- wrapper functions instead of macros. [Manish Singh]
-
-* Documentation improvements [Tim, Matthias, Federico Mena Quintero,
- Stefan Kasal, Dan Williams]
-
-* New and updated translations (en_CA,fi,fr,gl,ml,nb,no,zh_HK,zh_TW)
-
-* Bugs fixed:
- 324179 g_allocator_new() returns pointer to const dummy which Gtk+ 2.8
- tries to modify [J. Ali Harlow]
- 324332 g_option_context_parse() returns false without setting error
- [Tim-Philipp Müller]
- 324950 GLIB 2.9.1 testcase errors [Dan Yefimov]
- 325015 gslice.c: process.h is needed on Windows [Kazuki Iwamoto]
- 321978 G_DATALIST_GET_FLAGS() macro is not casting datalist to
- gpointer [Andrew Paprocki]
- 316221 G_LOCK warns about breaking strict-aliasing [Michal Benes,
- Stanislav Brabec]
- 325273 Error in documentation for glib_check_version () [Declan Naughton]
- 325310 g_spawn_sync hangs when catching both stdout and
- stderr [Tor Lillqvist]
- 325249 gcc warning when using g_rmdir from <glib/gstdio.h> [Jani Monoses]
- 325864 glib/gthreadpool.c:"#define debug(...)" is C99 [Kazuki Iwamoto]
- 325874 Should say somewhere that source IDs are > 0 [Dan Williams]
- 325438 a typo (compatability) [Stefan Kasal]
- 323937 gslice.c in glib 2.9.1 doesn't build on Mac OS X [Bogdan Nicula]
-
-
-Overview of Changes from GLib 2.9.0 to GLib 2.9.1
-=================================================
-
-* Memory management
- - The slice allocator is implemented [Tim Janik]
- - g_slice_free_chain() has been renamed to
- g_slice_free_chain_with_offset() [Tim, Behdad Esfahbod]
- - Mem chunks are deprecated [Matthias Clasen]
-
-* Data structures
- - Hash tables are refcounted, and have a boxed type [Tim]
-
-* Thread support
- - Support for Solaris threads has been removed
- [Sebastian Wilhelmi, Andrew Paprocki]
- - g_async_queue_sort(), g_async_queue_push_sorted() have
- been added to allow GAsyncQueue to be used as a priority
- queue, together with the corresponding _unlocked
- variants [Martyn Russell]
-
-* GObject:
- - The concept of a floating initial reference has been
- moved from GtkObject to GObject [Tim]
-
-* Win32 changes:
- - Make g_rename() replace existing files [Tor Lillqvist]
-
-* Misc new API:
- - G_GUINT64_CONSTANT macro to define guint64
- constants [Andrew Paprocki]
- - G_GNUC_WARN_UNUSED_RESULT macro to instruct the
- compiler to emit a warning if the value returned
- by a function is ignored. [Arjan van de Ven, Alex Larsson]
- - GList and GSList now have sort functions which take an
- extra user data argument [Martyn Russell]
- - g_param_spec_ref_sink() has been added for consistency [Tim]
-
-* $LOGNAME is respected when determining user data. [Laszlo Peter]
-
-* Other changes and bug fixes [Tim, Matthias, Behdad,
- Christian Persch, Benedikt Meurer, Andrew Paprocki,
- Kazuki Iwamoto, Alexis S. L. Carvalho, Stanislav Brabec,
- Andreas Schwab, Kalle Vahlman]
-
-* Documentation
- - Deprecation warnings carry version information [Matthias]
- - The slice allocator has been documented [Matthias, Tim]
- - Other improvements [Morten Welinder]
-
-Overview of Changes from GLib 2.8.x to GLib 2.9.0
-=================================================
-* Unicode support:
- - The Unicode tables have been updated to Unicode 4.1,
- adding several new values to the GUnicodeBreakType
- enumeration. This breaks Pango <= 1.10
- [Behdad Esfahbod]
- - The various Unicode character predicate functions
- (g_unichar_isalpha, g_unichar_isdigit,...) have
- been optimized
- [Behdad]
- - g_utf8_pointer_to_offset, g_utf8_offset_to_pointer:
- These functions handle negative offsets now, and
- going backwards in g_utf8_offset_to_pointer uses
- "stutter stepping".
- [Larry Ewing, Matthias Clasen]
-
-* Memory management:
- - Mem chunks are no longer used internally in GLib and
- GObject. GMemChunk will be deprecated in GLib 2.10
- - All APIs based on GAllocator (g_list_push/pop_allocator,
- and similar push/pop_allocator functions for other
- data structures) have been deprecated, since they
- never worked as intended.
- - The g_slice_* functions have been added as a
- new API for fast allocation of small memory blocks.
- The implementation in GLib 2.9.0 is just a simple
- wrapper around malloc. GLib 2.10 will have an
- efficient and scalable implementation.
- [Tim Janik, Matthias]
-
-* Pattern matching:
- - g_pattern_match has been optimized to avoid
- unnecessary recursion.
- [Tim, Matthias]
-
-* g_intern_string, g_intern_static_string:
- - New functions to intern strings. These are now used
- by GObject to avoid duplicating static strings
- [Matthias]
-
-* g_thread_foreach:
- - New function to iterate over all GThreads
- [Tim, Matthias]
-
-* g_date_set_time_t, g_date_set_time_val:
- - New functions to set a GDate from a time_t or
- GTimeVal value. g_date_set_time has been deprecated
- in favor of these.
- [Roger Leigh]
-
-* g_snprintf and g_vsnprintf:
- - These functions are no longer declared in gprintf.h,
- since they are in glib.h
- [Matthias]
-
-Overview of Changes from GLib 2.8.0 to GLib 2.8.1
-=================================================
-* Optimize single-character insertions in GString [Ross Burton]
-* Fix build problems on OS X
-* Fix build problems on Win32 [Tor Lillqvist, Hans Breuer]
-* Other bug fixes [Matthew F. Barnes, Stepan Kasal]
-* Documentation improvements [Tristan van Berkom, Behnam
- Esfahbod, Gustavo Carneiro, Stepan Kasal, Matthias]
-* New and updated translations (ca,cy,ko,ro,uk)
-
-Overview of Changes from GLib 2.7.7 to GLib 2.8.0
-=================================================
-* Make g_value_transform() handle enum values
- correctly on ppc64. [Michael Lorenz]
- (Third-party code accessing enumeration values
- in GValues should also be changed to access
- v_long, not v_int, in order to work on bigendian
- 64bit machines.)
-* Make g_flags_get_first_value() handle a value
- of 0 meaningfully. [Tim-Philipp Müller]
-
-Overview of Changes from GLib 2.7.6 to GLib 2.7.7
-=================================================
-* Make atomic operations on s390 work [Matthias]
-* Fix C++ guards in gstdio.h [Tor Lillqvist]
-
-Overview of Changes from GLib 2.7.5 to GLib 2.7.6
-=================================================
-* Add native implementations of atomic operations
- on s390 [Matthias]
-* Make atomic reference counting of closures
- work on s390 [Matthias]
-* Avoid an infinite loop in g_convert_with_iconv().
- [Sebastian Bacher]
-* Documentation improvements [Ross Burton]
-
-Overview of Changes from GLib 2.7.4 to GLib 2.7.5
-=================================================
-* Thread-related changes
- - Fix build issues on HP-UX [Paul Cornett]
- - Threadsafe access to flags stored in datasets [Tim Janik]
- - Fix several issues with atomic refcounting for
- closures, objects and paramspecs [Tim]
- - Improve tests for atomic refcounting changes [Tim]
-* Fix handling of stateful encodings in g_convert_* [Matthias]
-* Fix translation of GOption help output [Dan Winship]
-* Catch format errors in translations. This may cause
- "make check" to fail when using older versions
- of gettext [Matthias]
-* Win32 bug fixes [Tor Lillqvist]
-* Documentation improvements [Ross Burton, Jochen Baier,
- Matthias, Tim]
-* New and updated translations (de,fi,gu,pl,pt,tr,zh_TW)
-
-Overview of Changes from GLib 2.7.3 to GLib 2.7.4
-=================================================
-* Fix g_atomic_pointer_compare_and_exchange
- on Sparc64 [Gert Doering]
-* Fix a hang in g_thread_pool_free. [Hong Jen Yee]
-* Win32 bug fixes [Tor Lillquist]
-* Other bug fixes [Benoit Dejean, Manish Singh]
-* Documentation improvements [Bryan Silverthorn,
- Callum McKenzie]
-* New and updated translations (de,lt,sq,zh_CN)
-
-Overview of Changes from GLib 2.7.2 to GLib 2.7.3
-=================================================
-* GOption
- - Allow callbacks with optional arguments [Pawel Sliwowski]
- - Allow to turn off the automatic long option name
- disambiguation [Adam McLaurin]
- - Only allow printable ASCII as short option names [Matthias]
-* Win32
- - Build fixes [Tor Lillqvist]
- - Rewrite iochannel socket implementation [Tor]
-* GObject
- - Threadsafety improvements; in particular, refcounting
- of objects is done atomically now. [Wim Taymans, Tim Janik]
-* Bug fixes [Morten Welinder, Matthias, Wim Taymans]
-* Documentation improvements [Richard Laager, Matthias]
-* New and improved translations (bf,cs,hu,nb,nl,no)
-
-Overview of Changes from GLib 2.7.1 to GLib 2.7.2
-=================================================
-* Win32 build fixes [Hans Breuer]
-* Bug fixes [Mikael Magnusson]
-* Documentation improvements [Matthias Clasen]
-* New and updated translations (en_CA,es,et,ja,sr,sr@Latn,zh_TW)
-
-Overview of Changes from GLib 2.7.0 to GLib 2.7.1
-=================================================
-* GOption
- - Allow callback arguments without parameters [Dan Winship]
-* GMappedFile: an mmap wrapper [David Schleef, Behdad Esfahbod]
-* Misc new functions:
- - g_get_host_name [Tor Lillqvist]
- - g_mkdir_with_parents [Tor]
- - g_build_pathv, g_build_filenamev [Todd A. Fisher,
- Matthias Clasen]
-* Bug fixes [Roger Leigh, Masatake YAMATO, Kjartan Maraas,
- Manish Singh, Tor, Murray Cumming, Kian Duffy, Morten Welinder]
-* Documentation improvements [Hong Gang XU, Dan Winship, Matthias]
-* New and updated translations (bg,cs,da,en_CA,es,et,nb,nl,no,
- sk,th,zh_TW)
-
-Overview of Changes from GLib 2.6.x to GLib 2.7.0
-=================================================
-* GKeyFile
- - Add unit tests [Matthias Clasen, Suren A. Chilingaryan]
- - Accept \r\n as line end [Bastian Nocera]
- - Don't interpret leading zeros as octal numbers. [Matthias]
- - Make key and group removal work [David Hoover, Matthias Hasselmann]
-* GOption
- - Improve formatting of --help output [Matthias, Noah Levitt]
- - Accept -? [Matthias]
- - Warn about duplicate main groups [Jeff Franks]
- - Treat '-' as non-option argument [Tim Musson, Thomas Leonard]
- - Report missing arguments as errors [Björn Lindqvist]
- - Add a boxed type for GDate [Tim-Philipp Müller]
-* GTree
- - g_tree_remove() and g_tree_steal() return status information [Matthew F. Barnes]
-* Stdio wrappers
- - Work regardless of large file support [Manish Singh]
- - Add g_access(), g_chmod(), g_creat(), g_chdir [Tor Lillqvist]
-* GObject
- - Implement "toggle references" to help language bindings [Owen Taylor]
- - Allow to mark names, nicks and blurbs of pspecs as static [Ben Maurer, Matthias]
- - Make pspec lookup a bit faster [Morten Welinder]
-* Add g_listenv() to list all set environment variables [Hans Petter Jansson]
-* Add g_file_set_contents() to atomically write a file. [Søren Sandmann,
- Sven Neumann, Manish, Alexis S. L. Carvalho]
-* Add g_try_malloc(), g_try_new(), g_try_new0() and g_try_renew() [Stefan Kost]
-* Add g_utf8_collate_key_for_filename() to sort filenames taking
- extensions and numeric suffixes into account. [Ole Laursen, Alex Larsson]
-* Add G_GNUC_NULL_TERMINATED to mark varargs function with
- NULL-terminated argument lists. [Marc Meissner]
-* Win32 changes
- - Improved debugability [Ulf Lamping, Hans Breuer]
- - Make filename handling more robust [Tor, Billy Skaggs]
- - Improve g_get_system_data_dirs() [Tor]
- - Use more precise timers [Tor]
- - Build fixes [Kazuki Iwamoto, Hans, Tor, Robert Ögren]
-* Other bug fixes [Roger Leigh, Owen, Matthias, Morten, Kjartan Maraas,
- Pawel Sakowski, Tor, Simon Budig, Ed Avis, Manish, Nicolas Laurent,
- Bastien, Fabrício Barros Cabral, Michael Banck, Daniel Atallah,
- J. Ali Harlow, Tim Janik, Hazael Maldonado Torres, Sven, Jon-Kare Hellan,
- Dave Benson, Tommi Komulainen, Benjamin Otte, Brian Cameron, Changwoo Ryu,
- Christian Biere, Noah, Benoît Carpentier]
-* Documentation improvements [Vincent Untz, Matthias, Tim-Philipp Müller,
- Morten, Matthew, Federico Mena Quintero, Sebastian Bacher, Oliver Sessink,
- Stefan, Jared Lash, Tor, Owen, Daniel Vaillard, Mathieu Lacage]
-* New and updated translations (ca,cs,da,el,en_CA,en_GB,es,et,eu,fa,fr,gl,
- hu,id,it,lt,mn,ne,nl,pl,pt,pt_BR,ro,rw,sk,sq,sr,sr@Latn,tl,uk,xh,zh_CN)
-
-Overview of Changes from GLib 2.6.0 to GLib 2.6.1
-=================================================
-* GOption
- - Make gtk_init(NULL, NULL) work again [Marcin Krzyzanowski]
- - Improve handling of -- [Matthias Clasen]
- - Don't show G_OPTION_REMAINING in --help output [Matthew F. Barnes]
-* g_find_program_in_path() doesn't return directories [Tommi Komulainen]
-* Add gmodule-export-2.0.pc [Matthias]
-* Win32 changes
- - Improve hangling of UNC paths [Tor Lillqvist]
- - g_getenv(), g_setenv(), g_unsetenv(), g_find_program_in_path()
- take and return UTF-8 now [Tor]
- - Make g_file_test() work more reliably, and use PATHEXT
- when check for executables [Tor]
- - Build and cross-compilation fixes [J. Ali Harlow]
-* Other bug fixes [Jens Hatlak, Morten Welinder,
- Tor, Kalpesh Shah, Adrian Bunk]
-* Documentation improvements [Marcin Krzyzanowski, Tor, Crispin
- Flowerday, Mariano Suárez-Alvarez, Christian Biere, Danny Milo,
- Vincent Untz, Bastien Nocera]
-* New and updated translations (cy,de,nl,ru,sq,sv)
-
-Overview of Changes from GLib 2.4.x to GLib 2.6.0
-=================================================
-
-* Major new APIs
- - GOption, a commandline option parser
- - GKeyFile, a parser/editor for the .ini like files
- - Functions to support the XDG basedir specification
- - Wrappers for common POSIX pathname functions to handle filename
- encodings consistently. On Windows, these use UTF-8.
-
-* Miscellaneous new functions
- - g_filename_display_name() converts filenames in displayable UTF-8 strings
- - g_uri_list_extract_uris() splits uri lists
- - g_date_get_iso8601_week_of_year() gets ISO 8601 week numbers
- - g_log_set_default_handler() installs an alternate default log handler
- - g_get_language_names() obtains a list of applicable locale names
- - g_strv_length() calculates the length of NULL-terminated string arrays
- - g_win32_get_windows_version() determines the Windows version
- - G_GNUC_INTERNAL marks functions as non-exported
- - glib_check_version() checks the GLib version at runtime
- - g_debug() completes the family of logging functions
-
-* Performance improvements
- - Optimize g_utf8_validate()
- - Optimize g_markup_parse_context_parse()
- - Reduce signal connection complexity from O(n) to O(1)
- - Get rid of many PLT entries for internally used exported symbols
- - Reduce code size by removing literal strings from g_return_if_fail()
-
-* Other changes
- - On Windows, GLib functions that take file name arguments now require
- those to be in UTF-8. Functions that return file names return UTF-8.
- - Use higher precision for mathematical constants
- - Don't convert to/from UTF-8 in g_filename_to_uri/g_filename_from_uri
- - Support ll as printf format modifier for long long on all platforms
- - Clean up the ABI and enforce the list of exported symbols
- - Add a .pc file for using gmodule in libraries
- - Require ngettext
-
-Overview of Changes from GLib 2.5.7 to GLib 2.6.0
-=================================================
-* GOption: Don't list help options if group-specific
- options have been requested [Glynn Foster]
-* Make g_get_language_names() track locale changes [Christian Persch]
-* Win32 bug fixes [Tor Lillqvist]
-* Bug fixes [Philippe Blain, Owen Taylor, Sebastian Wilhelmi]
-* New and updated translations (da,es,ja,lt,zh_CN)
-Bugs fixed: 159530,100697,160271,160645,157255
-
-Overview of Changes from GLib 2.5.6 to GLib 2.5.7
-=================================================
-* Optimize g_utf8_validate() [Owen Taylor, Matthias Clasen]
-* Optimize g_markup_parse_context_parse() [Havoc Pennington,
- Morten Welinder]
-* Reduce signal connection complexity from O(n) to O(1)
- [Sven Neumann]
-* Add a .pc file for using gmodule in libraries [Owen]
-* Add G_GNUC_MALLOC to mark functions returning newly
- allocated memory [Matthias]
-* Win32 bug fixes [Hans Breuer, Tor Lillqvist, Robert Ögren,
- Bruce Hochstetler]
-* Bug fixes [Kazuki IWAMOTO, Matthias, Manish Singh, Morten,
- Frederic Crozat, Tor]
-* Documentation improvements [Matthias, Tor, Owen]
-* New and updated translations (cs,da,de,en_CA,en_GB,es,nb,nl,sq,zh_CN)
-
-Overview of Changes from GLib 2.5.5 to GLib 2.5.6
-=================================================
-* GOption
- - Add G_OPTION_FLAG_REVERSE to allow options
- which unset a boolean variable [Tor Lillqvist]
-* GChildWatch
- - Use sigaction instead of signal [Jonas Jonnson,
- Archana Shah]
- - Make the very first SIGCHLD work [Gustavo Carneiro]
-* Bug fixes [Morten Welinder, Tor, David MacLachlan,
- Manish Singh, J. Ali Harlow]
-* Documentation improvements [Matthias Clasen, Tor]
-* Updated translations (da,ja,tr,zh_CN)
-
-Overview of Changes from GLib 2.5.4 to GLib 2.5.5
-=================================================
-* GKeyFile
- - Cleanups, add more error checking [Ray Strode]
- - Fall back to the untranslated string when getting
- locale strings [Mark McLoughlin]
-* GOption
- - Document GOption [Matthias Clasen]
- - Better support for rest arguments [Owen Taylor, Matthias]
- - Handle conflicts between groups [Matthias]
-* Add g_lstat() to the stdio wrappers [Tor Lillqvist]
-* Add g_filename_display_name() to convert filenames
- in displayable UTF-8 strings [Alex Larsson, Matthias]
-* Win32 bug fixes [Kazuki IWAMOTO, Hans Breuer, Tor]
-* Bug fixes [Christophe Fergeau, Morten Welinder,
- Owen, Kjartan Maraas, Mark]
-* Documentation improvements [Matthias, Tor]
-
-Overview of Changes from GLib 2.5.3 to GLib 2.5.4
-=================================================
-Add GKeyFile, a parser/editor for the .ini like files used in various
- freedesktop.org specifications. [Ray Strode]
-Make the handling of filename encodings consistent across all
- GLib functions, introduce wrappers for common POSIX
- functions which accept the same filename encoding. [Tor Lillqvist,
- Owen Taylor]
-GOption
- - Rename g_context_option_error_quark() to a more language-binding
- friendly name [Murray Cumming]
- - Accept backslashes in filenames on Win32 [Tor Lillqvist]
-* Strip the internal aliasing prefix IA__ from function names in
- assertions [Matthias Clasen]
-* Add a function to split uri lists. [Matthias]
-* Win32 bug fixes
- - Don't open console windows [Tor]
-* Other bug fixes [Philippe Blain, Robert Ögren, Hidetaka Iwai, Matthias,
- Morten Welinder, Mats-Ola Persson, Tor, Nickolay V. Shmyrev, Kjartan Maraas,
- Anders Carlsson, Tim-Philipp Müller, Lucas Rocha, Andrea Campi, Manish
- Singh, Thomas Fitzsimmons, Kazuki IWAMOTO]
-* Documentation improvements [Matthias, Linus Walleij, Nickolay, Philippe,
- Adam Hooper, Gustavo Carneiro]
-* New and updated translations (cs,en_CA,en_GB,ja,nb,nl,or,sr,sr@Latn,sq)
-
-Overview of Changes from GLib 2.5.2 to GLib 2.5.3
-=================================================
-* GOption
- - set the program name from argv[0] [Masatake YAMATO]
- - make contexts work without a main group [Anders Carlsson]
-* Performance
- - Get rid of many PLT entries for internally used exported symbols,
- and clean up the ABI at the same time and make make check check the
- list of exported symbols. [Matthias Clasen]
-* Add API to get ISO 8601 week numbers [Niklas Lundell]
-* Add API to install an alternate default log handler [Darin Adler]
-* Add API to obtain a list of applicable locale names [Hidetoshi Tajima]
-* Reduce code size bloat by removing literal strings from
- the g_return_if_fail() macros [Owen Taylor]
-* Add g_strv_length [Tim-Philipp Müller]
-* Win32 changes
- - Add API to determine the Windows version [Tor Lillqvist]
-* Other bug fixes [Stepan Kasal, Anders, Tor, Kazuki Iwamoto,
- Manish Singh]
-* Documentation improvements [Morten Welinder, Matthias]
-* New and updated translations (es,nn,ro)
-
-Overview of Changes from GLib 2.5.1 to GLib 2.5.2
-=================================================
-* Add G_GNUC_INTERNAL macro [Arjan van de Ven]
-* Add GOption, a commandline option parser [Anders Carlsson]
-* Add glib_check_version [Michael Natterer]
-* Add XDG basedir API [Ray Strode]
-* Require ngettext [Danilo Segan]
-* Bug fixes [Manish Singh, Ray Strode, Vincent Noel,
- Jon-Kare Hellan, Jody Goldberg]
-* Win32 bug fixes [Tor Lillqvist, Hans Breuer, Peter Zelezny]
-* Documentation improvements [Matthias Clasen, Vincent Untz, Christian Persch]
-* New and updated translations (bs,eu,fi,gu,ne,pa)
-
-Overview of Changes from GLib 2.5.0 to GLib 2.5.1
-=================================================
-
-* Bug fixes [Oliver Guntermann, Sven Neumann, James
- Henstridge, Hiroyuki Ikezoe, Matthias Clasen, Robert
- Ögren, Tommi Komulainen]
-* Documentation improvements [Soeren Sandmann,
- Christophe Fergeau, Danek Duvall]
-* New and updated translations (eu,hi)
-
-Overview of Changes from GLib 2.4.1 to GLib 2.5.0
-=================================================
-
-* New functions g_debug [Sven Herzberg]
-* Use higher precision for mathematical constants [Morten
- Welinder]
-* Don't convert to/from UTF-8 in g_filename_{to,from}_uri
- [Federico Mena Quintero]
-* Win32
- - Handle empty digit string in printf() functions
- correctly [Tor Lillqvist]
- - Support ll as format modifier for long long [Tor]
- - Be more careful about HOME [Tor, Ivan Wong]
- - Bug fixes [John Ehresman]
-* Miscellaneous bug and portability fixes [Danilo Segan,
- Owen Taylor, Nikolai Weibull, Benoît Carpentier, Morten
- Welinder, Manish Singh, Sven Neumann, Julio M. Merino Vidal,
- Kaz Sasayama, Murray Cumming, Federico, Mariano Suarez-Alvarez]
-* Documentation updates [Matthias Clasen, Crispin Flowerday,
- Tommi Komulainen, Federico Mena Quintero, Ed Griffiths]
-* New and updated translations (ja,ne,no,wa)
-
-Overview of Changes from GLib 2.4.0 to GLib 2.4.1
-=================================================
-
-* Win32 bug fixes [Tor Lillqvist, Roger Leigh, John Ehresman]
-* Miscellaneous bug and portability fixes [Owen Taylor,
- Matthias Clasen, Jonas Jonsson, Christian Krause,
- Nickolay V. Shmyrev, Christophe Saout, Philippe Blain,
- Piotr Klaban]
-* Documentation updates [Matthias]
-* New and updated translations (ca,cs,cy,el,en_CA,en_GB,es,eu,fi,
- fr,gu,he,id,nl,pt,pl,ru,sr,sr@ije,sr@Latn,sv,uk)
-
-Overview of Changes from GLib 2.3.6 to GLib 2.4.0
-=================================================
-
-* Handle invalid-UTF-8 in g_log() properly [Matthias Clasen]
-* Win32 bug fixes [Tor Lillqvist, Bruce Hochstetler]
-* Miscellaneous bug and portability fixes [Olivier Biot, David L. Cooper II,
- Kjartan Maraas, Frédéric L. W. Meunier, Christof Petig, Manish Singh,
- Sebastian Wilhelmi]
-* Documentation updates [Owen]
-* Updated translations (hr,ro)
-
-Overview of Changes from GLib 2.3.5 to GLib 2.3.6
-=================================================
-
-* GAtomic bug fixes [Sebastian Wilhelmi, Mark McLoughlin]
-* GMain threading fixes and improvements [Sebastian]
-* Win32 [Tor Lillqvist]
- - restore some symbols extraneously exported from gobject to maintain ABI compatibility
- - Misc build improvements and fixes [Tor, Cedric Gustin, Hans Breuer]
-* Documentation updates [Sebastian, Takeshi AIHANA, Matthias, Sven Herzberg]
-* New and updated translations (be,es,fi,ga,pa,sr@ije,zh_CN)
-
-Overview of Changes from GLib 2.3.3 to GLib 2.3.5
-=================================================
-
-* Make glib-mkenums parse initializers with macros. [Matthias Clasen, muppet]
-* Respect locale era in g_date_set_parse(). [Theppitak Karoonboonyanan]
-* Add atomic operations and use it for the async queue and
- gonce implementation. [Sebastian Wilhelmi]
-* Documentation improvements [Sebastian, Matthias, Sven Herzberg]
-* Add g_main_depth() for finding the recursion depth of the main
- loop [Owen Taylor, Tim Janik, Stefan Westerfeld]
-* Add g_spawn_close_pid(), needed on win32 [J. Ali]
-* Win32 fixes. [Hans Breuer, J. Ali Harlow]
-* Misc bugfixes [Sebastian, Matthias, Balazs Scheidler, Owen]
-* Updated translations (cy,et,ga,sq)
-
-Overview of Changes from GLib 2.3.2 to GLib 2.3.3
-=================================================
-
-* Add a native AIX gmodule implementation. [Laurent Vivier]
-* Add g_node_copy_deep(). [James M. Cape, Matthias Clasen]
-* Extend GQueue API to match the GList API. [Soeren Sandmann]
-* Add g_hash_table_find(). [Tim Janik]
-* Add a G_MODULE_BIND_LOCAL flag. [David Schleef]
-* Inline g_string_append_c() when possible. [Owen Taylor, Tim]
-* Wrap waitpid() as a GSource. [Jonathan R. Blandford]
-* Add g_completion_complete_utf8(). [Theppitak Karoonboonyanan,
- Matthias]
-* Add g_strsplit_set(). [Soeren]
-* Documentation improvements. [Vincent Untz, Sebastian Wilhelmi,
- Soeren, Matthias]
-* Win32 build fixes. [Tor Lillqvist]
-* Misc bugfixes [Manish Singh, Noah Levitt, Simon Josefsson,
- Morten Welinder, Damien Carbery, Julio M. Merino Vidal, Sebastian,
- Matthias]
-* Updated translations (nn,cs,it,ko,sq,ms,az,hr,uk,sr,sr@Latn,sq,ta)
-
-Overview of Changes from GLib 2.3.1 to GLib 2.3.2
-=================================================
-
-* Add G_MAXSIZE. [Manish Singh]
-* Add g_rand_new_with_seed_array(), g_rand_set_seed_array(),
- implementing the init-by-array functionality of the
- original mersenne twister. Add g_rand_copy(). Improve seeding.
- [George Lebl]
-* Add a lowercase_name option to glib-mkenums. [Murray Cumming]
-* Add g_ptr_array_foreach(). [Matthias Clasen]
-* Add g_timer_continue(). [Tim-Philipp Müller]
-* Fix a threadsafety issue in mem chunks. [Matthias, Balazs Scheidler]
-* Fix g_filename_{to,from}_utf8() on Win32 and improve
- g_file_test() there too [Hans Breuer]
-* Add a boxed type for NULL-terminated string arrays. [Matthias]
-* Add G_DEFINE_TYPE() plus variants to ease the constuction
- of GObject boilerplate code. [Tim Janik]
-* Support & in password GECOS field [Matthias, Soeren Boll Overgaard]
-* Documentation improvements [Matthias, Manish]
-* Win32 build fixes [Hans]
-* Misc bug fixes [Damien Carbery, Matthias, Manish, Olivier Poncet,
- Zack Rusin]
-* Updated translations (ar,de,fa,ga,mn,nn,no,sq)
-
-Overview of Changes from GLib 2.3.0 to GLib-2.3.1
-=================================================
-
-* Add glib/gi18n.h and glib/gi18n-lib.h for common
- gettext support, including a Q_() macro for translation
- with context [Matthias Clasen]
-* Add a more flexible G_FILENAME_ENCODING variable
- as a replacement for G_BROKEN_FILENAMES [Matthias]
-* Fix the return value g_main_context_iterate() for
- newly ready sources [Padraig O'Briain]
-* Handle Hangul composition for normalization [Noah Levitt]
-* Add G_{MIN,MAX,MAXU}INT{8,16,32}. [Mark Jones, Matthias]
-* Add G_GSIZE_FORMAT/G_SSIZE_FORMAT [Manish Singh]
-* Add G_STRFUNC as a portable wrapper for __func__ [Tim Janik]
-* Documentation improvements [Matthias]
-* GObject [Tim Janik]
- - Support '-' in g_signal_connect()/disconnect() names
- like 'swapped-signal'.
- - Add g_type_class_peek_static() and use to optimize
- g_object_new() for static types [Tim]
- - Allow setting construct-only properties from within
- init() implementations
- - Enforce readability/writeability in g_object_set/get()
-* Fix bug with g_ascii_strtod and multi-byte separator.
- [Behdad Esfahbod, Roozbeh Pournader]
-* Misc bug fixes [Matthias, John Ehresman, Andrew Lanoix,
- Tor Lillqvist, Mark McLoughlin, Tim-Philipp Müller, Manish,
- Morten Welinder]
-* Updated translations (ca,cs,da,es,fr,ja,nn,no,pt,ru)
-
-Overview of Changes from GLib 2.2.x to GLib-2.3.0
-=================================================
-
-* Replace Trio printf by gnulib vasnprintf [Matthias Clasen]
-* Update Unicode data to Unicode 4.0 [Noah Levitt]
-* Support XML-safe formatted output with
- g_markup_[v]printf_escaped [Owen Taylor]
-* Add g_file_read_link to read symbolic links [Matthias]
-* Add g_unichar_get_mirror_char to obtain the
- mirrored variant of a character [Noah]
-* Support for one-time initialization functions.
- [Sebastian Wilhelmi]
-* Miscellaneous API additions: g_vasprintf
- g_string_chunk_insert_len, g_setenv, g_unsetenv [Matthias]
-* Docs improvements [Matthias]
-* Add support instance-private data on classed types
- [Mark McLoughlin, Tim Janik, Owen]
-* Optimize signal emissions [Soeren Sandmann, Tim]
-* Support a "default vtable" per interface [Tim]
-* Add support for properties on interfaces [Owen, Tim]
-* Miscellaneous API additions: g_value_take_string(),
- g_value_take_param(), g_value_take_object(),
- g_value_take_boxed(). [Matthias]
-* Win32 build fixes [Tor Lillqvist]
-
-Overview of Changes from GLib 2.1.5 to GLib-2.2.0
-=================================================
-
-* Fix a problem with g_thread_init() on 64-bit problems
- [Alceste Scalas, Sebastian Wilhelmi]
-* Add assembly implementations of byteswap macros
- for ia64 and x86_64. [Manish Singh]
-* IOChannel fixes for Win32 [Tor Lillqvist, Thorsten Maerz]
-* Updated translations (bg,ca,es,da,fi,lv,ru,sk)
-
-Overview of Changes from GLib 2.1.4 to GLib-2.1.5
-=================================================
-
-* Win32 bug fixes [Tor Lillqvist]
-* Various post-rewrite fixes for glib-gettext.m4 [Owen Taylor,
- Jody Goldberg, Kjartan Maraas, Johannes Stezenbach]
-* Ensure we have a GUINT64_FORMAT by pulling in Trio
- if necessary [Manish Singh]
-* Further Trio build fixes [Matthias Clasen, Owen]
-* Hack around gcc, libtool issues with -pthread [Owen]
-* Docs improvements [Matthias]
-* Bug and portability fixes
-* Updated and new translations (bg,de,fi,fr,sq,fr)
-
-Other contributors: Kai Poitschke, Morten Welinder
-
-Overview of Changes from GLib 2.1.3 to GLib-2.1.4
-=================================================
-
-* autoconf changes to make it possible to cross compile
- GLib. [Owen Taylor, Dan Kegel, Amy Lin, Dimi Shahbaz,
- Johannes Stezenbach]
-* Use libintl when it has bind_textdomain_codeset() and
- GLib doesn't. [Owen]
-* Improve generation of pseudo-random integers [Morten Welinder,
- Sebastian Wilhelmi]
-* Avoid literal UTF-8 in favor of octal escapes [Owen, Tomas Ogren]
-* Cleanup include order [Sven Neumann]
-* autoconf cleanups and bug fixes [Daniel, Matthias Clasen, Owen]
-* Doc fixes and additions [Matthias]
-
-Other contributors: James M. Cape, Frederic Crozat, Martin Gansser,
- Phuc LeHong, Manish Singh, Joshua Weage, Morten Welinder
-
-Overview of Changes from GLib 2.0.x to GLib-2.1.x
-=================================================
-
-* Add copy of the Trio library to build and use for printf() when
- system printf isn't good enough. Add g_printf()/etc. [Matthias Clasen]
-* Add g_str_has_suffix()/g_str_has_prefix() [Alex Larsson]
-* Add g_markup_parse_context_get_element() [Matthias]
-* Add g_utf8_strreverse [Matthias]
-* Add g_ascii_strtoull() [Tim Janik]
-* Support scanning of 64-bit values with GScanner [Tim]
-* Add g_set/get_application_name() [Havoc Pennington]
-* Add G_LIKELY()/G_UNLIKELY() macros for hinting branch probabilities.
- Use for g_return_if_fail(). [Matthias Clasen]
-* Add G_GNUC_DEPRECATED macro [Tom Tromey]
-* Improve the seeding algorithm of GRandom to avoid problems
- with certain pathological seeds. Support G_RANDOM_VERSION=2.0
- environment variable. [Sebastian Wilhelmi]
-* Improve thread configure checks, use -pthread where applicable
- [Sebastian]
-* Improve handlng of thread priorities [Sebastian]
-* Fix up parameter names that might shadow functions from
- system headers [Soeren Sandmann]
-* Clean up usage of deprecated functions [Manish Singh]
-* Docs fixes and improvements. In particular, include "Since" information.
- [Matthias, Soeren, Martin Schulze, Daryll Strauss, Bill Janssen,
- Owen Taylor, Morten Welinder].
-
-Overview of Changes in GLib 2.0.7
-=================================
-
-* Fix C++ warnings in gtype.h [Dom Lachowicz]
-* Fix g_type_fundamental_next() [Tim Janik]
-* Fix various missing includes of config.h [Morten Welinder]
-* Handle main loop initialization before g_thread_init [Sebastian Wilhelmi]
-* Various 64-bit fixes [Manish Singh]
-* Fix GPoll on Win32 [Tor Lillqvist, Herman Bloggs]
-* Fix bug with buffering on UTF-8 IOChannels [Daniel Elstner]
-* Misc bug and build fixes [Soren Andersen, Gustavo Carneiro, Tor,
- Tim, Havoc Pennington, Matthias Clasen, Sebastian Rittau,
- Masahiro Sakai, Arvind Samptur, HideToshi Tajima, Owen Taylor]
-* Updated and new translations (be,cs,de,*fa,it,lv,pt_BR,tr)
-
-Overview of Changes in GLib 2.0.6
-=================================
-
-* Fix problem with interface prerequisites [Jon Trowbridge, Dave Camp]
-* Clean up debug spew from GObject [Anders Carlsson]
-* Compiler warning fixes [David L. Cooper II]
-* Fix some problems with g_build_path() [Guillaume Chazarain, Owen Taylor]
-* Fixes for --disable-debug [Sebastian Wilhelmi]
-* Threading fixes [Sebastian Wilhelmi, Miroslaw Dobrzanski-Neumann,
- Rajkumar Sivasamy, Laurent Vivier]
-* Documentation fixes [Jacob Berkman, Manuel Clos, Jared Dukat,
- Sebastian Rittau, Linus Welleij]
-* Misc bug fixes [Anders Carlsson, Sam Couter, Morten Welinder, Owen]
-* Updated translations (bg,ko,vi)
-
-Overview of Changes in GLib 2.0.5
-=================================
-
-* Fix problem with interface prerequisites [Jon Trowbridge, Dave Camp]
-* Clean up debug spew from GObject [Anders Carlsson]
-* Compiler warning fixes [David L. Cooper II]
-* Fix some problems with g_build_path() [Guillaume Chazarain, Owen Taylor]
-* Fixes for --disable-debug [Sebastian Wilhelmi]
-* Threading fixes [Sebastian Wilhelmi, Miroslaw Dobrzanski-Neumann,
- Rajkumar Sivasamy, Laurent Vivier]
-* Documentation fixes [Jacob Berkman, Manuel Clos, Jared Dukat,
- Sebastian Rittau, Linus Welleij]
-* Misc bug fixes [Anders Carlsson, Sam Couter, Morten Welinder, Owen]
-* Updated translations (bg,ko,vi)
-
-Overview of Changes in GLib 2.0.4
-=================================
-
-* Fix some 64-bit problems. (George Lebl, David L. Cooper II)
-* Add note about Tru64 iconv to INSTALL. (Manuel Op de Coul)
-* Fix problem with timouts > MAXINT. (Tim Janik, Owen Taylor)
-* Updated translations (ca,es,fr,ja,gl,ms,nl,pl,pt,ru)
-
-Overview of Changes in GLib 2.0.3
-=================================
-
-* Handle sorting 0-length arrays (Ron Arts)
-* Threading fixes (Sebastian Wilhelmi)
-* Portability fixes (Miroslaw Dobrzanski-Neumann, Jacob Berkman, Gareth Pierce,
- Sebastian, Qingjiang Yuan)
-* Various fixes for glib-2.0.m4. (Jim Gettys, others.)
-* Locate right glib-genmarshal when cross-compiling. (Mitch Natterer)
-* Win32 fixes (Tor Lillqvist)
-* Try to fix g_get_charset() related segfaults. (Owen)
-* Fixes for gettext detection. (Dan Winship, HideToshi Tajima, Boyd Lynn Gerber,
- Andrew P. Lentvorski, Jr.)
-* Fix g_scanner_unexp_token() (Tim Janik, Sven Neumann)
-* g_markup fixes. (Matthias Clasen.)
-* Bug fixes and cleanups (Daniel Elstner, Matthias, Laszlo Peter, Morten Welinder,
- Wayne Schuller)
-
-Overview of Changes in GLib 2.0.1
-=================================
-
-* Portability fixes for Sun's Forte compiler [Erwann Chenede]
-* Performance improvements for GObject parameter lookup,
- g_filename_to/from_utf8() [Alex Larsson]
-* Actually check interface prerequisites [Matthias Clasen,
- Miroslaw Dobrzanski-Neumann]
-* Fix problem with glib-mkenums taking huge amounts of stack. [Owen Taylor]
-* Fix g_signal_handlers_disconnect_by_func() for C++ [Damien Sandras]
-* Fixes for g_log() and threading.
- [Sebastian Wilhelmi, Miroslaw Dobrzanski-Neumann, Tim Janik]
-* Make g_print(), g_printerr(), g_warning(), etc, convert from
- UTF-8 to the encoding of the locale [Sebastian Wilhelmi, Tim]
-* Fixes for GIOChannel on windows. [Tor Lillqvist]
-* Fix gsize/gint mismatches in giochannel.c [Miroslaw Dobrzanski-Neumann]
-* Fix file descriptor leak in g_file_get_contents() [Matthias]
-* Workaround iconv() problems on older Solaris [Lauri Alanko]
-* Fix warnings with gcc-3.1 about asm const [Cody Russel]
-* Minor bug fixes.
-
-Other contributors: Hans Breuer, LEE Sau Dan, Sven Neumann, Salmaso Raffaele,
- Akira Tagoh, Morten Welinder
-
-
-Overview of Changes in GLib 2.0.0
-=================================
-
-* Thread portability fixes [Sebastian Wilhelmi]
-* Documentation updates [Owen Taylor]
-* Make g_strerror(), g_strsignal() properly return UTF-8,
- call bind_text_domain_codeset() so that error strings
- are in UTF-8 as well. [Owen, Tor Lillqvist]
-
-Overview of Changes in GLib 2.0.0 rc1:
-======================================
-
-* Win32 fixes [Tor Lillqvist]
-* Portability fixes [Finlay Dobbie, Miroslaw Dobrzanski-Neumann]
-* Fix up g_date_strftime [Daniel Elstner]
-* Add some structure padding [Tim Janik]
-* Make g_get_homedir() prefer the users home directory to $HOME
-
-Other contributors: Matthias Clasen, Paolo Maggi, Christian Rose
-
-Overview of Changes in GLib 1.3.15:
-===================================
-
-* Speed up marshalers by using private access to GValue
- [Anders Carlsson, Tim Janik]
-* Reduce GValue to 2 elements [Tim]
-* Add G_DEBUG environment variable, G_DEBUG=fatal_warnings [Matthias Clasen]
-* Fixes for AIX compilation [Miroslaw Dobrzanski-Neumann]
-* Add padding to various structures [Owen Taylor, Tim]
-* Win32 fixes [Tor Lillqvist]
-
-Other contributors: James Henstridge, Ryan Lovett, Morten Welinder,
- Daniel Elstner
-
-Overview of Changes in GLib 1.3.14:
-===================================
-
-* Register value transformations for gint64, guint64 [Andy Wingo]
-* Build with large-file support [Sven Neumann, Owen Taylor]
-* Fix handling of hostnames in URI's [Darin Adler]
-* Main loop bug fixes [Havoc Pennington, Owen]
-* Doc fixes and improvements [Manish Singh, Tim Janik]
-* Support ' as attribute delimiters in GMarkup [Matthias Clasen]
-* Win32 fixes [Hans Breuer, Tor Lillqvist]
-* Threading bug and build fixes [Sebastian Wilhelmi, Miroslaw Dobrzanski-Neumann]
-* Miscellaneous bug fixes
-
-Other contributors: Matthias Clasen, James Henstridge, Mitch Natterer,
- Morten Welinder.
-
-Overview of Changes in GLib 1.3.13:
-===================================
-
-* Fix g_filename_to/from_uri for Win32 [Tor Lillqvist, Darin Adler]
-* Miscellaneous win32 fixes [Tor, Hans Breuer]
-* Fix thread options for gcc on AIX [Jerome Zago, Sebastian Wilhelmi]
-* Documentation improvements [Ron Steinke, Matthias, Sebastian]
-* Cache iconv converters as used by g_convert() [Jeffrey Stedfast]
-* Bug fixes [Sven Neumann, Owen Taylor, Matthias Clasen, Jeffrey,
- Laszlo Peter, Havoc Pennington, Tim Janik]
-
-Overview of Changes in GLib 1.3.12:
-===================================
-
-* Implement closure chaining, fixing up API (Tim Janik)
-* Closure chaining test case (James Henstridge)
-* Make GType long not int where both are equal width (Tim)
-* Win32 fixes and improvements (Hans Breuer, Tor Lillqvist)
-* Fixes for NetBSD. (Dan Winship)
-* Use snprintf() for g_printf_string_upper_bound() where possible. (Matthias Clasen)
-* Save space for GBSearchArray (Tim Janik)
-* Documentation improvements. (Matthias, Sven Neumann, Havoc Pennington)
-
-Other contributors: Darin Adler, Chris Blizzard, Anders Carlson, Daniel Elstner, Michael Meeks,
- Mark McLoughlin, Dave Neary, Manish Singh, Owen Taylor, HideToshi Tajima,
- Sebastian Wilhelmi.
-
-
-Overview of Changes in GLib 1.3.11:
-===================================
-
-* Win32 fixes [Hans Breuer, Tor Lillqvist]
-* Documentation improvements [Matthias Clasen]
-* Portable directory handling API [Hans]
-* Threading fixes [Sebastian Wilhelmi, Havoc Pennington]
-* Fix excess relocations in Unicode tables [Andrew Taylor]
-* Fix gpattern for UTF-8 [Matthias Clasen]
-* Support overriding class closures [Tim Janik]
-* Support for derivation from G_TYPE_POINTER [Owen Taylor]
-* Hide pointers to type information inside GType to reduce locking
- [Alex Larsson, Tim]
-* Adds check for direct inclusion of gobject/*.h [Owen]
-* GObject API cleanups [Tim]
-
-Other contributors: Darin Adler, Jacob Berkman, Daniel Egger, Eric Lemings,
- Michael Meeks, Mark McLoughlin, Arkadiusz Miskiewicz, Dan Winship
-
-
-Overview of Changes in GLib 1.3.10:
-===================================
-
-* Many Win32 fixes and improvements [Tor Lillqvist]
-* Documentation improvements [Matthias Clasen]
-* g_string_printfa() renamed to g_string_append_printf()
-* Use libcharset from libiconv to implement charset detection
- more portably. [Owen Taylor, Hidetoshi Tajima]
-* Add 64 bit type support to GObject [Joshua Pritikin, Mathieu Lacage, Owen]
-* Make support for 64 bit integers a requirement [Joshua]
-* GPattern improvements [Tim Janik, Matthias]
-* Locale independent g_ascii_strtod / g_ascii_dtostr [Alex Larsson]
-* Many bug fixes and minor tweaks.
-
-Other Contributors: Darin Adler, Jakub Jelinek, James Antill, Andrew Taylor,
- Ben Gertzfield, Elliot Lee, Manish Singh, Abel Cheung, Laszlo Peter,
- Sven Neumann, George Lebl, Raja Harinath, Sebastian Wilhelmi,
- Jacob Berkman
-
-
-Overview of Changes in GLib 1.3.9:
-==================================
-
-* Fixes for comparison of threads [Sebastian Wilhelmi]
-* Use vasprintf() when possible for g_strdup_printf [Matthias Clasen]
-* Win32 fixes [Tor Lillqvist, Hans Breuer]
-* Add a len argument to g_ascii_strup/strdown
-* Bug, portability fixes, cleanups.
-
-Other Contributors: Darin Adler, Katsuhiro Okuno, Joshua N. Pritikin
-
-
-Overview of Changes in GLib 1.3.8:
-==================================
-
-* Documentation updates [Owen]
-* Made GType interfaces overridable in derived types
-* Many win32 fixes [Tor Lillqvist]
-* Miscellaneous cleanups and fixes
-
-Other contributors:
- Darin Adler, Matthias Clasen, Ron Steinke, Hans Breuer, Alex Larsson
-
-
-Overview of Changes in GLib 1.3.7:
-==================================
-
-* Integrate GClosure support into the main loop [Owen Taylor]
-* More GSignal convenience functions (macros) [Sven Neumann, Tim Janik]
-* Introduced weak references for GObject [James Henstridge, Sven, Tim]
-* Minor hash table optimizations
-* Main loop and threading improvements [Sebastian Wilhelmi]
-* Added g_ascii_* functions to be used for locale insensitive UTF-8
- compliant code instead of old string functions [Darin Adler, Alex Larsson]
-* Add functions for Unicode case-conversion, normalization, and
- collation [Owen]* GString improvements [Owen]
-* Reworked the GIOChannel code [Hidetoshi Tajima, Ron Steinke]
-* Removed glib-config-2.0 in favour of pkgconfig [Sebastian]
-* Make code 64bit clean [Mark Murnane]
-* More G_CONST_RETURN fixes
-* Many improvements to the win32 code [Tor Lillqvist, Hans Breuer]
-* Miscellaneous bug and API fixes
-
-Other contributors:
- Michael Natterer, Christopher James Lahey, Padraig O'Briain,
- Matthias Clasen, Josh Pritikin, Steve Baker, Cesar Rincon, Garry R. Osgood,
- Michael Meeks, Laszlo Peter, Martin Baulig, Kjartan Maraas, Andrew Lanoix,
- Peter Williams
-
-
-Overview of Changes in GLib 1.3.6:
-==================================
-
-* Threads have a "return value" from g_thread_join
-* Removed ability to adjust thread stack size
-* Prefix warnings with progname/PID by default, change toggle for this to
- be an env variable G_MESSAGES_PREFIXED not a compile-time option
-* GMarkup speedups
-* GDate const, convenience fixups
-* Include test cases that headers are compilable by C++ compiler
-* Add ability to spawn processes with argv[0] != executable path.
-* g_strstr_len, g_strrstr, g_strrstr_len
-* Add length argument to g_utf8_strchr and g_utf8_strrchr.
-* Misc bug fixes
-
-
-Overview of Changes in GLib 1.3.5:
-==================================
-
-* Added an installed glib-mkenums Perl program for parsing enumeration
- declarations from header files.
-* Mark some additional deprecated functions.
-* Bug and Portability fixes
-
-
-Overview of Changes in GLib 1.3.4:
-==================================
-
-* Efficiency improvements for GThreadPool
-* A few bug fixes
-* Build fixes
-* Documentation improvements
-
-
-Overview of Changes in GLib 1.3.3:
-==================================
-
-GLib:
-
-* More user_data support in various functions.
-* Main loop API revamps to support per-thread main loops.
-* Unicode handling improvements.
-* Implemented debugging traps.
-* G_CONST_RETURN specification all over the place.
-* Various new small utility functions.
-* Random number generator precision improvements.
-* New configure option --disable-mem-pools.
-* Many Win32 improvements.
-* Added g_try_malloc() friends varinats.
-* Many documentation improvements.
-* Many threading improvements, support for dynamic allocation
- of static mutexes.
-* GHookLIst API cleanups.
-* Improved format support of GDate parser.
-* String function speed improvements with new g_stpcpy().
-* Hashtable API additions.
-* New GPatternSpec for shell-style pattern matching (from GtkPatternSpec).
-* Optimizations, cleanups, bug fixes.
-
-GObject:
-
-* Added many convenience functions.
-* GClosure and GParamSpec use float/sink ref-counting scheme now.
-* Reworked property change notification.
-* Binary searchable array cleanups, so it's widely usable now.
-* Added static content keeping for some GValue types.
-* Support for statically scoped signal parameters.
-* Extinguished property trailer args in set/get interface.
-* Added support for abstract types.
-* G_CONST_RETURN specification all over the place.
-* Split parameter exchange functionality into value transforms
- and parameter conversions.
-* Added signal emission hooks and signal accumulators.
-* Added interface prerequisites to support is_a (interface, object)
- relations.
-* Implemented GValueArray.
-* New types, boxed: G_TYPE_VALUE, G_TYPE_CLOSURE, G_TYPE_GSTRING
- GParamSpecs: G_TYPE_PARAM_PARAM, G_TYPE_PARAM_POINTER, G_TYPE_PARAM_CLOSURE,
- G_TYPE_VALUE_ARRAY, G_TYPE_PARAM_UNICHAR, G_TYPE_PARAM_VALUE_ARRAY.
-* Varrags value collection improvements.
-* Implemented debugging traps.
-* Made things thread-safe.
-* Many documentation improvements.
-* Many cleanups, optimizations and bug fixes.
-
-
-Overview of Changes in GLib 1.3.2:
-==================================
-
-GLib:
-
-* Win32 build improvements [Tor]
-* Improvements to error reporting
- (g_critical(), g_return_if_reached()) [Darin]
-* Add g_strlcpy/g_strlcat [David Wheeler]
-* New IO channel implementation for Win32 [Tor]
-* Make g_array_free, g_string_free return pointer to memory requested
- not to be freed. [Darin]
-* Added GError based error reporting for thread functions. [Sebastian]
-* Moved reference docs into GLib distribution. [Owen]
-* Added g_convert() for doing convenient character set conversions based
- on iconv. (GLib now requires libiconv or a native iconv.) [Havoc/Owen]
-* Various Unicode handling additions (g_ucs4_to_utf8, g_utf8_validate(),
- g_{locale,filename}_{to,from}_utf8) [Robert/Havoc/Owen]
-* Portability fixes for threading. [Sebastian]
-* Added convenient functions for launching new processes (g_spawn_*),
- and shell quoting/unquoting functions. [Havoc]
-* Split glib.h into many headers. [Sebastian]
-* Added a simple callback-based parser for XML-like files (GMarkup). [Havoc]
-* Fixed confusions between comparison functions that return <0, 0, >0
- and equaility functions that return FALSE,TRUE. [Sebastian]
-* Added safe/portable temporary file manipulation functions. [Tor]
-* autoconf improvements. [Raja]
-* Many documentation improvements.
-* Bug fixes.
-
-GObject:
-
-* Added boxed and pointer types. [Tim/Jonathan]
-* Added callback abstraction (GClosure) [Tim]
-* Added signal system (GSignal) [Tim]
-* Make GTypePlugin an interface [Tim]
-* Added GTypeModule - a simple GTypePlugin instantiation [Owen]
-* Bug fixes.
-
-
-What's new in GLib 1.3.1:
-=========================
-
-* New GObject library added including object system based on
- the GTK+ object system.
-* Functions for getting the properties of Unicode characters,
- computing the canonical decomposition and ordering combining
- characters aand manipulating UTF-8 string manipulation based
- on libunicode.
-* GString now properly handles embedded nuls.
-* Multiple fixes from the 1.2.x branch.
-* Upgrade to libtool 1.3.3
-* Full thread support (thread creation and destruction).
-* BeOS port, BeOS dynamic modules.
-* Many improvements to the Windows ports.
-* Improvements to the OS/2 port, OS/2 module support.
-* Double ended queue implementation.
-* GLib macros for printf() formatting, e.g. G_GULONG_FORMAT = "lu"
-* New configure option --enable-msg-prefix to prefix messages, warnings
- et ceteri with the program name and the process id.
-* New thread-safe random number generator Mersenne Twister.
-* g_strcompress() added, g_strescape() had a slight API change, and
- more tightly defined semantics.
-* the g_string(x) macro has been removed, #x may be used instead.
-
-
diff --git a/glib/README b/glib/README
index b97d7f4..5386180 100644
--- a/glib/README
+++ b/glib/README
@@ -1,7 +1,7 @@
General Information
===================
-This is GLib version 2.32.4. GLib is the low-level core
+This is GLib version 2.38.2. GLib is the low-level core
library that forms the basis for projects such as GTK+ and GNOME. It
provides data structure handling for C, portability wrappers, and
interfaces for such runtime functionality as an event loop, threads,
@@ -67,6 +67,41 @@ and attach the patch to that bug report.
Patches should be in unified diff form. (The -up option to GNU diff.)
+Notes about GLib 2.36
+=====================
+
+* It is no longer necessary to call g_type_init(). If you are
+ loading GLib as a dynamic module, you should be careful to avoid
+ unloading it, then subsequently loading it again. This never
+ really worked before, but it is now explicitly undefined behavior.
+ Note that if g_type_init() was the only explicit use of a GObject
+ API and you are using linker flags such as --no-add-needed, then
+ you may have to artificially use some GObject call to keep the
+ linker from optimizing away -lgobject. We recommend to use
+ g_type_ensure (G_TYPE_OBJECT) for this purpose.
+
+* This release contains an incompatible change to the g_get_home_dir()
+ function. Previously, this function would effectively ignore the HOME
+ environment variable and always return the value from /etc/password.
+ As of this version, the HOME variable is used if it is set and the
+ value from /etc/passwd is only used as a fallback.
+
+* The 'flowinfo' and 'scope_id' fields of GInetSocketAddress
+ (introduced in GLib 2.32) have been fixed to be in host byte order
+ rather than network byte order. This is an incompatible change, but
+ the previous behavior was clearly broken, so it seems unlikely that
+ anyone was using it.
+
+Notes about GLib 2.34
+=====================
+
+* GIO now looks for thumbnails in XDG_CACHE_HOME, following a
+ recent alignment of the thumbnail spec with the basedir spec.
+
+* The default values for GThreadPools max_unused_threads and
+ max_idle_time settings have been changed to 2 and 15*1000,
+ respectively.
+
Notes about GLib 2.32
=====================
diff --git a/glib/README.in b/glib/README.in
index 07b3185..3537b7f 100644
--- a/glib/README.in
+++ b/glib/README.in
@@ -67,6 +67,41 @@ and attach the patch to that bug report.
Patches should be in unified diff form. (The -up option to GNU diff.)
+Notes about GLib 2.36
+=====================
+
+* It is no longer necessary to call g_type_init(). If you are
+ loading GLib as a dynamic module, you should be careful to avoid
+ unloading it, then subsequently loading it again. This never
+ really worked before, but it is now explicitly undefined behavior.
+ Note that if g_type_init() was the only explicit use of a GObject
+ API and you are using linker flags such as --no-add-needed, then
+ you may have to artificially use some GObject call to keep the
+ linker from optimizing away -lgobject. We recommend to use
+ g_type_ensure (G_TYPE_OBJECT) for this purpose.
+
+* This release contains an incompatible change to the g_get_home_dir()
+ function. Previously, this function would effectively ignore the HOME
+ environment variable and always return the value from /etc/password.
+ As of this version, the HOME variable is used if it is set and the
+ value from /etc/passwd is only used as a fallback.
+
+* The 'flowinfo' and 'scope_id' fields of GInetSocketAddress
+ (introduced in GLib 2.32) have been fixed to be in host byte order
+ rather than network byte order. This is an incompatible change, but
+ the previous behavior was clearly broken, so it seems unlikely that
+ anyone was using it.
+
+Notes about GLib 2.34
+=====================
+
+* GIO now looks for thumbnails in XDG_CACHE_HOME, following a
+ recent alignment of the thumbnail spec with the basedir spec.
+
+* The default values for GThreadPools max_unused_threads and
+ max_idle_time settings have been changed to 2 and 15*1000,
+ respectively.
+
Notes about GLib 2.32
=====================
diff --git a/glib/aclocal.m4 b/glib/aclocal.m4
index edd8ba9..c15de1d 100644
--- a/glib/aclocal.m4
+++ b/glib/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -11,6 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
@@ -19,24 +20,22 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 8
-
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.12'
+[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.12.2], [],
+m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -52,21 +51,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.12.2])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
@@ -106,44 +103,19 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# This was merged into AC_PROG_CC in Autoconf.
-
-AU_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-AC_DIAGNOSE([obsolete], [$0:
- your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon
- 'ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
- you adjust the code. You can also remove the above call to
- AC_PROG_CC if you already called it elsewhere.])
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-])
-AU_DEFUN([fp_PROG_CC_STDC])
-
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
-
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
@@ -169,13 +141,12 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 17
# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -361,19 +332,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -402,7 +372,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -438,17 +408,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 19
-
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
@@ -461,7 +435,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -491,8 +465,7 @@ AC_SUBST([CYGPATH_W])
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
-[$0: two- and three-arguments forms are deprecated. For more info, see:
-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+ [$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
@@ -525,8 +498,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -546,21 +519,63 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX],
- m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
@@ -569,7 +584,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
@@ -591,20 +605,18 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 8
-
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -614,14 +626,12 @@ if test x"${install_sh}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
@@ -638,14 +648,12 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 7
-
# AM_MAINTAINER_MODE([DEFAULT-MODE])
# ----------------------------------
# Control maintainer-specific portions of Makefiles.
@@ -673,18 +681,14 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
]
)
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -727,50 +731,14 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
- [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 7
-
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
@@ -778,11 +746,10 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
-
# AM_MISSING_HAS_RUN
# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
@@ -795,8 +762,8 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing])
@@ -805,14 +772,12 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
@@ -836,13 +801,59 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# ---------------------------------------------------------------------------
@@ -871,7 +882,7 @@ AC_DEFUN([AM_PATH_PYTHON],
dnl Find a Python interpreter. Python versions prior to 2.0 are not
dnl supported. (2.0 was released on October 16, 2000).
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
+[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
AC_ARG_VAR([PYTHON], [the Python interpreter])
@@ -940,6 +951,25 @@ AC_DEFUN([AM_PATH_PYTHON],
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+ # Just factor out some code duplication.
+ am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x. See automake bug#10227.
+try:
+ import sysconfig
+except ImportError:
+ can_use_sysconfig = 0
+else:
+ can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+ from platform import python_implementation
+ if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
+ can_use_sysconfig = 0
+except ImportError:
+ pass"
dnl Set up 4 directories:
@@ -956,7 +986,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else
am_py_prefix=$prefix
fi
- am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
+ am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
case $am_cv_python_pythondir in
$am_py_prefix*)
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@@ -991,7 +1028,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else
am_py_exec_prefix=$exec_prefix
fi
- am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
+ am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
case $am_cv_python_pyexecdir in
$am_py_exec_prefix*)
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@@ -1039,14 +1083,12 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
sys.exit(sys.hexversion < minverhex)"
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
-
# AM_RUN_LOG(COMMAND)
# -------------------
# Run COMMAND, save the exit status in ac_status, and log it.
@@ -1060,14 +1102,12 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
-
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
@@ -1143,14 +1183,12 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
@@ -1205,14 +1243,12 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor 'install' (even GNU) is that you can't
@@ -1235,14 +1271,12 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -1256,14 +1290,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
@@ -1277,80 +1309,120 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4macros/attributes.m4])
+m4_include([m4macros/glibtests.m4])
m4_include([m4macros/libtool.m4])
m4_include([m4macros/ltoptions.m4])
m4_include([m4macros/ltsugar.m4])
diff --git a/glib/compile b/glib/compile
index 862a14e..a85b723 100755
--- a/glib/compile
+++ b/glib/compile
@@ -1,10 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-03-05.13; # UTC
+scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -113,6 +112,11 @@ func_cl_dashl ()
lib=$dir/$lib.lib
break
fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
done
IFS=$save_IFS
diff --git a/glib/config.guess b/glib/config.guess
index d622a44..dbfb978 100755
--- a/glib/config.guess
+++ b/glib/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2012-02-10'
+timestamp='2015-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-02-10'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches@gnu.org>.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -54,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -560,8 +579,9 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
@@ -801,10 +821,13 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
- i*:MSYS*:*)
+ *:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@@ -852,21 +875,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -879,59 +902,54 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -950,54 +968,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
- or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1201,6 +1228,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1227,19 +1257,31 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1256,7 +1298,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1330,157 +1372,6 @@ EOF
exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
cat >&2 <<EOF
$0: unable to guess system type
diff --git a/glib/config.h.in b/glib/config.h.in
index c50b947..09619ff 100644
--- a/glib/config.h.in
+++ b/glib/config.h.in
@@ -72,15 +72,9 @@
*/
#undef HAVE_ALLOCA_H
-/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
-#undef HAVE_ARPA_NAMESER_COMPAT_H
-
/* Define to 1 if you have the `atexit' function. */
#undef HAVE_ATEXIT
-/* Define to 1 if you have the <attr/xattr.h> header file. */
-#undef HAVE_ATTR_XATTR_H
-
/* Define if you have a version of the snprintf function with semantics as
specified by the ISO C99 standard. */
#undef HAVE_C99_SNPRINTF
@@ -129,6 +123,9 @@
/* we have the eventfd(2) system call */
#undef HAVE_EVENTFD
+/* Define to 1 if you have the `fallocate' function. */
+#undef HAVE_FALLOCATE
+
/* Define to 1 if you have the `fchmod' function. */
#undef HAVE_FCHMOD
@@ -171,6 +168,9 @@
/* Define to 1 if you have the `getpwuid' function. */
#undef HAVE_GETPWUID
+/* Define to 1 if you have the `getresuid' function. */
+#undef HAVE_GETRESUID
+
/* Define to 1 if you have the `getvfsstat' function. */
#undef HAVE_GETVFSSTAT
@@ -186,6 +186,9 @@
/* Define to 1 if you have the `hasmntopt' function. */
#undef HAVE_HASMNTOPT
+/* Define to 1 if you have the `if_indextoname' function. */
+#undef HAVE_IF_INDEXTONAME
+
/* Define to 1 if you have the `if_nametoindex' function. */
#undef HAVE_IF_NAMETOINDEX
@@ -208,6 +211,15 @@
/* Define if we have struct ip_mreqn */
#undef HAVE_IP_MREQN
+/* Define to 1 if you have the `issetugid' function. */
+#undef HAVE_ISSETUGID
+
+/* Define to 1 if you have the `kevent' function. */
+#undef HAVE_KEVENT
+
+/* Define to 1 if you have the `kqueue' function. */
+#undef HAVE_KQUEUE
+
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET
@@ -223,6 +235,9 @@
/* Define to 1 if you have the `lchown' function. */
#undef HAVE_LCHOWN
+/* Define if you have the __libc_enable_secure variable (GNU libc, eglibc) */
+#undef HAVE_LIBC_ENABLE_SECURE
+
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
@@ -271,9 +286,6 @@
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
/* We have AF_NETLINK sockets */
#undef HAVE_NETLINK
@@ -313,6 +325,12 @@
/* Have function pthread_condattr_setclock */
#undef HAVE_PTHREAD_CONDATTR_SETCLOCK
+/* Have function pthread_cond_timedwait_monotonic */
+#undef HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC
+
+/* Have function pthread_cond_timedwait_monotonic_np */
+#undef HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP
+
/* Define to 1 if the system has the type `ptrdiff_t'. */
#undef HAVE_PTRDIFF_T
@@ -322,15 +340,12 @@
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
+/* Define to 1 if you have the 'res_init' function. */
+#undef HAVE_RES_INIT
+
/* Define to 1 if you have the <sched.h> header file. */
#undef HAVE_SCHED_H
-/* Define to 1 if libselinux is available */
-#undef HAVE_SELINUX
-
-/* Define to 1 if you have the <selinux/selinux.h> header file. */
-#undef HAVE_SELINUX_SELINUX_H
-
/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
@@ -449,10 +464,19 @@
/* Define to 1 if you have the `symlink' function. */
#undef HAVE_SYMLINK
+/* Define to 1 if you have the `sysctlbyname' function. */
+#undef HAVE_SYSCTLBYNAME
+
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_DIR_H
+/* Define to 1 if you have the <sys/event.h> header file. */
+#undef HAVE_SYS_EVENT_H
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+#undef HAVE_SYS_FILIO_H
+
/* Define to 1 if you have the <sys/inotify.h> header file. */
#undef HAVE_SYS_INOTIFY_H
@@ -523,9 +547,6 @@
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
-/* Define to 1 if you have the <sys/xattr.h> header file. */
-#undef HAVE_SYS_XATTR_H
-
/* Define to 1 if you have the `timegm' function. */
#undef HAVE_TIMEGM
@@ -572,15 +593,6 @@
/* Have a working bcopy */
#undef HAVE_WORKING_BCOPY
-/* Define to 1 if you have the <wspiapi.h> header file. */
-#undef HAVE_WSPIAPI_H
-
-/* Define to 1 if xattr is available */
-#undef HAVE_XATTR
-
-/* Define to 1 if xattr API uses XATTR_NOFOLLOW */
-#undef HAVE_XATTR_NOFOLLOW
-
/* Define to 1 if you have the <xlocale.h> header file. */
#undef HAVE_XLOCALE_H
@@ -591,15 +603,9 @@
*/
#undef LT_OBJDIR
-/* Do we cache iconv descriptors */
-#undef NEED_ICONV_CACHE
-
/* didn't find fd_set */
#undef NO_FD_SET
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
@@ -621,12 +627,6 @@
/* define if posix_memalign() can allocate any size */
#undef POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS
-/* whether realloc (NULL,) works */
-#undef REALLOC_0_WORKS
-
-/* Define if you have correct malloc prototypes */
-#undef SANE_MALLOC_PROTOS
-
/* The size of `char', as computed by sizeof. */
#undef SIZEOF_CHAR
@@ -645,6 +645,9 @@
/* The size of `size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T
+/* The size of `ssize_t', as computed by sizeof. */
+#undef SIZEOF_SSIZE_T
+
/* The size of `void *', as computed by sizeof. */
#undef SIZEOF_VOID_P
@@ -665,6 +668,15 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Use no threads */
+#undef THREADS_NONE
+
+/* Use pthreads */
+#undef THREADS_POSIX
+
+/* Use w32 threads */
+#undef THREADS_WIN32
+
/* Using GNU libiconv */
#undef USE_LIBICONV_GNU
@@ -677,6 +689,28 @@
/* Define to use statvfs() */
#undef USE_STATVFS
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
@@ -697,12 +731,25 @@
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
-/* Make all glibc extensions visible */
-#undef _GNU_SOURCE
+/* defines how to decorate public symbols while building */
+#undef _GLIB_EXTERN
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Target the Windows XP API */
+#undef _WIN32_WINNT
+
/* Needed to get declarations for msg_control and msg_controllen on Solaris */
#undef _XOPEN_SOURCE
@@ -712,6 +759,9 @@
/* Needed to get declarations for msg_control and msg_controllen on Solaris */
#undef __EXTENSIONS__
+/* compiler supports atomic operations */
+#undef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
diff --git a/glib/config.sub b/glib/config.sub
index c894da4..6467c95 100755
--- a/glib/config.sub
+++ b/glib/config.sub
@@ -1,24 +1,18 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2012-02-10'
+timestamp='2015-01-01'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-02-10'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,7 +116,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
@@ -156,7 +149,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
@@ -225,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -253,21 +252,24 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | be32 | be64 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
- | c4x | clipper \
+ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
- | fido | fr30 | frv \
+ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -281,23 +283,26 @@ case $basic_machine in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | open8 \
- | or32 \
+ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
+ | riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -308,6 +313,7 @@ case $basic_machine in
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
@@ -322,7 +328,10 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -364,13 +373,13 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -379,11 +388,13 @@ case $basic_machine in
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -397,18 +408,22 @@ case $basic_machine in
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
+ | or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -426,6 +441,7 @@ case $basic_machine in
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
+ | visium-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -763,6 +779,9 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
@@ -782,11 +801,15 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -814,6 +837,10 @@ case $basic_machine in
basic_machine=powerpc-unknown
os=-morphos
;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
msdos)
basic_machine=i386-pc
os=-msdos
@@ -822,7 +849,7 @@ case $basic_machine in
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-msys
;;
mvs)
@@ -998,7 +1025,7 @@ case $basic_machine in
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
@@ -1013,7 +1040,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1340,29 +1371,29 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1486,9 +1517,6 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1537,6 +1565,12 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
tic54x-*)
os=-coff
;;
diff --git a/glib/configure b/glib/configure
index 4ecbde2..ca4cb05 100755
--- a/glib/configure
+++ b/glib/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for glib 2.32.4.
+# Generated by GNU Autoconf 2.69 for glib 2.38.2.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=glib>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='glib'
PACKAGE_TARNAME='glib'
-PACKAGE_VERSION='2.32.4'
-PACKAGE_STRING='glib 2.32.4'
+PACKAGE_VERSION='2.38.2'
+PACKAGE_STRING='glib 2.38.2'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=glib'
PACKAGE_URL=''
@@ -640,12 +640,11 @@ LIBOBJS
gio_INCLUDES
gmodule_INCLUDES
gobject_INCLUDES
-gthread_INCLUDES
glib_INCLUDES
config_h_INCLUDES
+GLIB_WARN_CFLAGS
+GLIB_HIDDEN_VISIBILITY_CFLAGS
GLIB_LINK_FLAGS
-HAVE_DBUS1_FALSE
-HAVE_DBUS1_TRUE
LTP_GENHTML
LTP
SHTOOL
@@ -656,18 +655,24 @@ G_THREAD_LIBS_EXTRA
G_THREAD_LIBS_FOR_GTHREAD
G_THREAD_LIBS
G_THREAD_CFLAGS
+THREADS_NONE_FALSE
+THREADS_NONE_TRUE
+THREADS_WIN32_FALSE
+THREADS_WIN32_TRUE
+THREADS_POSIX_FALSE
+THREADS_POSIX_TRUE
GTHREAD_COMPILE_IMPL_DEFINES
PLATFORM_WIN32_FALSE
PLATFORM_WIN32_TRUE
ENABLE_TIMELOOP_FALSE
ENABLE_TIMELOOP_TRUE
PLATFORMDEP
-XATTR_LIBS
HAVE_FEN_FALSE
HAVE_FEN_TRUE
+HAVE_KQUEUE_FALSE
+HAVE_KQUEUE_TRUE
HAVE_INOTIFY_FALSE
HAVE_INOTIFY_TRUE
-SELINUX_LIBS
GIO_MODULE_DIR
GIO
GSPAWN
@@ -686,6 +691,9 @@ HAVE_GOOD_PRINTF_TRUE
HAVE_NETLINK_FALSE
HAVE_NETLINK_TRUE
NETWORK_LIBS
+NAMESER_COMPAT_INCLUDE
+WSPIAPI_INCLUDE
+GLIBC21
HAVE_SUNSTUDIO_VISIBILITY_FALSE
HAVE_SUNSTUDIO_VISIBILITY_TRUE
HAVE_GNUC_VISIBILITY_FALSE
@@ -711,7 +719,6 @@ FGREP
SED
LIBTOOL
OBJDUMP
-DLLTOOL
AS
ICONV_LIBS
GETTEXT_PACKAGE
@@ -741,13 +748,16 @@ HAVE_GLIB_RUNTIME_LIBDIR_FALSE
HAVE_GLIB_RUNTIME_LIBDIR_TRUE
ABS_GLIB_RUNTIME_LIBDIR
GLIB_RUNTIME_LIBDIR
-GLIBC21
-EGREP
-GREP
-LIBTOOL_EXPORT_OPTIONS
+installed_testdir
+installed_test_metadir
+ENABLE_ALWAYS_BUILD_TESTS_FALSE
+ENABLE_ALWAYS_BUILD_TESTS_TRUE
+ENABLE_INSTALLED_TESTS_FALSE
+ENABLE_INSTALLED_TESTS_TRUE
MS_LIB_AVAILABLE_FALSE
MS_LIB_AVAILABLE_TRUE
ms_librarian
+DLLTOOL
RANLIB
NM
WINDRES
@@ -774,6 +784,8 @@ build_cpu
build
HAVE_GCC_FALSE
HAVE_GCC_TRUE
+EGREP
+GREP
CPP
am__fastdepCC_FALSE
am__fastdepCC_TRUE
@@ -803,13 +815,13 @@ GLIB_VERSION
GLIB_MICRO_VERSION
GLIB_MINOR_VERSION
GLIB_MAJOR_VERSION
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
-MAINT
-MAINTAINER_MODE_FALSE
-MAINTAINER_MODE_TRUE
am__untar
am__tar
AMTAR
@@ -874,17 +886,19 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
-enable_maintainer_mode
enable_silent_rules
+enable_maintainer_mode
enable_dependency_tracking
enable_debug
enable_gc_friendly
enable_mem_pools
enable_rebuilds
+enable_installed_tests
+enable_always_build_tests
with_runtime_libdir
enable_largefile
+with_python
with_libiconv
-enable_iconv_cache
enable_static
enable_shared
with_pic
@@ -894,11 +908,10 @@ with_sysroot
enable_libtool_lock
enable_included_printf
with_gio_module_dir
-enable_selinux
-enable_xattr
with_threads
enable_gcov
enable_Bsymbolic
+enable_compile_warnings
'
ac_precious_vars='build_alias
host_alias
@@ -1454,7 +1467,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures glib 2.32.4 to adapt to many kinds of systems.
+\`configure' configures glib 2.38.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1524,7 +1537,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of glib 2.32.4:";;
+ short | recursive ) echo "Configuration of glib 2.38.2:";;
esac
cat <<\_ACEOF
@@ -1532,11 +1545,11 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
--disable-maintainer-mode
disable make rules and dependencies not useful (and
sometimes confusing) to the casual installer
- --enable-silent-rules less verbose build output (undo: "make V=1")
- --disable-silent-rules verbose build output (undo: "make V=0")
--enable-dependency-tracking
do not reject slow dependency extractors
--disable-dependency-tracking
@@ -1546,9 +1559,11 @@ Optional Features:
--enable-gc-friendly turn on garbage collector friendliness [default=no]
--disable-mem-pools disable all glib memory pools
--disable-rebuilds disable all source autogeneration rules
+ --enable-installed-tests
+ Enable installation of some test cases
+ --enable-always-build-tests
+ Enable always building tests during 'make all'
--disable-largefile omit support for large files
- --enable-iconv-cache=[yes/no/auto]
- cache iconv descriptors [default=auto]
--enable-static[=PKGS] build static libraries [default=no]
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-fast-install[=PKGS]
@@ -1556,19 +1571,22 @@ Optional Features:
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-included-printf
use included printf [default=auto]
- --disable-selinux build without selinux support
- --disable-xattr build without xattr support
--enable-gcov enable coverage testing with gcov
--disable-Bsymbolic avoid linking with -Bsymbolic
+ --disable-compile-warnings
+ Don't use builtin compiler warnings
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-runtime-libdir=RELPATH
install runtime libraries relative to libdir
+ --with-python=PATH Path to Python interpreter; searches $PATH if only a
+ program name is given; if not given, searches for a
+ few standard names such as "python3" or "python2"
--with-libiconv=[no/gnu/native]
use the libiconv library
- --with-pic try to use only PIC/non-PIC objects [default=use
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot=DIR Search for dependent libraries within DIR
@@ -1659,7 +1677,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-glib configure 2.32.4
+glib configure 2.38.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1748,6 +1766,170 @@ fi
} # ac_fn_c_try_cpp
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=glib ##
+## ------------------------------------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
# ac_fn_cxx_try_compile LINENO
# ----------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
@@ -1899,79 +2081,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_func
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_cxx_try_cpp LINENO
# ------------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -2292,97 +2401,6 @@ rm -f conftest.val
} # ac_fn_c_compute_int
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------------------------------- ##
-## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=glib ##
-## ------------------------------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
# Tries to find if the field MEMBER exists in type AGGR, after including
@@ -2443,7 +2461,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by glib $as_me 2.32.4, which was
+It was created by glib $as_me 2.38.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2800,7 +2818,7 @@ ac_config_headers="$ac_config_headers config.h"
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
-am__api_version='1.12'
+am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -3001,8 +3019,8 @@ test "$program_suffix" != NONE &&
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
@@ -3013,15 +3031,15 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -3254,6 +3272,45 @@ else
fi
rmdir .tst 2>/dev/null
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
@@ -3276,7 +3333,7 @@ fi
# Define the identity of the package.
PACKAGE='glib'
- VERSION='2.32.4'
+ VERSION='2.38.2'
# Some tools Automake needs.
@@ -3301,93 +3358,132 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
-$as_echo_n "checking how to create a ustar tar archive... " >&6; }
-# Loop over all known methods to create a tar archive until one works.
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar plaintar pax cpio none'
-_am_tools=${am_cv_prog_tar_ustar-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- { echo "$as_me:$LINENO: $_am_tar --version" >&5
+
+# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5
+$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; }
+ if test $am_uid -le $am_max_uid; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ _am_tools=none
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5
+$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; }
+ if test $am_gid -le $am_max_gid; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ _am_tools=none
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
($_am_tar --version) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && break
- done
- am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x ustar -w "$$tardir"'
- am__tar_='pax -L -x ustar -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
- am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
- am__untar='cpio -i -H ustar -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_ustar}" && break
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_ustar}" && break
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
(tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
- rm -rf conftest.dir
- if test -s conftest.tar; then
- { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
($am__untar <conftest.tar) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
+ { echo "$as_me:$LINENO: cat conftest.dir/file" >&5
+ (cat conftest.dir/file) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
-if ${am_cv_prog_tar_ustar+:} false; then :
+ if ${am_cv_prog_tar_ustar+:} false; then :
$as_echo_n "(cached) " >&6
else
am_cv_prog_tar_ustar=$_am_tool
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
$as_echo "$am_cv_prog_tar_ustar" >&6; }
@@ -3395,6 +3491,49 @@ $as_echo "$am_cv_prog_tar_ustar" >&6; }
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
@@ -3462,11 +3601,11 @@ AM_BACKSLASH='\'
GLIB_MAJOR_VERSION=2
-GLIB_MINOR_VERSION=32
-GLIB_MICRO_VERSION=4
-GLIB_INTERFACE_AGE=4
-GLIB_BINARY_AGE=3204
-GLIB_VERSION=2.32.4
+GLIB_MINOR_VERSION=38
+GLIB_MICRO_VERSION=2
+GLIB_INTERFACE_AGE=2
+GLIB_BINARY_AGE=3802
+GLIB_VERSION=2.38.2
@@ -3479,23 +3618,23 @@ GLIB_VERSION=2.32.4
$as_echo "#define GLIB_MAJOR_VERSION 2" >>confdefs.h
-$as_echo "#define GLIB_MINOR_VERSION 32" >>confdefs.h
+$as_echo "#define GLIB_MINOR_VERSION 38" >>confdefs.h
-$as_echo "#define GLIB_MICRO_VERSION 4" >>confdefs.h
+$as_echo "#define GLIB_MICRO_VERSION 2" >>confdefs.h
-$as_echo "#define GLIB_INTERFACE_AGE 4" >>confdefs.h
+$as_echo "#define GLIB_INTERFACE_AGE 2" >>confdefs.h
-$as_echo "#define GLIB_BINARY_AGE 3204" >>confdefs.h
+$as_echo "#define GLIB_BINARY_AGE 3802" >>confdefs.h
# libtool versioning
-LT_RELEASE=2.32
-LT_CURRENT=3200
-LT_REVISION=4
-LT_AGE=3200
+LT_RELEASE=2.38
+LT_CURRENT=3800
+LT_REVISION=2
+LT_AGE=3800
LT_CURRENT_MINUS_AGE=0
@@ -4291,6 +4430,65 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
@@ -4621,6 +4819,328 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+ if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_safe_to_define___extensions__=yes
+else
+ ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
if test "$GCC" = "yes"; then
HAVE_GCC_TRUE=
HAVE_GCC_FALSE='#'
@@ -4738,6 +5258,10 @@ case "$host" in
LIB_EXE_MACHINE_FLAG=X64
;;
esac
+
+
+$as_echo "#define _WIN32_WINNT 0x0501" >>confdefs.h
+
;;
*)
glib_native_win32=no
@@ -4753,13 +5277,24 @@ esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_native_win32" >&5
$as_echo "$glib_native_win32" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Android" >&5
+$as_echo_n "checking for the Android... " >&6; }
+case $host in
+ *android*)
+ glib_native_android="yes"
+ ;;
+ *)
+ glib_native_android="no"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_native_android" >&5
+$as_echo "$glib_native_android" >&6; }
+
glib_have_carbon=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS X Carbon support" >&5
$as_echo_n "checking for Mac OS X Carbon support... " >&6; }
-
-
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4844,7 +5379,8 @@ else
fi
-if test "$glib_native_win32" = "yes"; then
+if test "$glib_native_win32" = "yes"; then :
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
set dummy ${ac_tool_prefix}windres; ac_word=$2
@@ -5127,15 +5663,16 @@ else
RANLIB="$ac_cv_prog_RANLIB"
fi
- # Extract the first word of "lib.exe", so it can be a program name with args.
-set dummy lib.exe; ac_word=$2
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ms_librarian+:} false; then :
+if ${ac_cv_prog_DLLTOOL+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$ms_librarian"; then
- ac_cv_prog_ms_librarian="$ms_librarian" # Let the user override the test.
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -5144,7 +5681,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ms_librarian="yes"
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -5152,13 +5689,12 @@ done
done
IFS=$as_save_IFS
- test -z "$ac_cv_prog_ms_librarian" && ac_cv_prog_ms_librarian="no"
fi
fi
-ms_librarian=$ac_cv_prog_ms_librarian
-if test -n "$ms_librarian"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ms_librarian" >&5
-$as_echo "$ms_librarian" >&6; }
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
@@ -5166,207 +5702,122 @@ fi
fi
- if test x$ms_librarian = xyes; then
- MS_LIB_AVAILABLE_TRUE=
- MS_LIB_AVAILABLE_FALSE='#'
-else
- MS_LIB_AVAILABLE_TRUE='#'
- MS_LIB_AVAILABLE_FALSE=
-fi
-
-
-if test "$glib_native_win32" != yes; then
- # libtool option to control which symbols are exported
- # right now, symbols starting with _ are not exported
- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
-else
- # We currently use .def files on Windows
- LIBTOOL_EXPORT_OPTIONS=
-fi
-
-
-if test "x$glib_have_carbon" = "xyes"; then
-
-$as_echo "#define HAVE_CARBON 1" >>confdefs.h
-
- LDFLAGS="$LDFLAGS -framework Carbon"
-fi
-
-if test "x$glib_have_cocoa" = "xyes"; then
-
-$as_echo "#define HAVE_COCOA 1" >>confdefs.h
-
- LDFLAGS="$LDFLAGS -framework Foundation"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
else
- ac_cv_path_GREP=$GREP
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+ # Extract the first word of "lib.exe", so it can be a program name with args.
+set dummy lib.exe; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ms_librarian+:} false; then :
$as_echo_n "(cached) " >&6
else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ if test -n "$ms_librarian"; then
+ ac_cv_prog_ms_librarian="$ms_librarian" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ms_librarian="yes"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
- fi
+ test -z "$ac_cv_prog_ms_librarian" && ac_cv_prog_ms_librarian="no"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
- $as_echo_n "(cached) " >&6
+fi
+ms_librarian=$ac_cv_prog_ms_librarian
+if test -n "$ms_librarian"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ms_librarian" >&5
+$as_echo "$ms_librarian" >&6; }
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
- ac_cv_gnu_library_2_1=yes
+
+fi
+ if test x$ms_librarian = xyes; then
+ MS_LIB_AVAILABLE_TRUE=
+ MS_LIB_AVAILABLE_FALSE='#'
else
- ac_cv_gnu_library_2_1=no
+ MS_LIB_AVAILABLE_TRUE='#'
+ MS_LIB_AVAILABLE_FALSE=
fi
-rm -f conftest*
+if test "x$glib_have_carbon" = "xyes"; then :
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
- GLIBC21="$ac_cv_gnu_library_2_1"
+$as_echo "#define HAVE_CARBON 1" >>confdefs.h
+
+ LDFLAGS="$LDFLAGS -Wl,-framework,Carbon"
+fi
-if test "x$GLIBC21" = "xyes"; then
+if test "x$glib_have_cocoa" = "xyes"; then
-$as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+$as_echo "#define HAVE_COCOA 1" >>confdefs.h
+ LDFLAGS="$LDFLAGS -Wl,-framework,Foundation"
fi
# Check whether --enable-debug was given.
@@ -5399,30 +5850,79 @@ else
fi
+
+ # Check whether --enable-installed-tests was given.
+if test "${enable_installed_tests+set}" = set; then :
+ enableval=$enable_installed_tests; case ${enableval} in
+ yes) ENABLE_INSTALLED_TESTS="1" ;;
+ no) ENABLE_INSTALLED_TESTS="" ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-installed-tests" "$LINENO" 5 ;;
+ esac
+fi
+
+ if test "$ENABLE_INSTALLED_TESTS" = "1"; then
+ ENABLE_INSTALLED_TESTS_TRUE=
+ ENABLE_INSTALLED_TESTS_FALSE='#'
+else
+ ENABLE_INSTALLED_TESTS_TRUE='#'
+ ENABLE_INSTALLED_TESTS_FALSE=
+fi
+
+ # Check whether --enable-always-build-tests was given.
+if test "${enable_always_build_tests+set}" = set; then :
+ enableval=$enable_always_build_tests; case ${enableval} in
+ yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;;
+ no) ENABLE_ALWAYS_BUILD_TESTS="" ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-always-build-tests" "$LINENO" 5 ;;
+ esac
+fi
+
+ if test "$ENABLE_ALWAYS_BUILD_TESTS" = "1"; then
+ ENABLE_ALWAYS_BUILD_TESTS_TRUE=
+ ENABLE_ALWAYS_BUILD_TESTS_FALSE='#'
+else
+ ENABLE_ALWAYS_BUILD_TESTS_TRUE='#'
+ ENABLE_ALWAYS_BUILD_TESTS_FALSE=
+fi
+
+ if test "$ENABLE_INSTALLED_TESTS" == "1"; then
+ installed_test_metadir=${datadir}/installed-tests/glib
+
+ installed_testdir=${libexecdir}/installed-tests/glib
+
+ fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable garbage collector friendliness" >&5
$as_echo_n "checking whether to enable garbage collector friendliness... " >&6; }
-if test "x$enable_gc_friendly" = "xyes"; then
+if test "x$enable_gc_friendly" = "xyes"; then :
+
$as_echo "#define ENABLE_GC_FRIENDLY_DEFAULT 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable memory pools" >&5
$as_echo_n "checking whether to disable memory pools... " >&6; }
-if test "x$disable_mem_pools" = "xno"; then
+if test "x$disable_mem_pools" = "xno"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+
else
+
$as_echo "#define DISABLE_MEM_POOLS 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+
fi
@@ -5971,801 +6471,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named 'D' -- because '-MD' means "put the output
- # in D".
- rm -rf conftest.dir
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
- # Solaris 10 /bin/sh.
- echo '/* dummy */' > sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with '-c' and '-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle '-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs.
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # After this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested.
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok '-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-
-if test "x$CC" != xcc; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
- sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } &&
- test -f conftest2.$ac_objext && { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; };
-then
- eval ac_cv_prog_cc_${ac_cc}_c_o=yes
- if test "x$CC" != xcc; then
- # Test first that cc exists at all.
- if { ac_try='cc -c conftest.$ac_ext >&5'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
- rm -f conftest2.*
- if { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } &&
- test -f conftest2.$ac_objext && { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; };
- then
- # cc works too.
- :
- else
- # cc exists but doesn't like -o.
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
- fi
- fi
- fi
-else
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-
@@ -7211,7 +6916,18 @@ if test "x$PERL_PATH" = x ; then
fi
-# Need suitable python path for greport
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+
+# Check whether --with-python was given.
+if test "${with_python+set}" = set; then :
+ withval=$with_python; PYTHON="$withval"
+fi
+
+if test x"$PYTHON" = xyes; then
+ as_fn_error $? "--with-python option requires a path or program argument" "$LINENO" 5
+fi
@@ -7253,7 +6969,7 @@ if ${am_cv_pathless_PYTHON+:} false; then :
$as_echo_n "(cached) " >&6
else
- for am_cv_pathless_PYTHON in python python2 python3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+ for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
@@ -7360,6 +7076,25 @@ $as_echo "$am_cv_python_platform" >&6; }
PYTHON_PLATFORM=$am_cv_python_platform
+ # Just factor out some code duplication.
+ am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x. See automake bug#10227.
+try:
+ import sysconfig
+except ImportError:
+ can_use_sysconfig = 0
+else:
+ can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+ from platform import python_implementation
+ if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+ can_use_sysconfig = 0
+except ImportError:
+ pass"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
@@ -7373,7 +7108,14 @@ else
else
am_py_prefix=$prefix
fi
- am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
+ am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
case $am_cv_python_pythondir in
$am_py_prefix*)
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@@ -7410,7 +7152,14 @@ else
else
am_py_exec_prefix=$exec_prefix
fi
- am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
+ am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
case $am_cv_python_pyexecdir in
$am_py_exec_prefix*)
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@@ -7444,10 +7193,13 @@ $as_echo "$am_cv_python_pyexecdir" >&6; }
-if test x"$glib_native_win32" = xyes; then
+if test x"$glib_native_win32" = xyes; then :
+
with_libiconv=native
+
else
+
# Check whether --with-libiconv was given.
if test "${with_libiconv+set}" = set; then :
withval=$with_libiconv;
@@ -7648,43 +7400,10 @@ fi
if test "x$found_iconv" = "xno" ; then
as_fn_error $? "*** No iconv() implementation found in C library or libiconv" "$LINENO" 5
fi
-fi
-# Check whether --enable-iconv-cache was given.
-if test "${enable_iconv_cache+set}" = set; then :
- enableval=$enable_iconv_cache;
-else
- enable_iconv_cache=auto
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to cache iconv descriptors" >&5
-$as_echo_n "checking whether to cache iconv descriptors... " >&6; }
-case $enable_iconv_cache in
- auto)
- if test $ac_cv_gnu_library_2_1 = yes; then
- enable_iconv_cache=no
- else
- enable_iconv_cache=yes
- fi
- ;;
- yes|no)
- ;;
- *) as_fn_error $? "Value given to --enable-iconv-cache must be one of yes, no or auto" "$LINENO" 5
- ;;
-esac
-
-if test $enable_iconv_cache = yes; then
-
-$as_echo "#define NEED_ICONV_CACHE 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_iconv_cache" >&5
-$as_echo "$enable_iconv_cache" >&6; }
-
-
-
GETTEXT_PACKAGE=glib20
@@ -7700,13 +7419,15 @@ _ACEOF
-if test x"$glib_native_win32" != xyes; then
+if test x"$glib_native_win32" != xyes; then :
+
if test x$with_libiconv != xno ; then
case " $INTLLIBS " in
*[\ \ ]-liconv[\ \ ]*) ;;
*) ICONV_LIBS="-liconv" ;;
esac
fi
+
fi
@@ -8380,6 +8101,11 @@ else
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -8419,7 +8145,7 @@ else
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
test $i != 17 # 1/2 MB should be enough
do
@@ -8845,7 +8571,7 @@ irix5* | irix6* | nonstopux*)
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -9482,13 +9208,13 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -9635,6 +9361,7 @@ for ac_symprfx in "" "_"; do
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -9923,7 +9650,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -9941,7 +9668,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -9960,7 +9690,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -10023,7 +9756,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -10034,7 +9767,20 @@ sparc*-*solaris*)
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
@@ -10674,7 +10420,13 @@ else
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&5
@@ -10685,6 +10437,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -10717,6 +10470,7 @@ rm -f core conftest.err conftest.$ac_objext \
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
$as_echo_n "checking for -force_load linker flag... " >&6; }
if ${lt_cv_ld_force_load+:} false; then :
@@ -10738,7 +10492,9 @@ _LT_EOF
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&5
@@ -10784,135 +10540,6 @@ $as_echo "$lt_cv_ld_force_load" >&6; }
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
for ac_header in dlfcn.h
do :
ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
@@ -11312,7 +10939,22 @@ fi
# Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
- withval=$with_pic; pic_mode="$withval"
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
else
pic_mode=default
fi
@@ -11390,6 +11032,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
test -z "$LN_S" && LN_S="ln -s"
@@ -11849,7 +11495,9 @@ lt_prog_compiler_static=
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
lt_prog_compiler_wl='-Xlinker '
- lt_prog_compiler_pic='-Xcompiler -fPIC'
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
;;
esac
else
@@ -11940,18 +11588,33 @@ lt_prog_compiler_static=
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl='-Wl,'
;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
esac
;;
esac
@@ -12313,7 +11976,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
hardcode_direct=no
hardcode_direct_absolute=no
hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld=
hardcode_libdir_separator=
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
@@ -12563,8 +12225,7 @@ _LT_EOF
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test "x$supports_anon_versioning" = xyes; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -12943,6 +12604,7 @@ fi
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
# Don't use ranlib
old_postinstall_cmds='chmod 644 $oldlib'
@@ -12988,6 +12650,7 @@ fi
hardcode_shlibpath_var=unsupported
if test "$lt_cv_ld_force_load" = "yes"; then
whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
else
whole_archive_flag_spec=''
fi
@@ -13016,10 +12679,6 @@ fi
hardcode_shlibpath_var=no
;;
- freebsd1*)
- ld_shlibs=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
@@ -13032,7 +12691,7 @@ fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -13071,7 +12730,6 @@ fi
fi
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_flag_spec_ld='+b $libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
hardcode_direct_absolute=yes
@@ -13695,11 +13353,6 @@ esac
-
-
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
@@ -13789,7 +13442,7 @@ need_version=unknown
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -13798,7 +13451,7 @@ aix3*)
;;
aix[4-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
@@ -13863,7 +13516,7 @@ beos*)
;;
bsdi[45]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -14002,7 +13655,7 @@ darwin* | rhapsody*)
;;
dgux*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -14010,10 +13663,6 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -14021,7 +13670,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -14039,7 +13688,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14059,17 +13708,18 @@ freebsd* | dragonfly*)
;;
gnu*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
@@ -14130,7 +13780,7 @@ hpux9* | hpux10* | hpux11*)
;;
interix[3-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -14146,7 +13796,7 @@ irix5* | irix6* | nonstopux*)
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
@@ -14183,9 +13833,9 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14271,7 +13921,7 @@ netbsd*)
;;
newsos6)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -14340,7 +13990,7 @@ rdos*)
;;
solaris*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14365,7 +14015,7 @@ sunos4*)
;;
sysv4 | sysv4.3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -14389,7 +14039,7 @@ sysv4 | sysv4.3*)
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
soname_spec='$libname${shared_ext}.$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -14420,7 +14070,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -14430,7 +14080,7 @@ tpf*)
;;
uts4*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -15355,7 +15005,6 @@ export_dynamic_flag_spec_CXX=
hardcode_direct_CXX=no
hardcode_direct_absolute_CXX=no
hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
hardcode_libdir_separator_CXX=
hardcode_minus_L_CXX=no
hardcode_shlibpath_var_CXX=unsupported
@@ -15939,6 +15588,7 @@ fi
hardcode_shlibpath_var_CXX=unsupported
if test "$lt_cv_ld_force_load" = "yes"; then
whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
else
whole_archive_flag_spec_CXX=''
fi
@@ -15983,7 +15633,7 @@ fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -16659,6 +16309,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
case "$CC $CFLAGS " in #(
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
esac
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -17448,7 +17099,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
- cl*) ;;
+ cl*)
+ exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
*)
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
@@ -17601,8 +17254,6 @@ esac
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
@@ -17628,7 +17279,7 @@ need_version=unknown
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -17637,7 +17288,7 @@ aix3*)
;;
aix[4-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
@@ -17702,7 +17353,7 @@ beos*)
;;
bsdi[45]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -17839,7 +17490,7 @@ darwin* | rhapsody*)
;;
dgux*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -17847,10 +17498,6 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -17858,7 +17505,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -17876,7 +17523,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -17896,17 +17543,18 @@ freebsd* | dragonfly*)
;;
gnu*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
@@ -17967,7 +17615,7 @@ hpux9* | hpux10* | hpux11*)
;;
interix[3-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -17983,7 +17631,7 @@ irix5* | irix6* | nonstopux*)
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
@@ -18020,9 +17668,9 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18108,7 +17756,7 @@ netbsd*)
;;
newsos6)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -18177,7 +17825,7 @@ rdos*)
;;
solaris*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18202,7 +17850,7 @@ sunos4*)
;;
sysv4 | sysv4.3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -18226,7 +17874,7 @@ sysv4 | sysv4.3*)
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
soname_spec='$libname${shared_ext}.$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -18257,7 +17905,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -18267,7 +17915,7 @@ tpf*)
;;
uts4*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -18406,6 +18054,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
ac_config_commands="$ac_config_commands libtool"
@@ -18820,10 +18470,10 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-glib config.lt 2.32.4
+glib config.lt 2.38.2
configured by $0, generated by GNU Autoconf 2.69.
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
@@ -18874,6 +18524,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -18954,7 +18605,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -19026,7 +18676,6 @@ with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
@@ -19068,6 +18717,7 @@ DLLTOOL \
OBJDUMP \
SHELL \
ECHO \
+PATH_SEPARATOR \
SED \
GREP \
EGREP \
@@ -19116,7 +18766,6 @@ with_gnu_ld \
allow_undefined_flag \
no_undefined_flag \
hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
exclude_expsyms \
include_expsyms \
@@ -19150,7 +18799,6 @@ with_gnu_ld_CXX \
allow_undefined_flag_CXX \
no_undefined_flag_CXX \
hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
hardcode_libdir_separator_CXX \
exclude_expsyms_CXX \
include_expsyms_CXX \
@@ -19259,8 +18907,8 @@ $as_echo "$as_me: creating $ofile" >&6;}
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -19323,6 +18971,9 @@ SHELL=$lt_SHELL
# An echo program that protects backslashes.
ECHO=$lt_ECHO
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
# The host system.
host_alias=$host_alias
host=$host
@@ -19618,10 +19269,6 @@ no_undefined_flag=$lt_no_undefined_flag
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
@@ -19964,10 +19611,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
@@ -20061,14 +19704,8 @@ $lt_cl_success || as_fn_exit 1
-if test "x$GCC" = "xyes"; then
- case " $CFLAGS " in
- *[\ \ ]-Wall[\ \ ]*) ;;
- *) CFLAGS="$CFLAGS -Wall" ;;
- esac
-fi
+if test "$glib_native_win32" = "yes"; then :
-if test "$glib_native_win32" = "yes"; then
if test x$enable_static = xyes -a x$enable_shared = xyes; then
as_fn_error $? "Can not build both shared and static at the same time on Windows." "$LINENO" 5
fi
@@ -20078,6 +19715,7 @@ if test "$glib_native_win32" = "yes"; then
#define GOBJECT_STATIC_COMPILATION 1"
fi
+
fi
if test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes; then
OS_WIN32_AND_DLL_COMPILATION_TRUE=
@@ -20088,7 +19726,8 @@ else
fi
-if test $cross_compiling != yes ; then
+if test $cross_compiling != yes; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra flags to get ANSI library prototypes" >&5
$as_echo_n "checking for extra flags to get ANSI library prototypes... " >&6; }
glib_save_LIBS=$LIBS
@@ -20143,6 +19782,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
LIBS=$glib_save_LIBS
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra flags for POSIX compliance" >&5
@@ -20406,7 +20046,7 @@ _ACEOF
fi
-for ac_func in mmap posix_memalign memalign valloc fsync pipe2
+for ac_func in mmap posix_memalign memalign valloc fsync pipe2 issetugid
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -20431,6 +20071,41 @@ fi
done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __libc_enable_secure" >&5
+$as_echo_n "checking for __libc_enable_secure... " >&6; }
+if ${glib_cv_have_libc_enable_secure+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+ extern int __libc_enable_secure;
+int
+main ()
+{
+return __libc_enable_secure;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ glib_cv_have_libc_enable_secure=yes
+else
+ glib_cv_have_libc_enable_secure=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_have_libc_enable_secure" >&5
+$as_echo "$glib_cv_have_libc_enable_secure" >&6; }
+if test x$glib_cv_have_libc_enable_secure = xyes; then :
+
+
+$as_echo "#define HAVE_LIBC_ENABLE_SECURE 1" >>confdefs.h
+
+
+fi
+
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -20706,7 +20381,8 @@ else
" "$LINENO" 5
fi
-if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
+if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then :
+
# long long is a 64 bit integer.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for format to printf and scanf a guint64" >&5
$as_echo_n "checking for format to printf and scanf a guint64... " >&6; }
@@ -20742,7 +20418,8 @@ fi
done
fi
- if test -n "$glib_cv_long_long_format"; then
+ if test -n "$glib_cv_long_long_format"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %${glib_cv_long_long_format}u" >&5
$as_echo "%${glib_cv_long_long_format}u" >&6; }
@@ -20752,12 +20429,15 @@ $as_echo "#define HAVE_LONG_LONG_FORMAT 1" >>confdefs.h
$as_echo "#define HAVE_INT64_AND_I64 1" >>confdefs.h
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+ fi
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
$as_echo "none" >&6; }
- fi
-elif test x$ac_cv_sizeof___int64 = x8; then
+fi
+
+elif test x$ac_cv_sizeof___int64 = x8; then :
+
# __int64 is a 64 bit integer.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for format to printf and scanf a guint64" >&5
$as_echo_n "checking for format to printf and scanf a guint64... " >&6; }
@@ -20771,6 +20451,7 @@ $as_echo "#define HAVE_LONG_LONG_FORMAT 1" >>confdefs.h
$as_echo "#define HAVE_INT64_AND_I64 1" >>confdefs.h
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
@@ -20855,44 +20536,6 @@ $as_echo "#define const /**/" >>confdefs.h
fi
-SANE_MALLOC_PROTOS=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc() and friends prototypes are gmem.h compatible" >&5
-$as_echo_n "checking if malloc() and friends prototypes are gmem.h compatible... " >&6; }
-glib_save_CFLAGS=$CFLAGS
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -Werror"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-int
-main ()
-{
-
- void* (*my_calloc_p) (size_t, size_t) = calloc;
- void* (*my_malloc_p) (size_t) = malloc;
- void (*my_free_p) (void*) = free;
- void* (*my_realloc_p) (void*, size_t) = realloc;
- my_calloc_p = 0;
- my_malloc_p = 0;
- my_free_p = 0;
- my_realloc_p = 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define SANE_MALLOC_PROTOS 1" >>confdefs.h
-
- SANE_MALLOC_PROTOS=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SANE_MALLOC_PROTOS" >&5
-$as_echo "$SANE_MALLOC_PROTOS" >&6; }
-CFLAGS=$glib_save_CFLAGS
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for growing stack pointer" >&5
$as_echo_n "checking for growing stack pointer... " >&6; }
if ${glib_cv_stack_grows+:} false; then :
@@ -21128,7 +20771,8 @@ $as_echo "$g_have_iso_c_varargs" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 varargs macros in C++" >&5
$as_echo_n "checking for ISO C99 varargs macros in C++... " >&6; }
-if test "$CXX" = ""; then
+if test "$CXX" = ""; then :
+
g_have_iso_cxx_varargs=no
else
ac_ext=cpp
@@ -21164,6 +20808,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_iso_cxx_varargs" >&5
$as_echo "$g_have_iso_cxx_varargs" >&6; }
@@ -21220,7 +20865,7 @@ __attribute__ ((visibility ("default")))
f_default (void)
{
}
-int main (int argc, char **argv)
+int main (void)
{
f_hidden();
f_internal();
@@ -21613,7 +21258,7 @@ fi
done
-for ac_header in sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h
+for ac_header in sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -21694,6 +21339,17 @@ fi
done
+for ac_func in sysctlbyname
+do :
+ ac_fn_c_check_func "$LINENO" "sysctlbyname" "ac_cv_func_sysctlbyname"
+if test "x$ac_cv_func_sysctlbyname" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYSCTLBYNAME 1
+_ACEOF
+
+fi
+done
+
for ac_header in xlocale.h
do :
@@ -22143,6 +21799,40 @@ fi
done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+ ac_cv_gnu_library_2_1=yes
+else
+ ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
# check additional type sizes
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
@@ -22202,7 +21892,8 @@ case $ac_cv_sizeof_size_t in
esac
if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
- test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
+ test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long; then :
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -22285,11 +21976,184 @@ rm -f conftest.$ac_objext conftest.err conftest.$ac_ext
fi
ac_compile="$glib_ac_compile_save"
rm -f conftest.$ac_objext conftest.err conftest.$ac_ext
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsigned $glib_size_type" >&5
$as_echo "unsigned $glib_size_type" >&6; }
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5
+$as_echo_n "checking size of ssize_t... " >&6; }
+if ${ac_cv_sizeof_ssize_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_ssize_t" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (ssize_t)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_ssize_t=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5
+$as_echo "$ac_cv_sizeof_ssize_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t
+_ACEOF
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the appropriate definition for ssize_t" >&5
+$as_echo_n "checking for the appropriate definition for ssize_t... " >&6; }
+
+case $ac_cv_sizeof_ssize_t in
+ $ac_cv_sizeof_short)
+ glib_ssize_type=short
+ ;;
+ $ac_cv_sizeof_int)
+ glib_ssize_type=int
+ ;;
+ $ac_cv_sizeof_long)
+ glib_ssize_type=long
+ ;;
+ $ac_cv_sizeof_long_long)
+ glib_ssize_type='long long'
+ ;;
+ $ac_cv_sizeof__int64)
+ glib_ssize_type='__int64'
+ ;;
+ *) as_fn_error $? "No type matching ssize_t in size" "$LINENO" 5
+ ;;
+esac
+
+if test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int &&
+ test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long; then :
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+ ssize_t s = 1;
+ int *size_int = &s;
+ return (int)*size_int;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext
+glib_ac_compile_save="$ac_compile"
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext'
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ { ac_try='(if test -s conftest.err; then false ; else true; fi)'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ glib_ssize_type=int
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+ ssize_t s = 1;
+ long *size_long = &s;
+ return (int)*size_long;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext
+glib_ac_compile_save="$ac_compile"
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext'
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ { ac_try='(if test -s conftest.err; then false ; else true; fi)'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ glib_ssize_type=long
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+ac_compile="$glib_ac_compile_save"
+rm -f conftest.$ac_objext conftest.err conftest.$ac_ext
+fi
+ac_compile="$glib_ac_compile_save"
+rm -f conftest.$ac_objext conftest.err conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_ssize_type" >&5
+$as_echo "$glib_ssize_type" >&6; }
+
# Check for some functions
for ac_func in lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem
do :
@@ -22303,7 +22167,7 @@ _ACEOF
fi
done
-for ac_func in chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid
+for ac_func in chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -22315,7 +22179,7 @@ _ACEOF
fi
done
-for ac_func in getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat
+for ac_func in getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -22679,7 +22543,7 @@ if $glib_failed ; then
as_fn_error $? "Could not determine values for MSG_* constants" "$LINENO" 5
fi
-for ac_func in getprotobyname_r endservent if_nametoindex
+for ac_func in getprotobyname_r endservent if_nametoindex if_indextoname
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -22691,21 +22555,69 @@ _ACEOF
fi
done
-for ac_header in netdb.h wspiapi.h arpa/nameser_compat.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test $glib_native_win32 = yes; then :
+
+ # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
+ # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
+ # they aren't present at run-time (on Windows 2000).
+ ac_fn_c_check_header_mongrel "$LINENO" "wspiapi.h" "ac_cv_header_wspiapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_wspiapi_h" = xyes; then :
+ WSPIAPI_INCLUDE="#include <wspiapi.h>"
fi
-done
-if test $glib_native_win32 = no; then
+
+else
+
+ # Android does not have C_IN in public headers, we define it wherever necessary
+ if test $glib_native_android != yes; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if arpa/nameser_compat.h is needed" >&5
+$as_echo_n "checking if arpa/nameser_compat.h is needed... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <arpa/nameser.h>
+int
+main ()
+{
+int qclass = C_IN;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <arpa/nameser.h>
+ #include <arpa/nameser_compat.h>
+int
+main ()
+{
+int qclass = C_IN;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ NAMESER_COMPAT_INCLUDE="#include <arpa/nameser_compat.h>"
+else
+ as_fn_error $? "could not compile test program either way" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+
# We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
NETWORK_LIBS=""
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query" >&5
@@ -22831,6 +22743,42 @@ fi
fi
+ save_libs="$LIBS"
+ LIBS="$LIBS $NETWORK_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_init" >&5
+$as_echo_n "checking for res_init... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+
+int
+main ()
+{
+
+ res_init();
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_RES_INIT 1" >>confdefs.h
+
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$save_libs"
+
fi
@@ -22876,7 +22824,8 @@ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
;;
esac
-if test "$ac_cv_func_statfs" = yes ; then
+if test "$ac_cv_func_statfs" = yes; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking number of arguments to statfs()" >&5
$as_echo_n "checking number of arguments to statfs()... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -22952,6 +22901,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
fi
#
@@ -22996,16 +22946,20 @@ else
HAVE_GOOD_PRINTF_FALSE=
fi
-if test "$enable_included_printf" != "yes" ; then
+if test "$enable_included_printf" != "yes"; then :
+
$as_echo "#define HAVE_GOOD_PRINTF 1" >>confdefs.h
+
else
+
if test -z "$glib_cv_long_long_format" ; then
glib_cv_long_long_format="ll"
fi
$as_echo "#define HAVE_VASPRINTF 1" >>confdefs.h
+
fi
# Checks needed for gnulib vasnprintf
@@ -23370,7 +23324,8 @@ fi
# Check if bcopy can be used for overlapping copies, if memmove isn't found.
# The check is borrowed from the PERL Configure script.
-if test "$ac_cv_func_memmove" != "yes"; then
+if test "$ac_cv_func_memmove" != "yes"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bcopy can handle overlapping copies" >&5
$as_echo_n "checking whether bcopy can handle overlapping copies... " >&6; }
if ${glib_cv_working_bcopy+:} false; then :
@@ -23423,6 +23378,7 @@ fi
$as_echo "#define HAVE_WORKING_BCOPY 1" >>confdefs.h
fi
+
fi
# Check if <sys/select.h> needs to be included for fd_set
@@ -23445,10 +23401,13 @@ else
gtk_ok=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test "$gtk_ok" = "yes"; then
+if test "$gtk_ok" = "yes"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in sys/types.h" >&5
$as_echo "yes, found in sys/types.h" >&6; }
+
else
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/select.h>
@@ -23474,42 +23433,15 @@ $as_echo "#define NO_FD_SET 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether realloc (NULL,) will work" >&5
-$as_echo_n "checking whether realloc (NULL,) will work... " >&6; }
-if ${glib_cv_sane_realloc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- glib_cv_sane_realloc=yes
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
- int main() {
- return realloc (0, sizeof (int)) == 0;
- }
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- glib_cv_sane_realloc=yes
-else
- glib_cv_sane_realloc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_sane_realloc" >&5
-$as_echo "$glib_cv_sane_realloc" >&6; }
-if test x$glib_cv_sane_realloc = xyes; then
-
-$as_echo "#define REALLOC_0_WORKS 1" >>confdefs.h
-
-fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo (CODESET)" >&5
$as_echo_n "checking for nl_langinfo (CODESET)... " >&6; }
@@ -23528,12 +23460,13 @@ char *codeset = nl_langinfo (CODESET);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
glib_cv_langinfo_codeset=yes
else
glib_cv_langinfo_codeset=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_codeset" >&5
$as_echo "$glib_cv_langinfo_codeset" >&6; }
@@ -23569,12 +23502,13 @@ char *str;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
glib_cv_langinfo_time=yes
else
glib_cv_langinfo_time=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_time" >&5
$as_echo "$glib_cv_langinfo_time" >&6; }
@@ -23611,12 +23545,13 @@ char *str;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
glib_cv_langinfo_outdigit=yes
else
glib_cv_langinfo_outdigit=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_outdigit" >&5
$as_echo "$glib_cv_langinfo_outdigit" >&6; }
@@ -23625,6 +23560,12 @@ if test x$glib_cv_langinfo_outdigit = xyes; then
$as_echo "#define HAVE_LANGINFO_OUTDIGIT 1" >>confdefs.h
fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a compliant posix_memalign() implementation" >&5
$as_echo_n "checking for a compliant posix_memalign() implementation... " >&6; }
@@ -23676,15 +23617,19 @@ fi
fi
-if test "$glib_cv_compliant_posix_memalign" = "1"; then
+if test "$glib_cv_compliant_posix_memalign" = "1"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS 1" >>confdefs.h
+
else
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+
fi
@@ -23853,10 +23798,12 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_va_val_copy" >&5
$as_echo "$glib_cv_va_val_copy" >&6; }
-if test "x$glib_cv_va_val_copy" = "xno"; then
+if test "x$glib_cv_va_val_copy" = "xno"; then :
+
$as_echo "#define G_VA_COPY_AS_ARRAY 1" >>confdefs.h
+
fi
G_MODULE_LIBS=
@@ -23881,7 +23828,8 @@ if test -z "$G_MODULE_IMPL"; then
*-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
esac
fi
-if test -z "$G_MODULE_IMPL"; then
+if test -z "$G_MODULE_IMPL"; then :
+
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
if test "x$ac_cv_func_dlopen" = xyes; then :
ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym"
@@ -23891,8 +23839,10 @@ fi
fi
+
fi
-if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
+if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for load_image in -lroot" >&5
$as_echo_n "checking for load_image in -lroot... " >&6; }
if ${ac_cv_lib_root_load_image+:} false; then :
@@ -23936,16 +23886,20 @@ if test "x$ac_cv_lib_root_load_image" = xyes; then :
G_MODULE_IMPL=G_MODULE_IMPL_BEOS
fi
+
fi
-if test -z "$G_MODULE_IMPL"; then
+if test -z "$G_MODULE_IMPL" ; then :
+
ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule"
if test "x$ac_cv_func_NSLinkModule" = xyes; then :
G_MODULE_IMPL=G_MODULE_IMPL_DYLD
G_MODULE_NEED_USCORE=1
fi
+
fi
-if test -z "$G_MODULE_IMPL"; then
+if test -z "$G_MODULE_IMPL"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
if ${ac_cv_lib_dl_dlopen+:} false; then :
@@ -24026,8 +23980,10 @@ fi
fi
+
fi
-if test -z "$G_MODULE_IMPL"; then
+if test -z "$G_MODULE_IMPL"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
$as_echo_n "checking for shl_load in -ldld... " >&6; }
if ${ac_cv_lib_dld_shl_load+:} false; then :
@@ -24069,8 +24025,10 @@ if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
G_MODULE_IMPL=G_MODULE_IMPL_DLD
fi
+
fi
-if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
+if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ; then :
+
LIBS_orig="$LIBS"
LDFLAGS_orig="$LDFLAGS"
LIBS="$G_MODULE_LIBS $LIBS"
@@ -24190,6 +24148,7 @@ else
fi
LIBS="$LIBS_orig"
+
fi
if test -z "$G_MODULE_IMPL"; then
G_MODULE_IMPL=0
@@ -24266,114 +24225,6 @@ fi
GIO_MODULE_DIR=$with_gio_module_dir
-# Check whether --enable-selinux was given.
-if test "${enable_selinux+set}" = set; then :
- enableval=$enable_selinux;
-fi
-
-msg_selinux=no
-SELINUX_LIBS=
-if test "x$enable_selinux" != "xno"; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5
-$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lselinux $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char is_selinux_enabled ();
-int
-main ()
-{
-return is_selinux_enabled ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_selinux_is_selinux_enabled=yes
-else
- ac_cv_lib_selinux_is_selinux_enabled=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
-$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
-if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then :
- for ac_header in selinux/selinux.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
-if test "x$ac_cv_header_selinux_selinux_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SELINUX_SELINUX_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lgetfilecon_raw in -lselinux" >&5
-$as_echo_n "checking for lgetfilecon_raw in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_lgetfilecon_raw+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lselinux $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char lgetfilecon_raw ();
-int
-main ()
-{
-return lgetfilecon_raw ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_selinux_lgetfilecon_raw=yes
-else
- ac_cv_lib_selinux_lgetfilecon_raw=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_lgetfilecon_raw" >&5
-$as_echo "$ac_cv_lib_selinux_lgetfilecon_raw" >&6; }
-if test "x$ac_cv_lib_selinux_lgetfilecon_raw" = xyes; then :
-
-$as_echo "#define HAVE_SELINUX 1" >>confdefs.h
-
- SELINUX_LIBS="-lselinux"
- msg_selinux=yes
-fi
-
-
-fi
-
-done
-
-
-fi
-
-fi
-
-
inotify_support=no
for ac_header in sys/inotify.h
do :
@@ -24410,203 +24261,70 @@ else
fi
-fen_support=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <port.h>
-#ifndef PORT_SOURCE_FILE
-#error "Please upgrade to Nevada 72 or above to suppoert FEN"
-#endif
-int main() { return 0; }
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- fen_support=yes
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
- if test "$fen_support" = "yes"; then
- HAVE_FEN_TRUE=
- HAVE_FEN_FALSE='#'
-else
- HAVE_FEN_TRUE='#'
- HAVE_FEN_FALSE=
-fi
-
-
-
-# Check whether --enable-xattr was given.
-if test "${enable_xattr+set}" = set; then :
- enableval=$enable_xattr;
-fi
-
-msg_xattr=no
-XATTR_LIBS=
-if test "x$enable_xattr" != "xno"; then
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr in -lc" >&5
-$as_echo_n "checking for getxattr in -lc... " >&6; }
-if ${ac_cv_lib_c_getxattr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getxattr ();
-int
-main ()
-{
-return getxattr ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_c_getxattr=yes
-else
- ac_cv_lib_c_getxattr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_getxattr" >&5
-$as_echo "$ac_cv_lib_c_getxattr" >&6; }
-if test "x$ac_cv_lib_c_getxattr" = xyes; then :
- for ac_header in sys/xattr.h
+kqueue_support=no
+for ac_header in sys/event.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_xattr_h" = xyes; then :
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_event_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_XATTR_H 1
+#define HAVE_SYS_EVENT_H 1
_ACEOF
-$as_echo "#define HAVE_XATTR 1" >>confdefs.h
-
- msg_xattr=yes
-fi
-
-done
-
-
-fi
-
-
- if test "x$msg_xattr" != "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr in -lattr" >&5
-$as_echo_n "checking for getxattr in -lattr... " >&6; }
-if ${ac_cv_lib_attr_getxattr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lattr $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getxattr ();
-int
-main ()
-{
-return getxattr ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_attr_getxattr=yes
-else
- ac_cv_lib_attr_getxattr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_getxattr" >&5
-$as_echo "$ac_cv_lib_attr_getxattr" >&6; }
-if test "x$ac_cv_lib_attr_getxattr" = xyes; then :
- for ac_header in attr/xattr.h
+ for ac_func in kqueue kevent
do :
- ac_fn_c_check_header_mongrel "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default"
-if test "x$ac_cv_header_attr_xattr_h" = xyes; then :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_ATTR_XATTR_H 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
+ kqueue_support=yes
+fi
+done
-$as_echo "#define HAVE_XATTR 1" >>confdefs.h
- XATTR_LIBS="-lattr"
- msg_xattr=yes
fi
done
+ if test "$kqueue_support" = "yes"; then
+ HAVE_KQUEUE_TRUE=
+ HAVE_KQUEUE_FALSE='#'
+else
+ HAVE_KQUEUE_TRUE='#'
+ HAVE_KQUEUE_FALSE=
fi
- fi
- if test "x$msg_xattr" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR_NOFOLLOW" >&5
-$as_echo_n "checking for XATTR_NOFOLLOW... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fen_support=no
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <stdio.h>
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_XATTR_H
- #include <sys/xattr.h>
- #elif HAVE_ATTR_XATTR_H
- #include <attr/xattr.h>
- #endif
-
-int
-main ()
-{
-ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);
- ;
- return 0;
-}
+#include <port.h>
+#ifndef PORT_SOURCE_FILE
+#error "Please upgrade to Nevada 72 or above to suppoert FEN"
+#endif
+int main() { return 0; }
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_XATTR_NOFOLLOW 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ fen_support=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
+ if test "$fen_support" = "yes"; then
+ HAVE_FEN_TRUE=
+ HAVE_FEN_FALSE='#'
+else
+ HAVE_FEN_TRUE='#'
+ HAVE_FEN_FALSE=
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform-dependent source" >&5
$as_echo_n "checking for platform-dependent source... " >&6; }
case "$host" in
@@ -24706,13 +24424,15 @@ AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
$as_echo_n "checking for thread implementation... " >&6; }
have_threads=no
-if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
+if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then :
+
# -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
# -U_OSF_SOURCE is for Digital UNIX 4.0d
GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test "x$have_threads" = xno; then
+ if test "x$have_threads" = xno; then :
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
@@ -24728,7 +24448,8 @@ if ac_fn_c_try_compile "$LINENO"; then :
have_threads=posix
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
+
+fi
# Tru64Unix requires -pthread to find pthread.h. See #103020
CPPFLAGS="$CPPFLAGS -pthread"
if test "x$have_threads" = xno; then
@@ -24749,6 +24470,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
CPPFLAGS="$glib_save_CPPFLAGS"
+
fi
if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
case $host in
@@ -24775,7 +24497,8 @@ G_THREAD_CFLAGS=
-if test x"$have_threads" = xposix; then
+if test x"$have_threads" = xposix; then :
+
# First we test for posix, whether -pthread or -pthreads do the trick as
# both CPPFLAG and LIBS.
# One of them does for most gcc versions and some other platforms/compilers
@@ -24850,9 +24573,11 @@ fi
done
;;
esac
+
fi
-if test x"$G_THREAD_CFLAGS" = x; then
+if test x"$G_THREAD_CFLAGS" = x; then :
+
# The canonical -pthread[s] does not work. Try something different.
@@ -24939,11 +24664,12 @@ $as_echo "$G_THREAD_CFLAGS" >&6; }
CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
-case $have_threads in
- posix)
+if test x$have_threads = xposix; then :
+
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test x"$G_THREAD_LIBS" = x; then
+ if test x"$G_THREAD_LIBS" = x ; then :
+
case $host in
*-aix*)
# We are not using gcc (would have set G_THREAD_LIBS) and thus
@@ -25032,20 +24758,56 @@ $as_echo "$glib_result" >&6; }
LIBS="$glib_save_LIBS"
;;
esac
- fi
+
+fi
g_threads_impl="POSIX"
+$as_echo "#define THREADS_POSIX 1" >>confdefs.h
+
+
CPPFLAGS="$glib_save_CPPFLAGS"
- ;;
- win32)
+
+elif test x$have_threads = xwin32; then :
+
+
+$as_echo "#define THREADS_WIN32 1" >>confdefs.h
+
g_threads_impl="WIN32"
- ;;
- *)
+
+else
+
+
+$as_echo "#define THREADS_NONE 1" >>confdefs.h
+
g_threads_impl="NONE"
G_THREAD_LIBS=error
- ;;
-esac
+
+fi
+ if test "$g_threads_impl" = "POSIX"; then
+ THREADS_POSIX_TRUE=
+ THREADS_POSIX_FALSE='#'
+else
+ THREADS_POSIX_TRUE='#'
+ THREADS_POSIX_FALSE=
+fi
+
+ if test "$g_threads_impl" = "WIN32"; then
+ THREADS_WIN32_TRUE=
+ THREADS_WIN32_FALSE='#'
+else
+ THREADS_WIN32_TRUE='#'
+ THREADS_WIN32_FALSE=
+fi
+
+ if test "$g_threads_impl" = "NONE"; then
+ THREADS_NONE_TRUE=
+ THREADS_NONE_FALSE='#'
+else
+ THREADS_NONE_TRUE='#'
+ THREADS_NONE_FALSE=
+fi
+
if test "x$G_THREAD_LIBS" = xerror; then
as_fn_error $? "$LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2" "$LINENO" 5
@@ -25082,7 +24844,8 @@ _ACEOF
fi
done
-if test "$ac_cv_header_pwd_h" = "yes"; then
+if test "$ac_cv_header_pwd_h" = "yes"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix getpwuid_r" >&5
$as_echo_n "checking for posix getpwuid_r... " >&6; }
if ${ac_cv_func_posix_getpwuid_r+:} false; then :
@@ -25170,8 +24933,10 @@ $as_echo "#define HAVE_NONPOSIX_GETPWUID_R 1" >>confdefs.h
fi
fi
+
fi
-if test "$ac_cv_header_grp_h" = "yes"; then
+if test "$ac_cv_header_grp_h" = "yes"; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix getgrgid_r" >&5
$as_echo_n "checking for posix getgrgid_r... " >&6; }
if ${ac_cv_func_posix_getgrgid_r+:} false; then :
@@ -25215,11 +24980,14 @@ $as_echo "$ac_cv_func_posix_getgrgid_r" >&6; }
as_fn_error $? "ac_cv_func_posix_getgrgid_r must be set in cache file when cross-compiling." "$LINENO" 5
fi
- if test "$ac_cv_func_posix_getgrgid_r" = yes; then
+ if test "$ac_cv_func_posix_getgrgid_r" = yes ; then :
+
$as_echo "#define HAVE_POSIX_GETGRGID_R 1" >>confdefs.h
- else
+
+else
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nonposix getgrgid_r" >&5
$as_echo_n "checking for nonposix getgrgid_r... " >&6; }
if ${ac_cv_func_nonposix_getgrgid_r+:} false; then :
@@ -25258,10 +25026,13 @@ fi
$as_echo "#define HAVE_NONPOSIX_GETGRGID_R 1" >>confdefs.h
fi
- fi
+
+fi
+
fi
LIBS="$G_THREAD_LIBS $LIBS"
-if test x"$have_threads" = xposix; then
+if test x"$have_threads" = xposix; then :
+
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
# This is not AC_CHECK_FUNC to also work with function
@@ -25316,7 +25087,58 @@ $as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_cond_timedwait_monotonic" >&5
+$as_echo_n "checking for pthread_cond_timedwait_monotonic... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+int
+main ()
+{
+pthread_cond_timedwait_monotonic(NULL, NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_cond_timedwait_monotonic_np" >&5
+$as_echo_n "checking for pthread_cond_timedwait_monotonic_np... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+int
+main ()
+{
+pthread_cond_timedwait_monotonic_np(NULL, NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP 1" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$glib_save_CPPFLAGS"
+
fi
LIBS="$glib_save_LIBS"
@@ -25340,6 +25162,9 @@ fi
# b) FreeBSD doesn't do this either.
#
case $host in
+ *android*)
+ G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
+ ;;
*-*-freebsd*|*-*-linux*)
G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
;;
@@ -25426,31 +25251,67 @@ if ${glib_cv_g_atomic_lock_free+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ case $host in
+ *-*-mingw*)
+ glib_cv_g_atomic_lock_free=yes
+ ;;
+ *)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
-__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;
+volatile int atomic = 2;\
+ __sync_bool_compare_and_swap (&atomic, 2, 3);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
glib_cv_g_atomic_lock_free=yes
else
glib_cv_g_atomic_lock_free=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$glib_cv_g_atomic_lock_free" = "no"; then
+ SAVE_CFLAGS="${CFLAGS}"
+ CFLAGS="-march=i486"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+volatile int atomic = 2;\
+ __sync_bool_compare_and_swap (&atomic, 2, 3);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ as_fn_error $? "GLib must be build with -march=i486 or later." "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="${SAVE_CFLAGS}"
+ fi
+ ;;
+ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_g_atomic_lock_free" >&5
$as_echo "$glib_cv_g_atomic_lock_free" >&6; }
-if test "$glib_cv_g_atomic_lock_free" = "no"; then
- SAVE_CFLAGS="${CFLAGS}"
- CFLAGS="-march=i486"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+case $host in
+ *-*-mingw*)
+ ;;
+ *)
+ # Some compilers support atomic operations but do not define
+ # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
+ if test x"$glib_cv_g_atomic_lock_free" = xyes; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -25461,12 +25322,18 @@ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- as_fn_error $? "GLib must be build with -march=i486 or later." "$LINENO" 5
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="${SAVE_CFLAGS}"
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+
+$as_echo "#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" >>confdefs.h
+
fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ ;;
+ esac
case $host_cpu in
i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
@@ -25578,8 +25445,9 @@ glib_poll_includes="
#include <sys/poll.h>
"
-if test $ac_cv_header_sys_types_h = yes &&
- test $ac_cv_header_sys_poll_h = yes ; then
+if test $ac_cv_header_sys_types_h = yes &&
+ test $ac_cv_header_sys_poll_h = yes ; then :
+
glib_failed=false
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLIN" >&5
$as_echo_n "checking value of POLLIN... " >&6; }
@@ -25680,13 +25548,16 @@ $as_echo "$glib_cv_value_POLLNVAL" >&6; }
if $glib_failed ; then
as_fn_error $? "Could not determine values for POLL* constants" "$LINENO" 5
fi
+
else
+
glib_cv_value_POLLIN=1
glib_cv_value_POLLOUT=4
glib_cv_value_POLLPRI=2
glib_cv_value_POLLERR=8
glib_cv_value_POLLHUP=16
glib_cv_value_POLLNVAL=32
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken poll" >&5
@@ -25781,7 +25652,8 @@ else
fi
-if test "x$use_gcov" = "xyes"; then
+if test "x$use_gcov" = "xyes"; then :
+
if test "$GCC" != "yes"; then
as_fn_error $? "GCC is required for --enable-gcov" "$LINENO" 5
fi
@@ -25832,7 +25704,7 @@ fi
as_fn_error $? "ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1." "$LINENO" 5
fi
- ltp_version_list="1.6 1.7 1.8 1.9"
+ ltp_version_list="1.6 1.7 1.8 1.9 1.10"
# Extract the first word of "lcov", so it can be a program name with args.
set dummy lcov; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -25908,7 +25780,8 @@ fi
- if test "$LTP"; then
+ if test "$LTP" ; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ltp version" >&5
$as_echo_n "checking for ltp version... " >&6; }
if ${glib_cv_ltp_version+:} false; then :
@@ -25926,10 +25799,13 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_ltp_version" >&5
$as_echo "$glib_cv_ltp_version" >&6; }
- else
+
+else
+
ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
as_fn_error $? "$ltp_msg" "$LINENO" 5
- fi
+
+fi
case $glib_cv_ltp_version in
""|invalid)
@@ -25949,6 +25825,7 @@ $as_echo "$glib_cv_ltp_version" >&6; }
CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
LDFLAGS="$LDFLAGS -lgcov"
+
fi
@@ -26109,19 +25986,6 @@ _ACEOF
-# Check for libdbus1 - Optional - is only used in the GDBus test cases
-#
-# 1.2.14 required for dbus_message_set_serial
-have_dbus1=no
- if test "x$have_dbus1" = "xyes"; then
- HAVE_DBUS1_TRUE=
- HAVE_DBUS1_FALSE='#'
-else
- HAVE_DBUS1_TRUE='#'
- HAVE_DBUS1_FALSE=
-fi
-
-
# Check whether --enable-Bsymbolic was given.
if test "${enable_Bsymbolic+set}" = set; then :
@@ -26163,6 +26027,103 @@ fi
+GLIB_HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+ *-*-mingw*)
+
+$as_echo "#define _GLIB_EXTERN __attribute__((visibility(\"default\"))) __declspec(dllexport) extern" >>confdefs.h
+
+ CFLAGS="${CFLAGS} -fvisibility=hidden"
+ ;;
+ *)
+ SAVED_CFLAGS="${CFLAGS}"
+ CFLAGS="-fvisibility=hidden"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+$as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+int main (void) { return 0; }
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ enable_fvisibility_hidden=yes
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ enable_fvisibility_hidden=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="${SAVED_CFLAGS}"
+
+ if test "${enable_fvisibility_hidden}" = "yes"; then :
+
+
+$as_echo "#define _GLIB_EXTERN __attribute__((visibility(\"default\"))) extern" >>confdefs.h
+
+ GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+
+fi
+ ;;
+esac
+
+
+# Check whether --enable-compile-warnings was given.
+if test "${enable_compile_warnings+set}" = set; then :
+ enableval=$enable_compile_warnings;
+else
+ enable_compile_warnings=yes
+fi
+
+if test "x$enable_compile_warnings" = xyes; then :
+
+
+ for flag in \
+ -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
+ -Werror=missing-prototypes -Werror=implicit-function-declaration \
+ -Werror=pointer-arith -Werror=init-self -Werror=format-security \
+ -Werror=format=2 -Werror=missing-include-dirs; do
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports flag $flag in envvar CFLAGS" >&5
+$as_echo_n "checking if $CC supports flag $flag in envvar CFLAGS... " >&6; }
+if { as_var=`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`; eval \${$as_var+:} false; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "cc_save_CFLAGS='${CFLAGS}'"
+ eval "CFLAGS='-Werror $flag'"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int a = 0; int main(void) { return a; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`='yes'"
+else
+ eval "`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`='no'"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval "CFLAGS='$cc_save_CFLAGS'"
+fi
+eval ac_res=\$`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+ if eval test x$`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh` = xyes; then :
+ eval "GLIB_WARN_CFLAGS='${GLIB_WARN_CFLAGS} $flag'"
+fi
+
+ done
+
+
+fi
+
+
#
# Define variables corresponding to the correct include paths to use for
# in-tree building.
@@ -26180,14 +26141,9 @@ config_h_INCLUDES='-I$(top_builddir)'
glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
-# gthread:
-# same as glib
-gthread_INCLUDES='$(glib_INCLUDES)'
-
-
# gobject:
-# same as gthread
-gobject_INCLUDES='$(gthread_INCLUDES)'
+# same as glib
+gobject_INCLUDES='$(glib_INCLUDES)'
# gmodule:
@@ -26382,6 +26338,14 @@ if test -z "${MS_LIB_AVAILABLE_TRUE}" && test -z "${MS_LIB_AVAILABLE_FALSE}"; th
as_fn_error $? "conditional \"MS_LIB_AVAILABLE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${ENABLE_INSTALLED_TESTS_TRUE}" && test -z "${ENABLE_INSTALLED_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_INSTALLED_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_ALWAYS_BUILD_TESTS_TRUE}" && test -z "${ENABLE_ALWAYS_BUILD_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_ALWAYS_BUILD_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_GLIB_RUNTIME_LIBDIR_TRUE}" && test -z "${HAVE_GLIB_RUNTIME_LIBDIR_FALSE}"; then
as_fn_error $? "conditional \"HAVE_GLIB_RUNTIME_LIBDIR\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -26394,10 +26358,6 @@ if test -z "${HAVE_CXX_TRUE}" && test -z "${HAVE_CXX_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CXX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${OS_WIN32_AND_DLL_COMPILATION_TRUE}" && test -z "${OS_WIN32_AND_DLL_COMPILATION_FALSE}"; then
as_fn_error $? "conditional \"OS_WIN32_AND_DLL_COMPILATION\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -26423,6 +26383,10 @@ if test -z "${HAVE_INOTIFY_TRUE}" && test -z "${HAVE_INOTIFY_FALSE}"; then
as_fn_error $? "conditional \"HAVE_INOTIFY\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_KQUEUE_TRUE}" && test -z "${HAVE_KQUEUE_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_KQUEUE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_FEN_TRUE}" && test -z "${HAVE_FEN_FALSE}"; then
as_fn_error $? "conditional \"HAVE_FEN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -26435,12 +26399,20 @@ if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then
as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_EVENTFD_TRUE}" && test -z "${HAVE_EVENTFD_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_EVENTFD\" was never defined.
+if test -z "${THREADS_POSIX_TRUE}" && test -z "${THREADS_POSIX_FALSE}"; then
+ as_fn_error $? "conditional \"THREADS_POSIX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${THREADS_WIN32_TRUE}" && test -z "${THREADS_WIN32_FALSE}"; then
+ as_fn_error $? "conditional \"THREADS_WIN32\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_DBUS1_TRUE}" && test -z "${HAVE_DBUS1_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_DBUS1\" was never defined.
+if test -z "${THREADS_NONE_TRUE}" && test -z "${THREADS_NONE_FALSE}"; then
+ as_fn_error $? "conditional \"THREADS_NONE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_EVENTFD_TRUE}" && test -z "${HAVE_EVENTFD_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_EVENTFD\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
@@ -26840,7 +26812,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by glib $as_me 2.32.4, which was
+This file was extended by glib $as_me 2.38.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -26906,7 +26878,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-glib config.status 2.32.4
+glib config.status 2.38.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -27046,6 +27018,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -27126,7 +27099,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -27198,7 +27170,6 @@ with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
@@ -27240,6 +27211,7 @@ DLLTOOL \
OBJDUMP \
SHELL \
ECHO \
+PATH_SEPARATOR \
SED \
GREP \
EGREP \
@@ -27288,7 +27260,6 @@ with_gnu_ld \
allow_undefined_flag \
no_undefined_flag \
hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
exclude_expsyms \
include_expsyms \
@@ -27322,7 +27293,6 @@ with_gnu_ld_CXX \
allow_undefined_flag_CXX \
no_undefined_flag_CXX \
hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
hardcode_libdir_separator_CXX \
exclude_expsyms_CXX \
include_expsyms_CXX \
@@ -27532,7 +27502,9 @@ $ac_cv_sizeof___int64)
;;
esac
glib_size_t=$ac_cv_sizeof_size_t
+glib_ssize_t=$ac_cv_sizeof_ssize_t
glib_size_type_define="$glib_size_type"
+glib_ssize_type_define="$glib_ssize_type"
glib_void_p=$ac_cv_sizeof_void_p
glib_long=$ac_cv_sizeof_long
@@ -27540,32 +27512,52 @@ case "$glib_size_type" in
short)
gsize_modifier='"h"'
gsize_format='"hu"'
- gssize_format='"hi"'
glib_msize_type='SHRT'
;;
int)
gsize_modifier='""'
gsize_format='"u"'
- gssize_format='"i"'
glib_msize_type='INT'
;;
long)
gsize_modifier='"l"'
gsize_format='"lu"'
- gssize_format='"li"'
glib_msize_type='LONG'
;;
"long long"|__int64)
gsize_modifier='"I64"'
gsize_format='"I64u"'
- gssize_format='"I64i"'
glib_msize_type='INT64'
;;
esac
+case "$glib_ssize_type" in
+short)
+ gssize_modifier='"h"'
+ gssize_format='"hi"'
+ glib_mssize_type='SHRT'
+ ;;
+int)
+ gssize_modifier='""'
+ gssize_format='"i"'
+ glib_mssize_type='INT'
+ ;;
+long)
+ gssize_modifier='"l"'
+ gssize_format='"li"'
+ glib_mssize_type='LONG'
+ ;;
+"long long"|__int64)
+ gssize_modifier='"I64"'
+ gssize_format='"I64i"'
+ glib_mssize_type='INT64'
+ ;;
+esac
+
gintbits=`expr $ac_cv_sizeof_int \* 8`
glongbits=`expr $ac_cv_sizeof_long \* 8`
gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
+gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8`
case $ac_cv_sizeof_void_p in
$ac_cv_sizeof_int)
@@ -28363,7 +28355,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -28414,7 +28406,7 @@ $as_echo X"$mf" |
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
@@ -28476,8 +28468,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -28540,6 +28532,9 @@ SHELL=$lt_SHELL
# An echo program that protects backslashes.
ECHO=$lt_ECHO
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
# The host system.
host_alias=$host_alias
host=$host
@@ -28835,10 +28830,6 @@ no_undefined_flag=$lt_no_undefined_flag
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
@@ -29181,10 +29172,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
@@ -29377,19 +29364,21 @@ _______EOF
#define GLIB_SIZEOF_VOID_P $glib_void_p
#define GLIB_SIZEOF_LONG $glib_long
#define GLIB_SIZEOF_SIZE_T $glib_size_t
+#define GLIB_SIZEOF_SSIZE_T $glib_ssize_t
_______EOF
cat >>$outfile <<_______EOF
-typedef signed $glib_size_type_define gssize;
+typedef signed $glib_ssize_type_define gssize;
typedef unsigned $glib_size_type_define gsize;
#define G_GSIZE_MODIFIER $gsize_modifier
-#define G_GSSIZE_FORMAT $gssize_format
+#define G_GSSIZE_MODIFIER $gssize_modifier
#define G_GSIZE_FORMAT $gsize_format
+#define G_GSSIZE_FORMAT $gssize_format
#define G_MAXSIZE G_MAXU$glib_msize_type
-#define G_MINSSIZE G_MIN$glib_msize_type
-#define G_MAXSSIZE G_MAX$glib_msize_type
+#define G_MINSSIZE G_MIN$glib_mssize_type
+#define G_MAXSSIZE G_MAX$glib_mssize_type
typedef gint64 goffset;
#define G_MINOFFSET G_MININT64
@@ -29555,9 +29544,9 @@ _______EOF
#define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
#define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
#define GSIZE_TO_LE(val) ((gsize) GUINT${gsizebits}_TO_LE (val))
-#define GSSIZE_TO_LE(val) ((gssize) GINT${gsizebits}_TO_LE (val))
+#define GSSIZE_TO_LE(val) ((gssize) GINT${gssizebits}_TO_LE (val))
#define GSIZE_TO_BE(val) ((gsize) GUINT${gsizebits}_TO_BE (val))
-#define GSSIZE_TO_BE(val) ((gssize) GINT${gsizebits}_TO_BE (val))
+#define GSSIZE_TO_BE(val) ((gssize) GINT${gssizebits}_TO_BE (val))
#define G_BYTE_ORDER $g_byte_order
#define GLIB_SYSDEF_POLLIN =$g_pollin
diff --git a/glib/configure.ac b/glib/configure.ac
index 9e48cc9..ffa7869 100644
--- a/glib/configure.ac
+++ b/glib/configure.ac
@@ -30,9 +30,9 @@ m4_define(glib_configure_ac)
# <mclasen> on the unstable (ie master), interface age = 0
m4_define([glib_major_version], [2])
-m4_define([glib_minor_version], [32])
-m4_define([glib_micro_version], [4])
-m4_define([glib_interface_age], [4])
+m4_define([glib_minor_version], [38])
+m4_define([glib_micro_version], [2])
+m4_define([glib_interface_age], [2])
m4_define([glib_binary_age],
[m4_eval(100 * glib_minor_version + glib_micro_version)])
m4_define([glib_version],
@@ -56,14 +56,14 @@ m4_define([glib_debug_default],
AC_INIT(glib, [glib_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
-AC_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([glib/glib.h])
AC_CONFIG_MACRO_DIR([m4macros])
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
-AM_INIT_AUTOMAKE([1.11 no-define no-dist-gzip dist-xz tar-ustar foreign])
+AM_INIT_AUTOMAKE([1.11 -Wno-portability no-define no-dist-gzip dist-xz tar-ustar foreign])
AM_MAINTAINER_MODE([enable])
# Support silent build rules. Disable
@@ -111,6 +111,7 @@ AC_SUBST(LT_CURRENT_MINUS_AGE)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
+AC_USE_SYSTEM_EXTENSIONS
AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
@@ -150,6 +151,8 @@ case "$host" in
LIB_EXE_MACHINE_FLAG=X64
;;
esac
+
+ AC_DEFINE([_WIN32_WINNT], [0x0501], [Target the Windows XP API])
;;
*)
glib_native_win32=no
@@ -164,6 +167,17 @@ esac
AC_MSG_RESULT([$glib_native_win32])
+AC_MSG_CHECKING([for the Android])
+case $host in
+ *android*)
+ glib_native_android="yes"
+ ;;
+ *)
+ glib_native_android="no"
+ ;;
+esac
+AC_MSG_RESULT([$glib_native_android])
+
AC_SUBST(LIB_EXE_MACHINE_FLAG)
glib_have_carbon=no
@@ -193,7 +207,7 @@ AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
AM_CONDITIONAL(OS_COCOA, [test "$glib_have_cocoa" = "yes"])
-if test "$glib_native_win32" = "yes"; then
+AS_IF([test "$glib_native_win32" = "yes"], [
AC_CHECK_TOOL(WINDRES, windres, no)
if test "$WINDRES" = no; then
AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
@@ -203,74 +217,60 @@ if test "$glib_native_win32" = "yes"; then
AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
fi
AC_CHECK_TOOL(RANLIB, ranlib, :)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, :)
AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
-fi
+])
AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
-if test "$glib_native_win32" != yes; then
- # libtool option to control which symbols are exported
- # right now, symbols starting with _ are not exported
- LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^g.*"'
-else
- # We currently use .def files on Windows
- LIBTOOL_EXPORT_OPTIONS=
-fi
-AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
-
-if test "x$glib_have_carbon" = "xyes"; then
+AS_IF([test "x$glib_have_carbon" = "xyes"], [
AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
- LDFLAGS="$LDFLAGS -framework Carbon"
-fi
+ LDFLAGS="$LDFLAGS -Wl,-framework,Carbon"
+])
if test "x$glib_have_cocoa" = "xyes"; then
AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
- LDFLAGS="$LDFLAGS -framework Foundation"
-fi
-
-gl_GLIBC21
-if test "x$GLIBC21" = "xyes"; then
- AC_DEFINE([_GNU_SOURCE], 1, [Make all glibc extensions visible])
+ LDFLAGS="$LDFLAGS -Wl,-framework,Foundation"
fi
dnl declare --enable-* args and collect ac_help strings
AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+ AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
[turn on debugging @<:@default=glib_debug_default@:>@]),,
enable_debug=glib_debug_default)
AC_ARG_ENABLE(gc_friendly,
- [AC_HELP_STRING([--enable-gc-friendly],
+ [AS_HELP_STRING([--enable-gc-friendly],
[turn on garbage collector friendliness [default=no]])],,
[enable_gc_friendly=no])
AC_ARG_ENABLE(mem_pools,
- [AC_HELP_STRING([--disable-mem-pools],
+ [AS_HELP_STRING([--disable-mem-pools],
[disable all glib memory pools])],,
[disable_mem_pools=no])
AC_ARG_ENABLE(rebuilds,
- [AC_HELP_STRING([--disable-rebuilds],
+ [AS_HELP_STRING([--disable-rebuilds],
[disable all source autogeneration rules])],,
[enable_rebuilds=yes])
+GLIB_TESTS
+
AC_MSG_CHECKING([whether to enable garbage collector friendliness])
-if test "x$enable_gc_friendly" = "xyes"; then
+AS_IF([test "x$enable_gc_friendly" = "xyes"], [
AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
AC_MSG_RESULT([yes])
-else
- AC_MSG_RESULT([no])
-fi
+], [ AC_MSG_RESULT([no]) ])
AC_MSG_CHECKING([whether to disable memory pools])
-if test "x$disable_mem_pools" = "xno"; then
+AS_IF([test "x$disable_mem_pools" = "xno"], [
AC_MSG_RESULT([no])
-else
+], [
AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
AC_MSG_RESULT([yes])
-fi
+])
dnl location to install runtime libraries, e.g. ../../lib to install
dnl to /lib if libdir is /usr/lib
AC_ARG_WITH(runtime-libdir,
- [AC_HELP_STRING([--with-runtime-libdir=RELPATH],
+ [AS_HELP_STRING([--with-runtime-libdir=RELPATH],
[install runtime libraries relative to libdir])],
[],
[with_runtime_libdir=""])
@@ -288,7 +288,6 @@ AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
AC_LANG_RESTORE
-AM_PROG_CC_STDC
AM_PROG_CC_C_O
AC_PROG_INSTALL
@@ -374,7 +373,16 @@ if test "x$PERL_PATH" = x ; then
fi
AC_SUBST(PERL_PATH)
-# Need suitable python path for greport
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+AC_ARG_WITH(python,
+ AS_HELP_STRING([--with-python=PATH],
+ [Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
+ [PYTHON="$withval"], [])
+if test x"$PYTHON" = xyes; then
+ AC_MSG_ERROR([--with-python option requires a path or program argument])
+fi
AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
@@ -386,11 +394,11 @@ dnl We do this before the gettext checks, to avoid distortion
dnl On Windows we use a native implementation
-if test x"$glib_native_win32" = xyes; then
+AS_IF([ test x"$glib_native_win32" = xyes], [
with_libiconv=native
-else
+], [
AC_ARG_WITH(libiconv,
- [AC_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
+ [AS_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
[use the libiconv library])],,
[with_libiconv=maybe])
@@ -422,34 +430,7 @@ else
if test "x$found_iconv" = "xno" ; then
AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
fi
-fi
-
-AC_ARG_ENABLE(iconv-cache,
- [AC_HELP_STRING([--enable-iconv-cache=@<:@yes/no/auto@:>@],
- [cache iconv descriptors [default=auto]])],,
- [enable_iconv_cache=auto])
-
-AC_MSG_CHECKING([whether to cache iconv descriptors])
-case $enable_iconv_cache in
- auto)
- if test $ac_cv_gnu_library_2_1 = yes; then
- enable_iconv_cache=no
- else
- enable_iconv_cache=yes
- fi
- ;;
- yes|no)
- ;;
- *) AC_MSG_ERROR([Value given to --enable-iconv-cache must be one of yes, no or auto])
- ;;
-esac
-
-if test $enable_iconv_cache = yes; then
- AC_DEFINE(NEED_ICONV_CACHE,1,[Do we cache iconv descriptors])
-fi
-
-AC_MSG_RESULT($enable_iconv_cache)
-
+])
dnl
dnl gettext support
@@ -466,14 +447,14 @@ dnl
dnl Now we are done with gettext checks, figure out ICONV_LIBS
dnl
-if test x"$glib_native_win32" != xyes; then
+AS_IF([test x"$glib_native_win32" != xyes], [
if test x$with_libiconv != xno ; then
case " $INTLLIBS " in
*[[\ \ ]]-liconv[[\ \ ]]*) ;;
*) ICONV_LIBS="-liconv" ;;
esac
fi
-fi
+])
AC_SUBST(ICONV_LIBS)
case $with_libiconv in
@@ -497,14 +478,7 @@ dnl when using libtool 2.x create libtool early, because it's used in configure
m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
-if test "x$GCC" = "xyes"; then
- case " $CFLAGS " in
- *[[\ \ ]]-Wall[[\ \ ]]*) ;;
- *) CFLAGS="$CFLAGS -Wall" ;;
- esac
-fi
-
-if test "$glib_native_win32" = "yes"; then
+AS_IF([test "$glib_native_win32" = "yes"], [
if test x$enable_static = xyes -a x$enable_shared = xyes; then
AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
fi
@@ -514,13 +488,13 @@ if test "$glib_native_win32" = "yes"; then
#define GOBJECT_STATIC_COMPILATION 1"
AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
fi
-fi
+])
AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
dnl
dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
dnl
-if test $cross_compiling != yes ; then
+AS_IF([test $cross_compiling != yes], [
AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
glib_save_LIBS=$LIBS
LIBS="$LIBS -lm"
@@ -539,7 +513,7 @@ if test $cross_compiling != yes ; then
)
)
LIBS=$glib_save_LIBS
-fi
+])
dnl NeXTStep cc seems to need this
AC_MSG_CHECKING([for extra flags for POSIX compliance])
@@ -556,9 +530,20 @@ AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
# Checks for library functions.
AC_FUNC_VPRINTF
AC_FUNC_ALLOCA
-AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2)
+AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r)
+AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure,
+ [AC_TRY_LINK([#include <unistd.h>
+ extern int __libc_enable_secure;],
+ [return __libc_enable_secure;],
+ glib_cv_have_libc_enable_secure=yes,
+ glib_cv_have_libc_enable_secure=no)])
+AS_IF([test x$glib_cv_have_libc_enable_secure = xyes], [
+ AC_DEFINE(HAVE_LIBC_ENABLE_SECURE, 1,
+ [Define if you have the __libc_enable_secure variable (GNU libc, eglibc)])
+])
+
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(long)
@@ -588,7 +573,7 @@ else
])
fi
-if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
+AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
# long long is a 64 bit integer.
AC_MSG_CHECKING(for format to printf and scanf a guint64)
AC_CACHE_VAL(glib_cv_long_long_format,[
@@ -607,16 +592,14 @@ if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then
break],
[],[:])
done])
- if test -n "$glib_cv_long_long_format"; then
+ AS_IF([ test -n "$glib_cv_long_long_format"], [
AC_MSG_RESULT(%${glib_cv_long_long_format}u)
AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
if test x"$glib_cv_long_long_format" = xI64; then
AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
- fi
- else
- AC_MSG_RESULT(none)
- fi
-elif test x$ac_cv_sizeof___int64 = x8; then
+ fi
+ ], [AC_MSG_RESULT(none)])
+],[ test x$ac_cv_sizeof___int64 = x8], [
# __int64 is a 64 bit integer.
AC_MSG_CHECKING(for format to printf and scanf a guint64)
# We know this is MSVCRT.DLL, and what the formats are
@@ -624,37 +607,10 @@ elif test x$ac_cv_sizeof___int64 = x8; then
AC_MSG_RESULT(%${glib_cv_long_long_format}u)
AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
-fi
+])
AC_C_CONST
-dnl ok, here we try to check whether the systems prototypes for
-dnl malloc and friends actually match the prototypes provided
-dnl by gmem.h (keep in sync). i currently only know how to check
-dnl this reliably with gcc (-Werror), improvements for other
-dnl compilers are apprechiated.
-SANE_MALLOC_PROTOS=no
-AC_MSG_CHECKING([if malloc() and friends prototypes are gmem.h compatible])
-glib_save_CFLAGS=$CFLAGS
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -Werror"
- AC_TRY_COMPILE([#include <stdlib.h>], [
- void* (*my_calloc_p) (size_t, size_t) = calloc;
- void* (*my_malloc_p) (size_t) = malloc;
- void (*my_free_p) (void*) = free;
- void* (*my_realloc_p) (void*, size_t) = realloc;
- my_calloc_p = 0;
- my_malloc_p = 0;
- my_free_p = 0;
- my_realloc_p = 0;
- ],
- AC_DEFINE(SANE_MALLOC_PROTOS, 1,
- [Define if you have correct malloc prototypes])
- SANE_MALLOC_PROTOS=yes)
-fi
-AC_MSG_RESULT($SANE_MALLOC_PROTOS)
-CFLAGS=$glib_save_CFLAGS
-
dnl
dnl check in which direction the stack grows
dnl
@@ -768,7 +724,7 @@ call_a(2,3);
AC_MSG_RESULT($g_have_iso_c_varargs)
AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
-if test "$CXX" = ""; then
+AS_IF([test "$CXX" = ""], [
dnl No C++ compiler
g_have_iso_cxx_varargs=no
else
@@ -779,7 +735,7 @@ int a(int p1, int p2, int p3);
call_a(2,3);
],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
AC_LANG_C
-fi
+])
AC_MSG_RESULT($g_have_iso_cxx_varargs)
AC_MSG_CHECKING(for GNUC varargs macros)
@@ -813,7 +769,7 @@ __attribute__ ((visibility ("default")))
f_default (void)
{
}
-int main (int argc, char **argv)
+int main (void)
{
f_hidden();
f_internal();
@@ -855,7 +811,7 @@ fi
AC_CHECK_HEADERS([dirent.h float.h limits.h pwd.h grp.h sys/param.h sys/poll.h sys/resource.h])
AC_CHECK_HEADERS([sys/time.h sys/times.h sys/wait.h unistd.h values.h])
AC_CHECK_HEADERS([sys/select.h sys/types.h stdint.h inttypes.h sched.h malloc.h])
-AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h])
+AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h])
AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
AC_CHECK_HEADERS([sys/uio.h sys/mkdev.h])
AC_CHECK_HEADERS([linux/magic.h])
@@ -866,6 +822,7 @@ AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
#include <sys/param.h>
#endif
])
+AC_CHECK_FUNCS(sysctlbyname)
AC_CHECK_HEADERS([xlocale.h])
@@ -894,11 +851,12 @@ AC_STRUCT_DIRENT_D_TYPE
AM_LANGINFO_CODESET
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
AC_CHECK_FUNCS(setlocale)
+gl_GLIBC21
# check additional type sizes
AC_CHECK_SIZEOF(size_t)
-dnl Try to figure out whether gsize, gssize should be long or int
+dnl Try to figure out whether gsize should be long or int
AC_MSG_CHECKING([for the appropriate definition for size_t])
case $ac_cv_sizeof_size_t in
@@ -925,8 +883,8 @@ dnl If int/long are the same size, we see which one produces
dnl warnings when used in the location as size_t. (This matters
dnl on AIX with xlc)
dnl
-if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
- test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long ; then
+AS_IF([test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
+ test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long], [
GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
#if defined(_AIX) && !defined(__GNUC__)
#pragma options langlvl=stdc89
@@ -951,14 +909,97 @@ int main ()
return (int)*size_long;
}
]])],glib_size_type=long)])
-fi
+])
AC_MSG_RESULT(unsigned $glib_size_type)
+AC_CHECK_SIZEOF(ssize_t)
+
+dnl Try to figure out whether gssize should be long or int
+AC_MSG_CHECKING([for the appropriate definition for ssize_t])
+
+case $ac_cv_sizeof_ssize_t in
+ $ac_cv_sizeof_short)
+ glib_ssize_type=short
+ ;;
+ $ac_cv_sizeof_int)
+ glib_ssize_type=int
+ ;;
+ $ac_cv_sizeof_long)
+ glib_ssize_type=long
+ ;;
+ $ac_cv_sizeof_long_long)
+ glib_ssize_type='long long'
+ ;;
+ $ac_cv_sizeof__int64)
+ glib_ssize_type='__int64'
+ ;;
+ *) AC_MSG_ERROR([No type matching ssize_t in size])
+ ;;
+esac
+
+dnl If int/long are the same size, we see which one produces
+dnl warnings when used in the location as ssize_t. (This matters
+dnl on Android where ssize_t is long and size_t is unsigned int)
+dnl
+AS_IF([test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int &&
+ test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long], [
+ GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+ ssize_t s = 1;
+ int *size_int = &s;
+ return (int)*size_int;
+}
+ ]])],glib_ssize_type=int,
+ [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
+#if defined(_AIX) && !defined(__GNUC__)
+#pragma options langlvl=stdc89
+#endif
+#include <stddef.h>
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+int main ()
+{
+ ssize_t s = 1;
+ long *size_long = &s;
+ return (int)*size_long;
+}
+ ]])],glib_ssize_type=long)])
+])
+
+AC_MSG_RESULT($glib_ssize_type)
+
# Check for some functions
AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
-AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid)
-AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat)
+AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid)
+AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate)
# Check for high-resolution sleep functions
AC_CHECK_FUNCS(splice)
AC_CHECK_FUNCS(prlimit)
@@ -1028,10 +1069,31 @@ if $glib_failed ; then
AC_MSG_ERROR([Could not determine values for MSG_* constants])
fi
-AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex)
-AC_CHECK_HEADERS([netdb.h wspiapi.h arpa/nameser_compat.h])
+AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname)
+
+AS_IF([test $glib_native_win32 = yes], [
+ # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
+ # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
+ # they aren't present at run-time (on Windows 2000).
+ AC_CHECK_HEADER([wspiapi.h], [WSPIAPI_INCLUDE="#include <wspiapi.h>"])
+ AC_SUBST(WSPIAPI_INCLUDE)
+], [
+ # Android does not have C_IN in public headers, we define it wherever necessary
+ AS_IF([test $glib_native_android != yes], [
+ AC_MSG_CHECKING([if arpa/nameser_compat.h is needed])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+ #include <arpa/nameser.h>],
+ [int qclass = C_IN;])],
+ [AC_MSG_RESULT([no])],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+ #include <arpa/nameser.h>
+ #include <arpa/nameser_compat.h>],
+ [int qclass = C_IN;])],
+ [AC_MSG_RESULT([yes])
+ NAMESER_COMPAT_INCLUDE="#include <arpa/nameser_compat.h>"],
+ [AC_MSG_ERROR([could not compile test program either way])])])])
+ AC_SUBST(NAMESER_COMPAT_INCLUDE)
-if test $glib_native_win32 = no; then
# We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
NETWORK_LIBS=""
AC_MSG_CHECKING([for res_query])
@@ -1062,7 +1124,20 @@ if test $glib_native_win32 = no; then
AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
[NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
[AC_MSG_ERROR(Could not find socket())]))
-fi
+ save_libs="$LIBS"
+ LIBS="$LIBS $NETWORK_LIBS"
+ AC_MSG_CHECKING([for res_init])
+ AC_TRY_LINK([#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],[
+ res_init();
+ ],[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if you have the 'res_init' function.])
+ ],[AC_MSG_RESULT([no])])
+ LIBS="$save_libs"
+])
AC_SUBST(NETWORK_LIBS)
AC_CHECK_HEADER([linux/netlink.h],
@@ -1085,7 +1160,7 @@ esac
dnl
dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
dnl
-if test "$ac_cv_func_statfs" = yes ; then
+AS_IF([test "$ac_cv_func_statfs" = yes], [
AC_MSG_CHECKING([number of arguments to statfs()])
AC_TRY_COMPILE([#include <unistd.h>
#ifdef HAVE_SYS_PARAM_H
@@ -1121,14 +1196,14 @@ if test "$ac_cv_func_statfs" = yes ; then
AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
AC_MSG_RESULT(unknown)
AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
-fi
+])
#
# Check whether to use an included printf
#
AC_ARG_ENABLE(included-printf,
- [AC_HELP_STRING([--enable-included-printf],
+ [AS_HELP_STRING([--enable-included-printf],
[use included printf [default=auto]])],
enable_included_printf="$enableval")
@@ -1157,14 +1232,14 @@ fi
enable_included_printf=$need_included_printf
AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
-if test "$enable_included_printf" != "yes" ; then
+AS_IF([test "$enable_included_printf" != "yes"], [
AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
-else
+], [
if test -z "$glib_cv_long_long_format" ; then
glib_cv_long_long_format="ll"
fi
AC_DEFINE(HAVE_VASPRINTF,1)
-fi
+])
# Checks needed for gnulib vasnprintf
bh_C_SIGNED
@@ -1180,7 +1255,7 @@ AC_FUNC_SNPRINTF_C99
# Check if bcopy can be used for overlapping copies, if memmove isn't found.
# The check is borrowed from the PERL Configure script.
-if test "$ac_cv_func_memmove" != "yes"; then
+AS_IF([test "$ac_cv_func_memmove" != "yes"], [
AC_CACHE_CHECK(whether bcopy can handle overlapping copies,
glib_cv_working_bcopy,[AC_TRY_RUN([
int main() {
@@ -1203,15 +1278,15 @@ if test "$ac_cv_func_memmove" != "yes"; then
if test "$glib_cv_working_bcopy" = "yes"; then
AC_DEFINE(HAVE_WORKING_BCOPY,1,[Have a working bcopy])
fi
-fi
+])
# Check if <sys/select.h> needs to be included for fd_set
AC_MSG_CHECKING([for fd_set])
AC_TRY_COMPILE([#include <sys/types.h>],
[fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
-if test "$gtk_ok" = "yes"; then
+AS_IF([test "$gtk_ok" = "yes"], [
AC_MSG_RESULT([yes, found in sys/types.h])
-else
+], [
AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
if test "$gtk_ok" = "yes"; then
# *** FIXME: give it a different name
@@ -1221,26 +1296,14 @@ else
AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
AC_MSG_RESULT(no)
fi
-fi
-
-dnl *** check for sane realloc() ***
-AC_CACHE_CHECK([whether realloc (NULL,) will work],glib_cv_sane_realloc,[
- AC_TRY_RUN([#include <stdlib.h>
- int main() {
- return realloc (0, sizeof (int)) == 0;
- }],
- [glib_cv_sane_realloc=yes],
- [glib_cv_sane_realloc=no],
- [glib_cv_sane_realloc=yes])
])
-if test x$glib_cv_sane_realloc = xyes; then
- AC_DEFINE(REALLOC_0_WORKS,1,[whether realloc (NULL,) works])
-fi
dnl Check for nl_langinfo and CODESET
+AC_LANG_SAVE
+AC_LANG_C
AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
- AC_TRY_COMPILE([#include <langinfo.h>],
- [char *codeset = nl_langinfo (CODESET);],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
+ [char *codeset = nl_langinfo (CODESET);])],
[glib_cv_langinfo_codeset=yes],
[glib_cv_langinfo_codeset=no])])
if test x$glib_cv_langinfo_codeset = xyes; then
@@ -1249,8 +1312,8 @@ fi
dnl Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
- AC_TRY_COMPILE([#include <langinfo.h>],
- [char *str;
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
+ [char *str;
str = nl_langinfo (PM_STR);
str = nl_langinfo (D_T_FMT);
str = nl_langinfo (D_FMT);
@@ -1259,7 +1322,7 @@ AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
str = nl_langinfo (MON_1);
str = nl_langinfo (ABMON_12);
str = nl_langinfo (DAY_1);
- str = nl_langinfo (ABDAY_7);],
+ str = nl_langinfo (ABDAY_7);])],
[glib_cv_langinfo_time=yes],
[glib_cv_langinfo_time=no])])
if test x$glib_cv_langinfo_time = xyes; then
@@ -1268,7 +1331,7 @@ fi
dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_MB
AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outdigit,[
- AC_TRY_COMPILE([#include <langinfo.h>],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
[char *str;
str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
@@ -1279,12 +1342,13 @@ AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outd
str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
- str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);],
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);])],
[glib_cv_langinfo_outdigit=yes],
[glib_cv_langinfo_outdigit=no])])
if test x$glib_cv_langinfo_outdigit = xyes; then
AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)])
fi
+AC_LANG_RESTORE
dnl ****************************************
dnl *** posix_memalign ***
@@ -1321,12 +1385,12 @@ AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
:
fi
])
-if test "$glib_cv_compliant_posix_memalign" = "1"; then
+AS_IF([test "$glib_cv_compliant_posix_memalign" = "1"], [
AC_MSG_RESULT(yes)
AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
-else
+], [
AC_MSG_RESULT(no)
-fi
+])
dnl ****************************************
@@ -1423,9 +1487,9 @@ AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
[glib_cv_va_val_copy=yes])
])
-if test "x$glib_cv_va_val_copy" = "xno"; then
+AS_IF([ test "x$glib_cv_va_val_copy" = "xno"], [
AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
-fi
+])
dnl ***********************
dnl *** g_module checks ***
@@ -1458,45 +1522,45 @@ if test -z "$G_MODULE_IMPL"; then
esac
fi
dnl *** dlopen() and dlsym() in system libraries
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
AC_CHECK_FUNC(dlopen,
[AC_CHECK_FUNC(dlsym,
[G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
[])
-fi
+])
dnl *** load_image (BeOS)
-if test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"; then
+AS_IF([test -z "$G_MODULE_IMPL" && test "x$glib_native_beos" = "xyes"], [
AC_CHECK_LIB(root, load_image,
[G_MODULE_LIBS="-lbe -lroot -lglib-2.0 "
G_MODULE_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
G_MODULE_PLUGIN_LIBS="-L\$(top_builddir_full)/gmodule/.libs -lgmodule"
G_MODULE_IMPL=G_MODULE_IMPL_BEOS],
[])
-fi
+])
dnl *** NSLinkModule (dyld) in system libraries (Darwin)
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL" ], [
AC_CHECK_FUNC(NSLinkModule,
[G_MODULE_IMPL=G_MODULE_IMPL_DYLD
G_MODULE_NEED_USCORE=1],
[])
-fi
+])
dnl *** dlopen() and dlsym() in libdl
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
AC_CHECK_LIB(dl, dlopen,
[AC_CHECK_LIB(dl, dlsym,
[G_MODULE_LIBS=-ldl
G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
[])
-fi
+])
dnl *** shl_load() in libdld (HP-UX)
-if test -z "$G_MODULE_IMPL"; then
+AS_IF([ test -z "$G_MODULE_IMPL"], [
AC_CHECK_LIB(dld, shl_load,
[G_MODULE_LIBS=-ldld
G_MODULE_IMPL=G_MODULE_IMPL_DLD],
[])
-fi
+])
dnl *** additional checks for G_MODULE_IMPL_DL
-if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
+AS_IF([ test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ], [
LIBS_orig="$LIBS"
LDFLAGS_orig="$LDFLAGS"
LIBS="$G_MODULE_LIBS $LIBS"
@@ -1571,7 +1635,7 @@ dnl *** check for having dlerror()
[G_MODULE_HAVE_DLERROR=1],
[G_MODULE_HAVE_DLERROR=0])
LIBS="$LIBS_orig"
-fi
+])
dnl *** done, have we got an implementation?
if test -z "$G_MODULE_IMPL"; then
G_MODULE_IMPL=0
@@ -1641,34 +1705,13 @@ dnl *** Directory for GIO modules ***
dnl *********************************
AC_ARG_WITH(gio-module-dir,
- [AC_HELP_STRING([--with-gio-module-dir=DIR],
+ [AS_HELP_STRING([--with-gio-module-dir=DIR],
[load gio modules from this directory [LIBDIR/gio/modules]])],
[],
[with_gio_module_dir='${libdir}/gio/modules'])
GIO_MODULE_DIR=$with_gio_module_dir
AC_SUBST(GIO_MODULE_DIR)
-dnl **********************************
-dnl *** Check for libselinux (GIO) ***
-dnl **********************************
-AC_ARG_ENABLE(selinux,
- AC_HELP_STRING([--disable-selinux],
- [build without selinux support]))
-msg_selinux=no
-SELINUX_LIBS=
-if test "x$enable_selinux" != "xno"; then
-
- AC_CHECK_LIB(selinux, is_selinux_enabled,
- [AC_CHECK_HEADERS(selinux/selinux.h,
- [AC_CHECK_LIB(selinux, lgetfilecon_raw,
- [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
- SELINUX_LIBS="-lselinux"
- msg_selinux=yes])
- ])
- ])
-fi
-AC_SUBST(SELINUX_LIBS)
-
dnl *****************************
dnl ** Check for inotify (GIO) **
dnl *****************************
@@ -1681,6 +1724,17 @@ AC_CHECK_HEADERS([sys/inotify.h],
AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
+dnl ****************************
+dnl ** Check for kqueue (GIO) **
+dnl ****************************
+kqueue_support=no
+AC_CHECK_HEADERS([sys/event.h],
+[
+ AC_CHECK_FUNCS(kqueue kevent, [kqueue_support=yes])
+])
+
+AM_CONDITIONAL(HAVE_KQUEUE, [test "$kqueue_support" = "yes"])
+
dnl *********************************
dnl ** Check for Solaris FEN (GIO) **
dnl *********************************
@@ -1698,62 +1752,6 @@ int main() { return 0; } ]])],
AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"])
-dnl *****************************
-dnl *** Check for xattr (GIO) ***
-dnl *****************************
-AC_ARG_ENABLE(xattr,
- AC_HELP_STRING([--disable-xattr], [build without xattr support]))
-msg_xattr=no
-XATTR_LIBS=
-if test "x$enable_xattr" != "xno"; then
-
-dnl either glibc or libattr can provide xattr support
-
-dnl for both of them, we check for getxattr being in
-dnl the library and a valid xattr header.
-
-dnl try glibc
- AC_CHECK_LIB(c, getxattr,
- [AC_CHECK_HEADERS(sys/xattr.h,
- [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
- msg_xattr=yes])
- ])
-
- if test "x$msg_xattr" != "xyes"; then
-dnl failure. try libattr
- AC_CHECK_LIB(attr, getxattr,
- [AC_CHECK_HEADERS(attr/xattr.h,
- [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
- XATTR_LIBS="-lattr"
- msg_xattr=yes])
- ])
- fi
-
- if test "x$msg_xattr" = "xyes"; then
- AC_MSG_CHECKING([for XATTR_NOFOLLOW])
- AC_TRY_COMPILE([
- #include <stdio.h>
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_XATTR_H
- #include <sys/xattr.h>
- #elif HAVE_ATTR_XATTR_H
- #include <attr/xattr.h>
- #endif
- ],
- [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
- [
- AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
- AC_MSG_RESULT([yes])
- ],
- [AC_MSG_RESULT([no])]
- )
- fi
-
-fi
-AC_SUBST(XATTR_LIBS)
-
dnl ****************************************
dnl *** platform dependent source checks ***
dnl ****************************************
@@ -1799,7 +1797,7 @@ dnl *** g_thread checks ***
dnl ***********************
AC_ARG_WITH(threads,
- [AC_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
+ [AS_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
[specify a thread implementation to use])],
[],
[with_threads=yes])
@@ -1840,17 +1838,17 @@ dnl ***************************************
AC_MSG_CHECKING(for thread implementation)
have_threads=no
-if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
+AS_IF([ test "x$with_threads" = xyes || test "x$with_threads" = xposix], [
# -D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE is for DG/UX
# -U_OSF_SOURCE is for Digital UNIX 4.0d
GTHREAD_COMPILE_IMPL_DEFINES="-D_POSIX4_DRAFT_SOURCE -D_POSIX4A_DRAFT10_SOURCE -U_OSF_SOURCE"
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test "x$have_threads" = xno; then
+ AS_IF([ test "x$have_threads" = xno], [
AC_TRY_COMPILE([#include <pthread.h>],
[pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
have_threads=posix)
- fi
+ ])
# Tru64Unix requires -pthread to find pthread.h. See #103020
CPPFLAGS="$CPPFLAGS -pthread"
if test "x$have_threads" = xno; then
@@ -1859,7 +1857,7 @@ if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then
have_threads=posix)
fi
CPPFLAGS="$glib_save_CPPFLAGS"
-fi
+])
if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
case $host in
*-*-mingw*)
@@ -1898,7 +1896,7 @@ int main()
return (check_me != 42 || ret != &check_me);
}])
-if test x"$have_threads" = xposix; then
+AS_IF([ test x"$have_threads" = xposix], [
# First we test for posix, whether -pthread or -pthreads do the trick as
# both CPPFLAG and LIBS.
# One of them does for most gcc versions and some other platforms/compilers
@@ -1933,9 +1931,9 @@ if test x"$have_threads" = xposix; then
done
;;
esac
-fi
+])
-if test x"$G_THREAD_CFLAGS" = x; then
+AS_IF([ test x"$G_THREAD_CFLAGS" = x], [
# The canonical -pthread[s] does not work. Try something different.
@@ -1974,8 +1972,7 @@ if test x"$G_THREAD_CFLAGS" = x; then
G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
;;
esac
-
-fi
+])
# if we are not finding the localtime_r function, then we probably are
# not using the proper multithread flag
@@ -2003,11 +2000,10 @@ CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
dnl determination of G_THREAD_LIBS
dnl ******************************
-case $have_threads in
- posix)
+AS_IF([test x$have_threads = xposix], [
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- if test x"$G_THREAD_LIBS" = x; then
+ AS_IF([ test x"$G_THREAD_LIBS" = x ], [
case $host in
*-aix*)
# We are not using gcc (would have set G_THREAD_LIBS) and thus
@@ -2053,20 +2049,23 @@ case $have_threads in
LIBS="$glib_save_LIBS"
;;
esac
- fi
+ ])
g_threads_impl="POSIX"
+ AC_DEFINE([THREADS_POSIX], [1], [Use pthreads])
AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
CPPFLAGS="$glib_save_CPPFLAGS"
- ;;
- win32)
+], [test x$have_threads = xwin32], [
+ AC_DEFINE([THREADS_WIN32], [1], [Use w32 threads])
g_threads_impl="WIN32"
- ;;
- *)
+], [
+ AC_DEFINE([THREADS_NONE], [1], [Use no threads])
g_threads_impl="NONE"
G_THREAD_LIBS=error
- ;;
-esac
+])
+AM_CONDITIONAL(THREADS_POSIX, [test "$g_threads_impl" = "POSIX"])
+AM_CONDITIONAL(THREADS_WIN32, [test "$g_threads_impl" = "WIN32"])
+AM_CONDITIONAL(THREADS_NONE, [test "$g_threads_impl" = "NONE"])
if test "x$G_THREAD_LIBS" = xerror; then
AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
@@ -2092,7 +2091,7 @@ glib_save_LIBS="$LIBS"
# to always be linked with the thread libs on some platforms.
# LIBS="$LIBS $G_THREAD_LIBS"
AC_CHECK_FUNCS(localtime_r gmtime_r)
-if test "$ac_cv_header_pwd_h" = "yes"; then
+AS_IF([ test "$ac_cv_header_pwd_h" = "yes"], [
AC_CACHE_CHECK([for posix getpwuid_r],
ac_cv_func_posix_getpwuid_r,
[AC_TRY_RUN([
@@ -2130,8 +2129,8 @@ int main () {
[Have non-POSIX function getpwuid_r])
fi
fi
-fi
-if test "$ac_cv_header_grp_h" = "yes"; then
+])
+AS_IF([ test "$ac_cv_header_grp_h" = "yes"], [
AC_CACHE_CHECK([for posix getgrgid_r],
ac_cv_func_posix_getgrgid_r,
[AC_TRY_RUN([
@@ -2150,10 +2149,10 @@ int main () {
[ac_cv_func_posix_getgrgid_r=yes],
[ac_cv_func_posix_getgrgid_r=no])])
GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
- if test "$ac_cv_func_posix_getgrgid_r" = yes; then
+ AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
[Have POSIX function getgrgid_r])
- else
+ ], [
AC_CACHE_CHECK([for nonposix getgrgid_r],
ac_cv_func_nonposix_getgrgid_r,
[AC_TRY_LINK([#include <grp.h>],
@@ -2168,10 +2167,10 @@ int main () {
AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
[Have non-POSIX function getgrgid_r])
fi
- fi
-fi
+ ])
+])
LIBS="$G_THREAD_LIBS $LIBS"
-if test x"$have_threads" = xposix; then
+AS_IF([ test x"$have_threads" = xposix], [
glib_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
# This is not AC_CHECK_FUNC to also work with function
@@ -2194,8 +2193,26 @@ if test x"$have_threads" = xposix; then
AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
[Have function pthread_condattr_setclock])],
[AC_MSG_RESULT(no)])
+ AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_cond_timedwait_monotonic(NULL, NULL, NULL)])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC,1,
+ [Have function pthread_cond_timedwait_monotonic])],
+ [AC_MSG_RESULT(no)])
+ AC_MSG_CHECKING(for pthread_cond_timedwait_monotonic_np)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_cond_timedwait_monotonic_np(NULL, NULL, NULL)])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP,1,
+ [Have function pthread_cond_timedwait_monotonic_np])],
+ [AC_MSG_RESULT(no)])
CPPFLAGS="$glib_save_CPPFLAGS"
-fi
+])
LIBS="$glib_save_LIBS"
@@ -2216,6 +2233,9 @@ fi
# b) FreeBSD doesn't do this either.
#
case $host in
+ *android*)
+ G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
+ ;;
*-*-freebsd*|*-*-linux*)
G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
;;
@@ -2258,7 +2278,7 @@ dnl
dnl We can currently support the atomic ops natively when building GLib
dnl with recent versions of GCC or MSVC. MSVC doesn't run ./configure,
dnl so we skip that case here and define G_ATOMIC_LOCK_FREE exactly when
-dnl we are using GCC.
+dnl we are using GCC (and not mingw*).
dnl
dnl Note that the atomic ops are only available with GCC on x86 when
dnl using -march=i486 or higher. If we detect that the atomic ops are
@@ -2270,20 +2290,44 @@ dnl the user had the wrong build environment.
dnl We may add other compilers here in the future...
AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
- AC_TRY_COMPILE([],
- [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
- [glib_cv_g_atomic_lock_free=yes],
- [glib_cv_g_atomic_lock_free=no])])
-
-if test "$glib_cv_g_atomic_lock_free" = "no"; then
- SAVE_CFLAGS="${CFLAGS}"
- CFLAGS="-march=i486"
- AC_TRY_COMPILE([],
- [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
- [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
- [])
- CFLAGS="${SAVE_CFLAGS}"
-fi
+ case $host in
+ *-*-mingw*)
+ glib_cv_g_atomic_lock_free=yes
+ ;;
+ *)
+ AC_TRY_LINK([],
+ [volatile int atomic = 2;\
+ __sync_bool_compare_and_swap (&atomic, 2, 3);],
+ [glib_cv_g_atomic_lock_free=yes],
+ [glib_cv_g_atomic_lock_free=no])
+ if test "$glib_cv_g_atomic_lock_free" = "no"; then
+ SAVE_CFLAGS="${CFLAGS}"
+ CFLAGS="-march=i486"
+ AC_TRY_LINK([],
+ [volatile int atomic = 2;\
+ __sync_bool_compare_and_swap (&atomic, 2, 3);],
+ [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
+ [])
+ CFLAGS="${SAVE_CFLAGS}"
+ fi
+ ;;
+ esac])
+
+
+case $host in
+ *-*-mingw*)
+ ;;
+ *)
+ # Some compilers support atomic operations but do not define
+ # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
+ if test x"$glib_cv_g_atomic_lock_free" = xyes; then
+ AC_TRY_LINK([],
+ [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
+ [],
+ [AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
+ fi
+ ;;
+ esac
dnl We need a more robust approach here...
case $host_cpu in
@@ -2345,8 +2389,8 @@ glib_poll_includes=["
#include <sys/poll.h>
"]
-if test $ac_cv_header_sys_types_h = yes &&
- test $ac_cv_header_sys_poll_h = yes ; then
+AS_IF([ test $ac_cv_header_sys_types_h = yes &&
+ test $ac_cv_header_sys_poll_h = yes ], [
glib_failed=false
GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
@@ -2357,14 +2401,14 @@ if test $ac_cv_header_sys_types_h = yes &&
if $glib_failed ; then
AC_MSG_ERROR([Could not determine values for POLL* constants])
fi
-else
+], [
glib_cv_value_POLLIN=1
glib_cv_value_POLLOUT=4
glib_cv_value_POLLPRI=2
glib_cv_value_POLLERR=8
glib_cv_value_POLLHUP=16
glib_cv_value_POLLNVAL=32
-fi
+])
AC_MSG_CHECKING([for broken poll])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
@@ -2430,7 +2474,7 @@ AC_ARG_ENABLE(gcov,
[enable coverage testing with gcov]),
[use_gcov=$enableval], [use_gcov=no])
-if test "x$use_gcov" = "xyes"; then
+AS_IF([ test "x$use_gcov" = "xyes"], [
dnl we need gcc:
if test "$GCC" != "yes"; then
AC_MSG_ERROR([GCC is required for --enable-gcov])
@@ -2447,11 +2491,11 @@ if test "x$use_gcov" = "xyes"; then
AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
fi
- ltp_version_list="1.6 1.7 1.8 1.9"
+ ltp_version_list="1.6 1.7 1.8 1.9 1.10"
AC_CHECK_PROG(LTP, lcov, lcov)
AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
- if test "$LTP"; then
+ AS_IF([ test "$LTP" ], [
AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
glib_cv_ltp_version=invalid
ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
@@ -2461,10 +2505,10 @@ if test "x$use_gcov" = "xyes"; then
fi
done
])
- else
+ ], [
ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
AC_MSG_ERROR([$ltp_msg])
- fi
+ ])
case $glib_cv_ltp_version in
""|invalid[)]
@@ -2486,7 +2530,7 @@ if test "x$use_gcov" = "xyes"; then
dnl Add the special gcc flags
CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
LDFLAGS="$LDFLAGS -lgcov"
-fi
+])
dnl ******************************
dnl *** output the whole stuff ***
@@ -2612,19 +2656,21 @@ _______EOF
#define GLIB_SIZEOF_VOID_P $glib_void_p
#define GLIB_SIZEOF_LONG $glib_long
#define GLIB_SIZEOF_SIZE_T $glib_size_t
+#define GLIB_SIZEOF_SSIZE_T $glib_ssize_t
_______EOF
cat >>$outfile <<_______EOF
-typedef signed $glib_size_type_define gssize;
+typedef signed $glib_ssize_type_define gssize;
typedef unsigned $glib_size_type_define gsize;
#define G_GSIZE_MODIFIER $gsize_modifier
-#define G_GSSIZE_FORMAT $gssize_format
+#define G_GSSIZE_MODIFIER $gssize_modifier
#define G_GSIZE_FORMAT $gsize_format
+#define G_GSSIZE_FORMAT $gssize_format
#define G_MAXSIZE G_MAXU$glib_msize_type
-#define G_MINSSIZE G_MIN$glib_msize_type
-#define G_MAXSSIZE G_MAX$glib_msize_type
+#define G_MINSSIZE G_MIN$glib_mssize_type
+#define G_MAXSSIZE G_MAX$glib_mssize_type
typedef gint64 goffset;
#define G_MINOFFSET G_MININT64
@@ -2790,9 +2836,9 @@ _______EOF
#define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val))
#define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val))
#define GSIZE_TO_LE(val) ((gsize) GUINT${gsizebits}_TO_LE (val))
-#define GSSIZE_TO_LE(val) ((gssize) GINT${gsizebits}_TO_LE (val))
+#define GSSIZE_TO_LE(val) ((gssize) GINT${gssizebits}_TO_LE (val))
#define GSIZE_TO_BE(val) ((gsize) GUINT${gsizebits}_TO_BE (val))
-#define GSSIZE_TO_BE(val) ((gssize) GINT${gsizebits}_TO_BE (val))
+#define GSSIZE_TO_BE(val) ((gssize) GINT${gssizebits}_TO_BE (val))
#define G_BYTE_ORDER $g_byte_order
#define GLIB_SYSDEF_POLLIN =$g_pollin
@@ -2952,7 +2998,9 @@ $ac_cv_sizeof___int64)
;;
esac
glib_size_t=$ac_cv_sizeof_size_t
+glib_ssize_t=$ac_cv_sizeof_ssize_t
glib_size_type_define="$glib_size_type"
+glib_ssize_type_define="$glib_ssize_type"
glib_void_p=$ac_cv_sizeof_void_p
glib_long=$ac_cv_sizeof_long
@@ -2960,32 +3008,52 @@ case "$glib_size_type" in
short)
gsize_modifier='"h"'
gsize_format='"hu"'
- gssize_format='"hi"'
glib_msize_type='SHRT'
;;
int)
gsize_modifier='""'
gsize_format='"u"'
- gssize_format='"i"'
glib_msize_type='INT'
;;
long)
gsize_modifier='"l"'
gsize_format='"lu"'
- gssize_format='"li"'
glib_msize_type='LONG'
;;
"long long"|__int64)
gsize_modifier='"I64"'
gsize_format='"I64u"'
- gssize_format='"I64i"'
glib_msize_type='INT64'
;;
esac
+case "$glib_ssize_type" in
+short)
+ gssize_modifier='"h"'
+ gssize_format='"hi"'
+ glib_mssize_type='SHRT'
+ ;;
+int)
+ gssize_modifier='""'
+ gssize_format='"i"'
+ glib_mssize_type='INT'
+ ;;
+long)
+ gssize_modifier='"l"'
+ gssize_format='"li"'
+ glib_mssize_type='LONG'
+ ;;
+"long long"|__int64)
+ gssize_modifier='"I64"'
+ gssize_format='"I64i"'
+ glib_mssize_type='INT64'
+ ;;
+esac
+
gintbits=`expr $ac_cv_sizeof_int \* 8`
glongbits=`expr $ac_cv_sizeof_long \* 8`
gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
+gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8`
case $ac_cv_sizeof_void_p in
$ac_cv_sizeof_int)
@@ -3204,19 +3272,13 @@ typedef unsigned $gint64 guint64;])
AC_CHECK_TYPE([unsigned long])
AC_CHECK_ALIGNOF([unsigned long])
-# Check for libdbus1 - Optional - is only used in the GDBus test cases
-#
-# 1.2.14 required for dbus_message_set_serial
-have_dbus1=no
-AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
-
dnl
dnl Check for -Bsymbolic-functions linker flag used to avoid
dnl intra-library PLT jumps, if available.
dnl
AC_ARG_ENABLE(Bsymbolic,
- [AC_HELP_STRING([--disable-Bsymbolic],
+ [AS_HELP_STRING([--disable-Bsymbolic],
[avoid linking with -Bsymbolic])],,
[SAVED_LDFLAGS="${LDFLAGS}"
AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
@@ -3234,6 +3296,54 @@ fi
AC_SUBST(GLIB_LINK_FLAGS)
+dnl
+dnl Check for -fvisibility=hidden to determine if we can do GNU-style
+dnl visibility attributes for symbol export control
+dnl
+GLIB_HIDDEN_VISIBILITY_CFLAGS=""
+case "$host" in
+ *-*-mingw*)
+ dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
+ AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
+ [defines how to decorate public symbols while building])
+ CFLAGS="${CFLAGS} -fvisibility=hidden"
+ ;;
+ *)
+ dnl on other compilers, check if we can do -fvisibility=hidden
+ SAVED_CFLAGS="${CFLAGS}"
+ CFLAGS="-fvisibility=hidden"
+ AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+ AC_TRY_COMPILE([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ enable_fvisibility_hidden=yes,
+ AC_MSG_RESULT(no)
+ enable_fvisibility_hidden=no)
+ CFLAGS="${SAVED_CFLAGS}"
+
+ AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
+ AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) extern],
+ [defines how to decorate public symbols while building])
+ GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
+ ])
+ ;;
+esac
+AC_SUBST(GLIB_HIDDEN_VISIBILITY_CFLAGS)
+
+dnl Compiler flags; macro originates from systemd
+dnl See https://bugzilla.gnome.org/show_bug.cgi?id=608953
+AC_ARG_ENABLE(compile-warnings,
+ [AS_HELP_STRING([--disable-compile-warnings],
+ [Don't use builtin compiler warnings])],,
+ enable_compile_warnings=yes)
+AS_IF([test "x$enable_compile_warnings" = xyes], [
+ CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
+ -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
+ -Werror=missing-prototypes -Werror=implicit-function-declaration \
+ -Werror=pointer-arith -Werror=init-self -Werror=format-security \
+ -Werror=format=2 -Werror=missing-include-dirs])
+])
+AC_SUBST(GLIB_WARN_CFLAGS)
+
#
# Define variables corresponding to the correct include paths to use for
# in-tree building.
@@ -3251,14 +3361,9 @@ AC_SUBST(config_h_INCLUDES)
glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
AC_SUBST(glib_INCLUDES)
-# gthread:
-# same as glib
-gthread_INCLUDES='$(glib_INCLUDES)'
-AC_SUBST(gthread_INCLUDES)
-
# gobject:
-# same as gthread
-gobject_INCLUDES='$(gthread_INCLUDES)'
+# same as glib
+gobject_INCLUDES='$(glib_INCLUDES)'
AC_SUBST(gobject_INCLUDES)
# gmodule:
diff --git a/glib/depcomp b/glib/depcomp
index 25a39e6..fc98710 100755
--- a/glib/depcomp
+++ b/glib/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-03-27.16; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
case $1 in
'')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -57,11 +56,65 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
# A tabulation character.
tab=' '
# A newline character.
nl='
'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -86,32 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
fi
if test "$depmode" = xlc; then
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
- gccflag=-qmakedep=gcc,-MF
- depmode=gcc
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -134,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -143,13 +198,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -157,15 +216,14 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
@@ -174,15 +232,15 @@ gcc)
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' "$nl" < "$tmpdepfile" |
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -200,8 +258,7 @@ sgi)
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -209,7 +266,6 @@ sgi)
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
-
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
@@ -217,19 +273,15 @@ sgi)
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr "$nl" ' ' >> "$depfile"
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
-
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
@@ -247,9 +299,8 @@ aix)
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -262,9 +313,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -273,65 +322,113 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form 'foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
-icc)
- # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
- # However on
- # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using '\':
+ # and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
- # tcc 0.9.26 (FIXME still under development at the moment of writing)
- # will emit a similar output, but also prepend the continuation lines
- # with horizontal tabulation characters.
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
+
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form 'foo.o: dependent.h',
- # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
- # '$object: dependent.h' and one to simply 'dependent.h:'.
- sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
- < "$tmpdepfile" > "$depfile"
- sed '
- s/[ '"$tab"'][ '"$tab"']*/ /g
- s/^ *//
- s/ *\\*$//
- s/^[^:]*: *//
- /^$/d
- /:$/d
- s/$/ :/
- ' < "$tmpdepfile" >> "$depfile"
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -342,9 +439,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -355,8 +451,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -366,76 +461,61 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in 'foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
msvc7)
if test "$libtool" = yes; then
@@ -446,8 +526,7 @@ msvc7)
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
- if test "$stat" = 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -473,6 +552,7 @@ $ {
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
@@ -524,13 +604,14 @@ dashmstdout)
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -583,10 +664,12 @@ makedepend)
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -622,10 +705,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -657,15 +740,15 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
diff --git a/glib/glib.mk b/glib/glib.mk
new file mode 100644
index 0000000..75ac2c6
--- /dev/null
+++ b/glib/glib.mk
@@ -0,0 +1,225 @@
+# GLIB - Library of useful C routines
+
+#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
+GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
+GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
+
+# initialize variables for unconditional += appending
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST =
+TEST_PROGS =
+
+installed_test_LTLIBRARIES =
+installed_test_PROGRAMS =
+installed_test_SCRIPTS =
+nobase_installed_test_DATA =
+
+noinst_LTLIBRARIES =
+noinst_PROGRAMS =
+noinst_SCRIPTS =
+noinst_DATA =
+
+check_LTLIBRARIES =
+check_PROGRAMS =
+check_SCRIPTS =
+check_DATA =
+
+TESTS =
+
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+if OS_UNIX
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+else
+test-nonrecursive:
+endif
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS += $(strip $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+
+if OS_WIN32
+TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+endif
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+all_test_scripts += $(all_dist_test_scripts)
+EXTRA_DIST += $(all_dist_test_scripts)
+all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_data += $(all_dist_test_data)
+EXTRA_DIST += $(all_dist_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+
+if ENABLE_ALWAYS_BUILD_TESTS
+noinst_LTLIBRARIES += $(all_test_ltlibs)
+noinst_PROGRAMS += $(all_test_programs)
+noinst_SCRIPTS += $(all_test_scripts)
+noinst_DATA += $(all_test_data)
+else
+check_LTLIBRARIES += $(all_test_ltlibs)
+check_PROGRAMS += $(all_test_programs)
+check_SCRIPTS += $(all_test_scripts)
+check_DATA += $(all_test_data)
+endif
+
+if ENABLE_INSTALLED_TESTS
+installed_test_PROGRAMS += $(test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(installed_test_extra_programs)
+installed_test_SCRIPTS += $(test_scripts) $(installed_test_scripts) \
+ $(test_extra_scripts) $(test_installed_extra_scripts)
+installed_test_SCRIPTS += $(dist_test_scripts) $(dist_test_extra_scripts) \
+ $(dist_installed_test_scripts) $(dist_installed_test_extra_scripts)
+nobase_installed_test_DATA += $(test_data) $(installed_test_data)
+nobase_installed_test_DATA += $(dist_test_data) $(dist_installed_test_data)
+installed_test_LTLIBRARIES += $(test_ltlibraries) $(installed_test_ltlibraries)
+installed_testcases = $(test_programs) $(installed_test_programs) \
+ $(test_scripts) $(installed_test_scripts) \
+ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+installed_test_meta_DATA = $(installed_testcases:=.test)
+
+%.test: %$(EXEEXT) Makefile
+ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+ echo 'Type=session' >> $@.tmp; \
+ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+ mv $@.tmp $@)
+
+CLEANFILES += $(installed_test_meta_DATA)
+endif
diff --git a/glib/glib/Makefile.am b/glib/glib/Makefile.am
index a881f17..7093f46 100644
--- a/glib/glib/Makefile.am
+++ b/glib/glib/Makefile.am
@@ -1,9 +1,5 @@
## Process this file with automake to produce Makefile.in
-include $(top_srcdir)/Makefile.decl
-
-BUILT_SOURCES =
-DISTCLEANFILES =
-CLEANFILES =
+include $(top_srcdir)/glib.mk
#
# Generate glibconfig.h
@@ -31,7 +27,6 @@ printf_la = gnulib/libgnulib.la
endif
SUBDIRS = libcharset $(PRINTF_SUBDIR) .
-
DIST_SUBDIRS = libcharset gnulib
AM_CPPFLAGS = \
@@ -42,14 +37,7 @@ AM_CPPFLAGS = \
-DGLIB_COMPILATION \
-DPCRE_STATIC
-glib.def: glib.symbols
- $(AM_V_GEN) (echo EXPORTS; $(CPP) -P -DG_OS_WIN32 - <$(srcdir)/glib.symbols | sed -e '/^$$/d' -e 's/^/ /') > $(builddir)/glib.def
-
-if OS_LINUX
-if HAVE_GNUC_VISIBILITY
-TESTS_ENVIRONMENT = GLIB_DEBUG_FLAGS="$(GLIB_DEBUG_FLAGS)"
-endif
-endif
+AM_CFLAGS = $(GLIB_WARN_CFLAGS)
MIRRORING_TAB_SOURCE = \
glib-mirroring-tab/Makefile \
@@ -62,22 +50,20 @@ EXTRA_DIST += \
gen-iswide-table.py \
gen-unicode-tables.pl \
gen-script-table.pl \
- abicheck.sh \
- glib.symbols \
win_iconv.c \
docs.c \
gconstructor.h \
$(MIRRORING_TAB_SOURCE)
# These may be in the builddir too
-BUILT_EXTRA_DIST = \
+BUILT_EXTRA_DIST += \
glib.rc
-noinst_LTLIBRARIES = libglib-2.0.la
+noinst_LTLIBRARIES += libglib-2.0.la
if OS_WIN32_AND_DLL_COMPILATION
if MS_LIB_AVAILABLE
-noinst_DATA = glib-2.0.lib
+noinst_DATA += glib-2.0.lib
install_ms_lib_cmd = $(INSTALL) glib-2.0.lib $(DESTDIR)$(libdir)
uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/glib-2.0.lib
@@ -111,6 +97,7 @@ libglib_2_0_la_SOURCES = \
gbytes.c \
gbytes.h \
gcharset.c \
+ gcharsetprivate.h \
gchecksum.c \
gconvert.c \
gdataset.c \
@@ -141,6 +128,7 @@ libglib_2_0_la_SOURCES = \
gmarkup.c \
gmem.c \
gmessages.c \
+ gmessages-private.h \
gmirroringtable.h \
gnode.c \
goption.c \
@@ -148,6 +136,7 @@ libglib_2_0_la_SOURCES = \
gpoll.c \
gprimes.c \
gqsort.c \
+ gquark.c \
gqueue.c \
grand.c \
gscanner.c \
@@ -195,17 +184,20 @@ libglib_2_0_la_SOURCES = \
gwakeup.h \
gwakeup.c \
gprintf.c \
- gprintfint.h
+ gprintfint.h \
+ valgrind.h
if OS_UNIX
libglib_2_0_la_SOURCES += glib-unix.c
endif
-if OS_WIN32
+if THREADS_WIN32
libglib_2_0_la_SOURCES += gthread-win32.c
else
+if THREADS_POSIX
libglib_2_0_la_SOURCES += gthread-posix.c
endif
+endif
EXTRA_libglib_2_0_la_SOURCES = \
giounix.c \
@@ -316,31 +308,17 @@ no_undefined = -no-undefined
endif
if OS_WIN32_AND_DLL_COMPILATION
-export_symbols = -export-symbols $(builddir)/glib.def
-
glib_win32_res = glib-win32-res.o
glib_win32_res_ldflag = -Wl,$(glib_win32_res)
-
-glib_def = glib.def
-
-install-def-file:
- $(INSTALL) $(builddir)/glib.def $(DESTDIR)$(libdir)/glib-2.0.def
-
-uninstall-def-file:
- -rm $(DESTDIR)$(libdir)/glib-2.0.def
-else
-install-def-file:
-uninstall-def-file:
-
-export_symbols = $(LIBTOOL_EXPORT_OPTIONS)
endif
+libglib_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) $(G_THREAD_LIBS_EXTRA) $(G_THREAD_LIBS_FOR_GTHREAD)
libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) $(glib_def)
libglib_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
$(glib_win32_res_ldflag) \
- -export-dynamic $(no_undefined) $(export_symbols)
+ -export-dynamic $(no_undefined)
gspawn-win32-helper-console.c:
echo '#define HELPER_CONSOLE' >$@
diff --git a/glib/glib/Makefile.in b/glib/glib/Makefile.in
index 7591fb6..3122edc 100644
--- a/glib/glib/Makefile.in
+++ b/glib/glib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -18,24 +18,64 @@
+
+
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -54,17 +94,48 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/glib.rc.in \
- $(top_srcdir)/Makefile.decl $(top_srcdir)/depcomp \
- $(top_srcdir)/mkinstalldirs
-@OS_UNIX_TRUE@am__append_1 = glib-unix.c
-@OS_WIN32_TRUE@am__append_2 = gthread-win32.c
-@OS_WIN32_FALSE@am__append_3 = gthread-posix.c
-@OS_UNIX_TRUE@am__append_4 = ${auto_config_binscripts}
+installed_test_PROGRAMS = $(am__EXEEXT_1)
+noinst_PROGRAMS = $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_1)
+@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs)
+
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
+@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_15 = glib-2.0.lib
+@OS_UNIX_TRUE@am__append_16 = glib-unix.c
+@THREADS_WIN32_TRUE@am__append_17 = gthread-win32.c
+@THREADS_POSIX_TRUE@@THREADS_WIN32_FALSE@am__append_18 = gthread-posix.c
+@OS_UNIX_TRUE@am__append_19 = ${auto_config_binscripts}
subdir = glib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
+ $(top_srcdir)/m4macros/glibtests.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/m4macros/ltoptions.m4 \
$(top_srcdir)/m4macros/ltsugar.m4 \
$(top_srcdir)/m4macros/ltversion.m4 \
@@ -76,24 +147,59 @@ am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = glib.rc
CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_test_metadir)" \
+ "$(DESTDIR)$(installed_testdir)"
+LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
am__libglib_2_0_la_SOURCES_DIST = deprecated/gallocator.c \
deprecated/gcache.c deprecated/gcompletion.c deprecated/grel.c \
deprecated/gthread-deprecated.c garray.c gasyncqueue.c \
gasyncqueueprivate.h gatomic.c gbacktrace.c gbase64.c \
gbitlock.c gbookmarkfile.c gbsearcharray.h gbytes.c gbytes.h \
- gcharset.c gchecksum.c gconvert.c gdataset.c gdatasetprivate.h \
- gdate.c gdatetime.c gdir.c genviron.c gerror.c gfileutils.c \
- ggettext.c ghash.c ghmac.c ghook.c ghostutils.c giochannel.c \
- gkeyfile.c glibintl.h glib_trace.h glib-init.h glib-init.c \
- glib-private.h glib-private.c glist.c gmain-internal.h gmain.c \
- gmappedfile.c gmarkup.c gmem.c gmessages.c gmirroringtable.h \
- gnode.c goption.c gpattern.c gpoll.c gprimes.c gqsort.c \
+ gcharset.c gcharsetprivate.h gchecksum.c gconvert.c gdataset.c \
+ gdatasetprivate.h gdate.c gdatetime.c gdir.c genviron.c \
+ gerror.c gfileutils.c ggettext.c ghash.c ghmac.c ghook.c \
+ ghostutils.c giochannel.c gkeyfile.c glibintl.h glib_trace.h \
+ glib-init.h glib-init.c glib-private.h glib-private.c glist.c \
+ gmain-internal.h gmain.c gmappedfile.c gmarkup.c gmem.c \
+ gmessages.c gmessages-private.h gmirroringtable.h gnode.c \
+ goption.c gpattern.c gpoll.c gprimes.c gqsort.c gquark.c \
gqueue.c grand.c gscanner.c gscripttable.h gsequence.c \
gshell.c gslice.c gslist.c gstdio.c gstrfuncs.c gstring.c \
gstringchunk.c gtestutils.c gthread.c gthreadprivate.h \
@@ -105,30 +211,53 @@ am__libglib_2_0_la_SOURCES_DIST = deprecated/gallocator.c \
gvariant-parser.c gvariant-serialiser.h gvariant-serialiser.c \
gvarianttypeinfo.h gvarianttypeinfo.c gvarianttype.c \
gversion.c gwakeup.h gwakeup.c gprintf.c gprintfint.h \
- glib-unix.c gthread-win32.c gthread-posix.c
-am__objects_1 = gallocator.lo gcache.lo gcompletion.lo grel.lo \
- gthread-deprecated.lo
-@OS_UNIX_TRUE@am__objects_2 = glib-unix.lo
-@OS_WIN32_TRUE@am__objects_3 = gthread-win32.lo
-@OS_WIN32_FALSE@am__objects_4 = gthread-posix.lo
-am_libglib_2_0_la_OBJECTS = $(am__objects_1) garray.lo gasyncqueue.lo \
- gatomic.lo gbacktrace.lo gbase64.lo gbitlock.lo \
- gbookmarkfile.lo gbytes.lo gcharset.lo gchecksum.lo \
- gconvert.lo gdataset.lo gdate.lo gdatetime.lo gdir.lo \
- genviron.lo gerror.lo gfileutils.lo ggettext.lo ghash.lo \
- ghmac.lo ghook.lo ghostutils.lo giochannel.lo gkeyfile.lo \
- glib-init.lo glib-private.lo glist.lo gmain.lo gmappedfile.lo \
- gmarkup.lo gmem.lo gmessages.lo gnode.lo goption.lo \
- gpattern.lo gpoll.lo gprimes.lo gqsort.lo gqueue.lo grand.lo \
- gscanner.lo gsequence.lo gshell.lo gslice.lo gslist.lo \
- gstdio.lo gstrfuncs.lo gstring.lo gstringchunk.lo \
- gtestutils.lo gthread.lo gthreadpool.lo gtimer.lo gtimezone.lo \
- gtrashstack.lo gtree.lo guniprop.lo gutf8.lo gunibreak.lo \
- gunicollate.lo gunidecomp.lo gurifuncs.lo gutils.lo \
- gvariant.lo gvariant-core.lo gvariant-parser.lo \
- gvariant-serialiser.lo gvarianttypeinfo.lo gvarianttype.lo \
- gversion.lo gwakeup.lo gprintf.lo $(am__objects_2) \
- $(am__objects_3) $(am__objects_4)
+ valgrind.h glib-unix.c gthread-win32.c gthread-posix.c
+am__objects_1 = libglib_2_0_la-gallocator.lo libglib_2_0_la-gcache.lo \
+ libglib_2_0_la-gcompletion.lo libglib_2_0_la-grel.lo \
+ libglib_2_0_la-gthread-deprecated.lo
+@OS_UNIX_TRUE@am__objects_2 = libglib_2_0_la-glib-unix.lo
+@THREADS_WIN32_TRUE@am__objects_3 = libglib_2_0_la-gthread-win32.lo
+@THREADS_POSIX_TRUE@@THREADS_WIN32_FALSE@am__objects_4 = libglib_2_0_la-gthread-posix.lo
+am_libglib_2_0_la_OBJECTS = $(am__objects_1) libglib_2_0_la-garray.lo \
+ libglib_2_0_la-gasyncqueue.lo libglib_2_0_la-gatomic.lo \
+ libglib_2_0_la-gbacktrace.lo libglib_2_0_la-gbase64.lo \
+ libglib_2_0_la-gbitlock.lo libglib_2_0_la-gbookmarkfile.lo \
+ libglib_2_0_la-gbytes.lo libglib_2_0_la-gcharset.lo \
+ libglib_2_0_la-gchecksum.lo libglib_2_0_la-gconvert.lo \
+ libglib_2_0_la-gdataset.lo libglib_2_0_la-gdate.lo \
+ libglib_2_0_la-gdatetime.lo libglib_2_0_la-gdir.lo \
+ libglib_2_0_la-genviron.lo libglib_2_0_la-gerror.lo \
+ libglib_2_0_la-gfileutils.lo libglib_2_0_la-ggettext.lo \
+ libglib_2_0_la-ghash.lo libglib_2_0_la-ghmac.lo \
+ libglib_2_0_la-ghook.lo libglib_2_0_la-ghostutils.lo \
+ libglib_2_0_la-giochannel.lo libglib_2_0_la-gkeyfile.lo \
+ libglib_2_0_la-glib-init.lo libglib_2_0_la-glib-private.lo \
+ libglib_2_0_la-glist.lo libglib_2_0_la-gmain.lo \
+ libglib_2_0_la-gmappedfile.lo libglib_2_0_la-gmarkup.lo \
+ libglib_2_0_la-gmem.lo libglib_2_0_la-gmessages.lo \
+ libglib_2_0_la-gnode.lo libglib_2_0_la-goption.lo \
+ libglib_2_0_la-gpattern.lo libglib_2_0_la-gpoll.lo \
+ libglib_2_0_la-gprimes.lo libglib_2_0_la-gqsort.lo \
+ libglib_2_0_la-gquark.lo libglib_2_0_la-gqueue.lo \
+ libglib_2_0_la-grand.lo libglib_2_0_la-gscanner.lo \
+ libglib_2_0_la-gsequence.lo libglib_2_0_la-gshell.lo \
+ libglib_2_0_la-gslice.lo libglib_2_0_la-gslist.lo \
+ libglib_2_0_la-gstdio.lo libglib_2_0_la-gstrfuncs.lo \
+ libglib_2_0_la-gstring.lo libglib_2_0_la-gstringchunk.lo \
+ libglib_2_0_la-gtestutils.lo libglib_2_0_la-gthread.lo \
+ libglib_2_0_la-gthreadpool.lo libglib_2_0_la-gtimer.lo \
+ libglib_2_0_la-gtimezone.lo libglib_2_0_la-gtrashstack.lo \
+ libglib_2_0_la-gtree.lo libglib_2_0_la-guniprop.lo \
+ libglib_2_0_la-gutf8.lo libglib_2_0_la-gunibreak.lo \
+ libglib_2_0_la-gunicollate.lo libglib_2_0_la-gunidecomp.lo \
+ libglib_2_0_la-gurifuncs.lo libglib_2_0_la-gutils.lo \
+ libglib_2_0_la-gvariant.lo libglib_2_0_la-gvariant-core.lo \
+ libglib_2_0_la-gvariant-parser.lo \
+ libglib_2_0_la-gvariant-serialiser.lo \
+ libglib_2_0_la-gvarianttypeinfo.lo \
+ libglib_2_0_la-gvarianttype.lo libglib_2_0_la-gversion.lo \
+ libglib_2_0_la-gwakeup.lo libglib_2_0_la-gprintf.lo \
+ $(am__objects_2) $(am__objects_3) $(am__objects_4)
libglib_2_0_la_OBJECTS = $(am_libglib_2_0_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -136,8 +265,13 @@ am__v_lt_0 = --silent
am__v_lt_1 =
libglib_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libglib_2_0_la_LDFLAGS) $(LDFLAGS) -o \
- $@
+ $(libglib_2_0_la_CFLAGS) $(CFLAGS) $(libglib_2_0_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am__EXEEXT_1 =
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1)
+PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
+SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -175,27 +309,226 @@ am__v_CCLD_1 =
SOURCES = $(libglib_2_0_la_SOURCES) $(EXTRA_libglib_2_0_la_SOURCES)
DIST_SOURCES = $(am__libglib_2_0_la_SOURCES_DIST) \
$(EXTRA_libglib_2_0_la_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
-DATA = $(noinst_DATA)
+DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
+ $(noinst_DATA)
HEADERS = $(nodist_noinst_HEADERS) $(noinst_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/glib.rc.in \
+ $(top_srcdir)/depcomp $(top_srcdir)/glib.mk \
+ $(top_srcdir)/test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -261,6 +594,7 @@ GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
@@ -268,6 +602,7 @@ GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
+GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GREP = @GREP@
GSPAWN = @GSPAWN@
@@ -298,7 +633,6 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
@@ -314,6 +648,7 @@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
+NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -340,14 +675,13 @@ PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
-SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDRES = @WINDRES@
-XATTR_LIBS = @XATTR_LIBS@
+WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -378,7 +712,6 @@ gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
-gthread_INCLUDES = @gthread_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -388,6 +721,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -414,16 +749,18 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
# initialize variables for unconditional += appending
-EXTRA_DIST = glib.rc.in gen-iswide-table.py gen-unicode-tables.pl \
- gen-script-table.pl abicheck.sh glib.symbols win_iconv.c \
- docs.c gconstructor.h $(MIRRORING_TAB_SOURCE) $(am__append_4)
-TEST_PROGS =
BUILT_SOURCES = glibconfig-stamp
+# These may be in the builddir too
+BUILT_EXTRA_DIST = glib.rc
+CLEANFILES = *.log *.trs $(am__append_14) glib-public-headers.txt
+
#
# Generate glibconfig.h
#
@@ -433,7 +770,89 @@ BUILT_SOURCES = glibconfig-stamp
# avoid touching its timestamp (in order not to rebuild the whole tree).
#
DISTCLEANFILES = glibconfig-stamp glibconfig.h
-CLEANFILES = glib-public-headers.txt
+MAINTAINERCLEANFILES =
+EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) glib.rc.in \
+ gen-iswide-table.py gen-unicode-tables.pl gen-script-table.pl \
+ win_iconv.c docs.c gconstructor.h $(MIRRORING_TAB_SOURCE) \
+ $(am__append_19)
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
+ $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+installed_test_LTLIBRARIES = $(am__append_13)
+installed_test_SCRIPTS = $(am__append_11)
+nobase_installed_test_DATA = $(am__append_12)
+noinst_LTLIBRARIES = $(am__append_2) libglib-2.0.la
+noinst_SCRIPTS = $(am__append_4)
+noinst_DATA = $(am__append_5) $(am__append_15)
+check_LTLIBRARIES = $(am__append_6)
+check_SCRIPTS = $(am__append_8)
+check_DATA = $(am__append_9)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
+ $(installed_test_scripts) $(test_extra_scripts) \
+ $(uninstalled_test_extra_scripts) \
+ $(installed_test_extra_scripts) $(all_dist_test_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+
+all_test_data = $(test_data) $(uninstalled_test_data) \
+ $(installed_test_data) $(all_dist_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
configexecincludedir = $(libdir)/glib-2.0/include
nodist_noinst_HEADERS = glibconfig.h
@HAVE_GOOD_PRINTF_FALSE@PRINTF_SUBDIR = gnulib
@@ -448,20 +867,13 @@ AM_CPPFLAGS = \
-DGLIB_COMPILATION \
-DPCRE_STATIC
-@HAVE_GNUC_VISIBILITY_TRUE@@OS_LINUX_TRUE@TESTS_ENVIRONMENT = GLIB_DEBUG_FLAGS="$(GLIB_DEBUG_FLAGS)"
+AM_CFLAGS = $(GLIB_WARN_CFLAGS)
MIRRORING_TAB_SOURCE = \
glib-mirroring-tab/Makefile \
glib-mirroring-tab/gen-mirroring-tab.c \
glib-mirroring-tab/packtab.h \
glib-mirroring-tab/packtab.c
-
-# These may be in the builddir too
-BUILT_EXTRA_DIST = \
- glib.rc
-
-noinst_LTLIBRARIES = libglib-2.0.la
-@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@noinst_DATA = glib-2.0.lib
@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) glib-2.0.lib $(DESTDIR)$(libdir)
@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/glib-2.0.lib
deprecated_sources = \
@@ -474,13 +886,14 @@ deprecated_sources = \
libglib_2_0_la_SOURCES = $(deprecated_sources) garray.c gasyncqueue.c \
gasyncqueueprivate.h gatomic.c gbacktrace.c gbase64.c \
gbitlock.c gbookmarkfile.c gbsearcharray.h gbytes.c gbytes.h \
- gcharset.c gchecksum.c gconvert.c gdataset.c gdatasetprivate.h \
- gdate.c gdatetime.c gdir.c genviron.c gerror.c gfileutils.c \
- ggettext.c ghash.c ghmac.c ghook.c ghostutils.c giochannel.c \
- gkeyfile.c glibintl.h glib_trace.h glib-init.h glib-init.c \
- glib-private.h glib-private.c glist.c gmain-internal.h gmain.c \
- gmappedfile.c gmarkup.c gmem.c gmessages.c gmirroringtable.h \
- gnode.c goption.c gpattern.c gpoll.c gprimes.c gqsort.c \
+ gcharset.c gcharsetprivate.h gchecksum.c gconvert.c gdataset.c \
+ gdatasetprivate.h gdate.c gdatetime.c gdir.c genviron.c \
+ gerror.c gfileutils.c ggettext.c ghash.c ghmac.c ghook.c \
+ ghostutils.c giochannel.c gkeyfile.c glibintl.h glib_trace.h \
+ glib-init.h glib-init.c glib-private.h glib-private.c glist.c \
+ gmain-internal.h gmain.c gmappedfile.c gmarkup.c gmem.c \
+ gmessages.c gmessages-private.h gmirroringtable.h gnode.c \
+ goption.c gpattern.c gpoll.c gprimes.c gqsort.c gquark.c \
gqueue.c grand.c gscanner.c gscripttable.h gsequence.c \
gshell.c gslice.c gslist.c gstdio.c gstrfuncs.c gstring.c \
gstringchunk.c gtestutils.c gthread.c gthreadprivate.h \
@@ -492,7 +905,7 @@ libglib_2_0_la_SOURCES = $(deprecated_sources) garray.c gasyncqueue.c \
gvariant-parser.c gvariant-serialiser.h gvariant-serialiser.c \
gvarianttypeinfo.h gvarianttypeinfo.c gvarianttype.c \
gversion.c gwakeup.h gwakeup.c gprintf.c gprintfint.h \
- $(am__append_1) $(am__append_2) $(am__append_3)
+ valgrind.h $(am__append_16) $(am__append_17) $(am__append_18)
EXTRA_libglib_2_0_la_SOURCES = \
giounix.c \
giowin32.c \
@@ -521,16 +934,14 @@ noinst_HEADERS = glib-unix.h glib-object.h glib.h \
deprecatedincludedir = $(includedir)/glib-2.0/glib/deprecated
glibsubincludedir = $(includedir)/glib-2.0/glib
@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined
-@OS_WIN32_AND_DLL_COMPILATION_FALSE@export_symbols = $(LIBTOOL_EXPORT_OPTIONS)
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@export_symbols = -export-symbols $(builddir)/glib.def
@OS_WIN32_AND_DLL_COMPILATION_TRUE@glib_win32_res = glib-win32-res.o
@OS_WIN32_AND_DLL_COMPILATION_TRUE@glib_win32_res_ldflag = -Wl,$(glib_win32_res)
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@glib_def = glib.def
+libglib_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) $(G_THREAD_LIBS_EXTRA) $(G_THREAD_LIBS_FOR_GTHREAD)
libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) $(glib_def)
libglib_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
$(glib_win32_res_ldflag) \
- -export-dynamic $(no_undefined) $(export_symbols)
+ -export-dynamic $(no_undefined)
@OS_UNIX_TRUE@auto_config_binscripts = gtester-report
@OS_UNIX_TRUE@CONFIGVARS = \
@@ -541,8 +952,8 @@ all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -554,7 +965,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glib/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign glib/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -563,7 +973,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/Makefile.decl:
+$(top_srcdir)/glib.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -576,6 +986,52 @@ $(am__aclocal_m4_deps):
glib.rc: $(top_builddir)/config.status $(srcdir)/glib.rc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+clean-checkLTLIBRARIES:
+ -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
+ @list='$(check_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
+ }
+
+uninstall-installed_testLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
+ done
+
+clean-installed_testLTLIBRARIES:
+ -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
+ @list='$(installed_test_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
@@ -586,115 +1042,219 @@ clean-noinstLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
+
libglib-2.0.la: $(libglib_2_0_la_OBJECTS) $(libglib_2_0_la_DEPENDENCIES) $(EXTRA_libglib_2_0_la_DEPENDENCIES)
$(AM_V_CCLD)$(libglib_2_0_la_LINK) $(libglib_2_0_la_OBJECTS) $(libglib_2_0_la_LIBADD) $(LIBS)
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files
+
+clean-installed_testPROGRAMS:
+ @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gallocator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garray.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gasyncqueue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gatomic.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbacktrace.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbase64.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbitlock.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbookmarkfile.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbytes.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gcache.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gcharset.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gchecksum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gcompletion.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gconvert.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdataset.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdate.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdatetime.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdir.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genviron.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gerror.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfileutils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ggettext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghmac.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghook.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghostutils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giochannel.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giounix.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giowin32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gkeyfile.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-init.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-private.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-unix.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glist.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmain.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmappedfile.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmarkup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmem.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmessages.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/goption.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpattern.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpoll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gprimes.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gprintf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gqsort.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gqueue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grand.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grel.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscanner.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsequence.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gshell.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gslice.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gslist.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn-win32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstdio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstrfuncs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstring.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstringchunk.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtestutils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gthread-deprecated.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gthread-posix.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gthread-win32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gthread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gthreadpool.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtimer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtimezone.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtrashstack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtree.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gunibreak.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gunicollate.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gunidecomp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guniprop.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gurifuncs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutf8.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gutils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant-core.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant-parser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant-serialiser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvarianttype.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvarianttypeinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gversion.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwin32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gallocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-garray.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gasyncqueue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gatomic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbacktrace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbase64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbitlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbookmarkfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbytes.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcache.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcharset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gchecksum.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcompletion.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gconvert.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdataset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdatetime.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdir.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-genviron.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gerror.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gfileutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ggettext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghmac.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghook.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghostutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giochannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giounix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giowin32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gkeyfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-init.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-private.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-unix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmain.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmappedfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmarkup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmem.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmessages.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gnode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-goption.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gpattern.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gpoll.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gprimes.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gprintf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gqsort.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gquark.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gqueue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-grand.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-grel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gscanner.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gsequence.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gshell.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gslice.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gslist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gspawn-win32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gspawn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstdio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstrfuncs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstringchunk.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtestutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-deprecated.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-posix.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-win32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthreadpool.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtimer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtimezone.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtrashstack.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtree.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunibreak.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunicollate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunidecomp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-guniprop.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gurifuncs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gutf8.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-core.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-parser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvarianttype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gversion.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gwakeup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gwin32.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -703,46 +1263,665 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-gallocator.lo: deprecated/gallocator.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gallocator.lo -MD -MP -MF $(DEPDIR)/gallocator.Tpo -c -o gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gallocator.Tpo $(DEPDIR)/gallocator.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gallocator.c' object='gallocator.lo' libtool=yes @AMDEPBACKSLASH@
+libglib_2_0_la-gallocator.lo: deprecated/gallocator.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gallocator.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gallocator.Tpo -c -o libglib_2_0_la-gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gallocator.Tpo $(DEPDIR)/libglib_2_0_la-gallocator.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gallocator.c' object='libglib_2_0_la-gallocator.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c
+
+libglib_2_0_la-gcache.lo: deprecated/gcache.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcache.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcache.Tpo -c -o libglib_2_0_la-gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcache.Tpo $(DEPDIR)/libglib_2_0_la-gcache.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcache.c' object='libglib_2_0_la-gcache.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c
+
+libglib_2_0_la-gcompletion.lo: deprecated/gcompletion.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcompletion.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcompletion.Tpo -c -o libglib_2_0_la-gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcompletion.Tpo $(DEPDIR)/libglib_2_0_la-gcompletion.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcompletion.c' object='libglib_2_0_la-gcompletion.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c
+
+libglib_2_0_la-grel.lo: deprecated/grel.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-grel.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-grel.Tpo -c -o libglib_2_0_la-grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-grel.Tpo $(DEPDIR)/libglib_2_0_la-grel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/grel.c' object='libglib_2_0_la-grel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c
+
+libglib_2_0_la-gthread-deprecated.lo: deprecated/gthread-deprecated.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-deprecated.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Tpo -c -o libglib_2_0_la-gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Tpo $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gthread-deprecated.c' object='libglib_2_0_la-gthread-deprecated.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c
+
+libglib_2_0_la-garray.lo: garray.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-garray.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-garray.Tpo -c -o libglib_2_0_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-garray.Tpo $(DEPDIR)/libglib_2_0_la-garray.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='garray.c' object='libglib_2_0_la-garray.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c
+
+libglib_2_0_la-gasyncqueue.lo: gasyncqueue.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gasyncqueue.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gasyncqueue.Tpo -c -o libglib_2_0_la-gasyncqueue.lo `test -f 'gasyncqueue.c' || echo '$(srcdir)/'`gasyncqueue.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gasyncqueue.Tpo $(DEPDIR)/libglib_2_0_la-gasyncqueue.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gasyncqueue.c' object='libglib_2_0_la-gasyncqueue.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gasyncqueue.lo `test -f 'gasyncqueue.c' || echo '$(srcdir)/'`gasyncqueue.c
+
+libglib_2_0_la-gatomic.lo: gatomic.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gatomic.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gatomic.Tpo -c -o libglib_2_0_la-gatomic.lo `test -f 'gatomic.c' || echo '$(srcdir)/'`gatomic.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gatomic.Tpo $(DEPDIR)/libglib_2_0_la-gatomic.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gatomic.c' object='libglib_2_0_la-gatomic.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gatomic.lo `test -f 'gatomic.c' || echo '$(srcdir)/'`gatomic.c
+
+libglib_2_0_la-gbacktrace.lo: gbacktrace.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbacktrace.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbacktrace.Tpo -c -o libglib_2_0_la-gbacktrace.lo `test -f 'gbacktrace.c' || echo '$(srcdir)/'`gbacktrace.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbacktrace.Tpo $(DEPDIR)/libglib_2_0_la-gbacktrace.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbacktrace.c' object='libglib_2_0_la-gbacktrace.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbacktrace.lo `test -f 'gbacktrace.c' || echo '$(srcdir)/'`gbacktrace.c
+
+libglib_2_0_la-gbase64.lo: gbase64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbase64.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbase64.Tpo -c -o libglib_2_0_la-gbase64.lo `test -f 'gbase64.c' || echo '$(srcdir)/'`gbase64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbase64.Tpo $(DEPDIR)/libglib_2_0_la-gbase64.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbase64.c' object='libglib_2_0_la-gbase64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbase64.lo `test -f 'gbase64.c' || echo '$(srcdir)/'`gbase64.c
+
+libglib_2_0_la-gbitlock.lo: gbitlock.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbitlock.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbitlock.Tpo -c -o libglib_2_0_la-gbitlock.lo `test -f 'gbitlock.c' || echo '$(srcdir)/'`gbitlock.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbitlock.Tpo $(DEPDIR)/libglib_2_0_la-gbitlock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbitlock.c' object='libglib_2_0_la-gbitlock.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbitlock.lo `test -f 'gbitlock.c' || echo '$(srcdir)/'`gbitlock.c
+
+libglib_2_0_la-gbookmarkfile.lo: gbookmarkfile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbookmarkfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Tpo -c -o libglib_2_0_la-gbookmarkfile.lo `test -f 'gbookmarkfile.c' || echo '$(srcdir)/'`gbookmarkfile.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Tpo $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbookmarkfile.c' object='libglib_2_0_la-gbookmarkfile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbookmarkfile.lo `test -f 'gbookmarkfile.c' || echo '$(srcdir)/'`gbookmarkfile.c
+
+libglib_2_0_la-gbytes.lo: gbytes.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbytes.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbytes.Tpo -c -o libglib_2_0_la-gbytes.lo `test -f 'gbytes.c' || echo '$(srcdir)/'`gbytes.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbytes.Tpo $(DEPDIR)/libglib_2_0_la-gbytes.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbytes.c' object='libglib_2_0_la-gbytes.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbytes.lo `test -f 'gbytes.c' || echo '$(srcdir)/'`gbytes.c
+
+libglib_2_0_la-gcharset.lo: gcharset.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcharset.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcharset.Tpo -c -o libglib_2_0_la-gcharset.lo `test -f 'gcharset.c' || echo '$(srcdir)/'`gcharset.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcharset.Tpo $(DEPDIR)/libglib_2_0_la-gcharset.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcharset.c' object='libglib_2_0_la-gcharset.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcharset.lo `test -f 'gcharset.c' || echo '$(srcdir)/'`gcharset.c
+
+libglib_2_0_la-gchecksum.lo: gchecksum.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gchecksum.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gchecksum.Tpo -c -o libglib_2_0_la-gchecksum.lo `test -f 'gchecksum.c' || echo '$(srcdir)/'`gchecksum.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gchecksum.Tpo $(DEPDIR)/libglib_2_0_la-gchecksum.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gchecksum.c' object='libglib_2_0_la-gchecksum.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gchecksum.lo `test -f 'gchecksum.c' || echo '$(srcdir)/'`gchecksum.c
+
+libglib_2_0_la-gconvert.lo: gconvert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gconvert.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gconvert.Tpo -c -o libglib_2_0_la-gconvert.lo `test -f 'gconvert.c' || echo '$(srcdir)/'`gconvert.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gconvert.Tpo $(DEPDIR)/libglib_2_0_la-gconvert.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gconvert.c' object='libglib_2_0_la-gconvert.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gconvert.lo `test -f 'gconvert.c' || echo '$(srcdir)/'`gconvert.c
+
+libglib_2_0_la-gdataset.lo: gdataset.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdataset.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdataset.Tpo -c -o libglib_2_0_la-gdataset.lo `test -f 'gdataset.c' || echo '$(srcdir)/'`gdataset.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdataset.Tpo $(DEPDIR)/libglib_2_0_la-gdataset.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdataset.c' object='libglib_2_0_la-gdataset.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdataset.lo `test -f 'gdataset.c' || echo '$(srcdir)/'`gdataset.c
+
+libglib_2_0_la-gdate.lo: gdate.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdate.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdate.Tpo -c -o libglib_2_0_la-gdate.lo `test -f 'gdate.c' || echo '$(srcdir)/'`gdate.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdate.Tpo $(DEPDIR)/libglib_2_0_la-gdate.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdate.c' object='libglib_2_0_la-gdate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdate.lo `test -f 'gdate.c' || echo '$(srcdir)/'`gdate.c
+
+libglib_2_0_la-gdatetime.lo: gdatetime.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdatetime.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdatetime.Tpo -c -o libglib_2_0_la-gdatetime.lo `test -f 'gdatetime.c' || echo '$(srcdir)/'`gdatetime.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdatetime.Tpo $(DEPDIR)/libglib_2_0_la-gdatetime.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdatetime.c' object='libglib_2_0_la-gdatetime.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdatetime.lo `test -f 'gdatetime.c' || echo '$(srcdir)/'`gdatetime.c
+
+libglib_2_0_la-gdir.lo: gdir.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdir.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdir.Tpo -c -o libglib_2_0_la-gdir.lo `test -f 'gdir.c' || echo '$(srcdir)/'`gdir.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdir.Tpo $(DEPDIR)/libglib_2_0_la-gdir.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdir.c' object='libglib_2_0_la-gdir.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdir.lo `test -f 'gdir.c' || echo '$(srcdir)/'`gdir.c
+
+libglib_2_0_la-genviron.lo: genviron.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-genviron.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-genviron.Tpo -c -o libglib_2_0_la-genviron.lo `test -f 'genviron.c' || echo '$(srcdir)/'`genviron.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-genviron.Tpo $(DEPDIR)/libglib_2_0_la-genviron.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genviron.c' object='libglib_2_0_la-genviron.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-genviron.lo `test -f 'genviron.c' || echo '$(srcdir)/'`genviron.c
+
+libglib_2_0_la-gerror.lo: gerror.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gerror.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gerror.Tpo -c -o libglib_2_0_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gerror.Tpo $(DEPDIR)/libglib_2_0_la-gerror.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gerror.c' object='libglib_2_0_la-gerror.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c
+
+libglib_2_0_la-gfileutils.lo: gfileutils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gfileutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gfileutils.Tpo -c -o libglib_2_0_la-gfileutils.lo `test -f 'gfileutils.c' || echo '$(srcdir)/'`gfileutils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gfileutils.Tpo $(DEPDIR)/libglib_2_0_la-gfileutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileutils.c' object='libglib_2_0_la-gfileutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gfileutils.lo `test -f 'gfileutils.c' || echo '$(srcdir)/'`gfileutils.c
+
+libglib_2_0_la-ggettext.lo: ggettext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ggettext.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ggettext.Tpo -c -o libglib_2_0_la-ggettext.lo `test -f 'ggettext.c' || echo '$(srcdir)/'`ggettext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ggettext.Tpo $(DEPDIR)/libglib_2_0_la-ggettext.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ggettext.c' object='libglib_2_0_la-ggettext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ggettext.lo `test -f 'ggettext.c' || echo '$(srcdir)/'`ggettext.c
+
+libglib_2_0_la-ghash.lo: ghash.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghash.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghash.Tpo -c -o libglib_2_0_la-ghash.lo `test -f 'ghash.c' || echo '$(srcdir)/'`ghash.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghash.Tpo $(DEPDIR)/libglib_2_0_la-ghash.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghash.c' object='libglib_2_0_la-ghash.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghash.lo `test -f 'ghash.c' || echo '$(srcdir)/'`ghash.c
+
+libglib_2_0_la-ghmac.lo: ghmac.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghmac.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghmac.Tpo -c -o libglib_2_0_la-ghmac.lo `test -f 'ghmac.c' || echo '$(srcdir)/'`ghmac.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghmac.Tpo $(DEPDIR)/libglib_2_0_la-ghmac.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghmac.c' object='libglib_2_0_la-ghmac.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghmac.lo `test -f 'ghmac.c' || echo '$(srcdir)/'`ghmac.c
+
+libglib_2_0_la-ghook.lo: ghook.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghook.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghook.Tpo -c -o libglib_2_0_la-ghook.lo `test -f 'ghook.c' || echo '$(srcdir)/'`ghook.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghook.Tpo $(DEPDIR)/libglib_2_0_la-ghook.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghook.c' object='libglib_2_0_la-ghook.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghook.lo `test -f 'ghook.c' || echo '$(srcdir)/'`ghook.c
+
+libglib_2_0_la-ghostutils.lo: ghostutils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghostutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghostutils.Tpo -c -o libglib_2_0_la-ghostutils.lo `test -f 'ghostutils.c' || echo '$(srcdir)/'`ghostutils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghostutils.Tpo $(DEPDIR)/libglib_2_0_la-ghostutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghostutils.c' object='libglib_2_0_la-ghostutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghostutils.lo `test -f 'ghostutils.c' || echo '$(srcdir)/'`ghostutils.c
+
+libglib_2_0_la-giochannel.lo: giochannel.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giochannel.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giochannel.Tpo -c -o libglib_2_0_la-giochannel.lo `test -f 'giochannel.c' || echo '$(srcdir)/'`giochannel.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giochannel.Tpo $(DEPDIR)/libglib_2_0_la-giochannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giochannel.c' object='libglib_2_0_la-giochannel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giochannel.lo `test -f 'giochannel.c' || echo '$(srcdir)/'`giochannel.c
+
+libglib_2_0_la-gkeyfile.lo: gkeyfile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gkeyfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gkeyfile.Tpo -c -o libglib_2_0_la-gkeyfile.lo `test -f 'gkeyfile.c' || echo '$(srcdir)/'`gkeyfile.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gkeyfile.Tpo $(DEPDIR)/libglib_2_0_la-gkeyfile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gkeyfile.c' object='libglib_2_0_la-gkeyfile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gkeyfile.lo `test -f 'gkeyfile.c' || echo '$(srcdir)/'`gkeyfile.c
+
+libglib_2_0_la-glib-init.lo: glib-init.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-init.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-init.Tpo -c -o libglib_2_0_la-glib-init.lo `test -f 'glib-init.c' || echo '$(srcdir)/'`glib-init.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-init.Tpo $(DEPDIR)/libglib_2_0_la-glib-init.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-init.c' object='libglib_2_0_la-glib-init.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-init.lo `test -f 'glib-init.c' || echo '$(srcdir)/'`glib-init.c
+
+libglib_2_0_la-glib-private.lo: glib-private.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-private.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-private.Tpo -c -o libglib_2_0_la-glib-private.lo `test -f 'glib-private.c' || echo '$(srcdir)/'`glib-private.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-private.Tpo $(DEPDIR)/libglib_2_0_la-glib-private.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-private.c' object='libglib_2_0_la-glib-private.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-private.lo `test -f 'glib-private.c' || echo '$(srcdir)/'`glib-private.c
+
+libglib_2_0_la-glist.lo: glist.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glist.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glist.Tpo -c -o libglib_2_0_la-glist.lo `test -f 'glist.c' || echo '$(srcdir)/'`glist.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glist.Tpo $(DEPDIR)/libglib_2_0_la-glist.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glist.c' object='libglib_2_0_la-glist.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glist.lo `test -f 'glist.c' || echo '$(srcdir)/'`glist.c
+
+libglib_2_0_la-gmain.lo: gmain.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmain.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmain.Tpo -c -o libglib_2_0_la-gmain.lo `test -f 'gmain.c' || echo '$(srcdir)/'`gmain.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmain.Tpo $(DEPDIR)/libglib_2_0_la-gmain.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmain.c' object='libglib_2_0_la-gmain.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmain.lo `test -f 'gmain.c' || echo '$(srcdir)/'`gmain.c
+
+libglib_2_0_la-gmappedfile.lo: gmappedfile.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmappedfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmappedfile.Tpo -c -o libglib_2_0_la-gmappedfile.lo `test -f 'gmappedfile.c' || echo '$(srcdir)/'`gmappedfile.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmappedfile.Tpo $(DEPDIR)/libglib_2_0_la-gmappedfile.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmappedfile.c' object='libglib_2_0_la-gmappedfile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmappedfile.lo `test -f 'gmappedfile.c' || echo '$(srcdir)/'`gmappedfile.c
+
+libglib_2_0_la-gmarkup.lo: gmarkup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmarkup.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmarkup.Tpo -c -o libglib_2_0_la-gmarkup.lo `test -f 'gmarkup.c' || echo '$(srcdir)/'`gmarkup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmarkup.Tpo $(DEPDIR)/libglib_2_0_la-gmarkup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmarkup.c' object='libglib_2_0_la-gmarkup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmarkup.lo `test -f 'gmarkup.c' || echo '$(srcdir)/'`gmarkup.c
+
+libglib_2_0_la-gmem.lo: gmem.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmem.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmem.Tpo -c -o libglib_2_0_la-gmem.lo `test -f 'gmem.c' || echo '$(srcdir)/'`gmem.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmem.Tpo $(DEPDIR)/libglib_2_0_la-gmem.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmem.c' object='libglib_2_0_la-gmem.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmem.lo `test -f 'gmem.c' || echo '$(srcdir)/'`gmem.c
+
+libglib_2_0_la-gmessages.lo: gmessages.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmessages.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmessages.Tpo -c -o libglib_2_0_la-gmessages.lo `test -f 'gmessages.c' || echo '$(srcdir)/'`gmessages.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmessages.Tpo $(DEPDIR)/libglib_2_0_la-gmessages.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmessages.c' object='libglib_2_0_la-gmessages.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmessages.lo `test -f 'gmessages.c' || echo '$(srcdir)/'`gmessages.c
-gcache.lo: deprecated/gcache.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gcache.lo -MD -MP -MF $(DEPDIR)/gcache.Tpo -c -o gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gcache.Tpo $(DEPDIR)/gcache.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcache.c' object='gcache.lo' libtool=yes @AMDEPBACKSLASH@
+libglib_2_0_la-gnode.lo: gnode.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gnode.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gnode.Tpo -c -o libglib_2_0_la-gnode.lo `test -f 'gnode.c' || echo '$(srcdir)/'`gnode.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gnode.Tpo $(DEPDIR)/libglib_2_0_la-gnode.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnode.c' object='libglib_2_0_la-gnode.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gnode.lo `test -f 'gnode.c' || echo '$(srcdir)/'`gnode.c
-gcompletion.lo: deprecated/gcompletion.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gcompletion.lo -MD -MP -MF $(DEPDIR)/gcompletion.Tpo -c -o gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gcompletion.Tpo $(DEPDIR)/gcompletion.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcompletion.c' object='gcompletion.lo' libtool=yes @AMDEPBACKSLASH@
+libglib_2_0_la-goption.lo: goption.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-goption.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-goption.Tpo -c -o libglib_2_0_la-goption.lo `test -f 'goption.c' || echo '$(srcdir)/'`goption.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-goption.Tpo $(DEPDIR)/libglib_2_0_la-goption.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='goption.c' object='libglib_2_0_la-goption.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-goption.lo `test -f 'goption.c' || echo '$(srcdir)/'`goption.c
-grel.lo: deprecated/grel.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT grel.lo -MD -MP -MF $(DEPDIR)/grel.Tpo -c -o grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/grel.Tpo $(DEPDIR)/grel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/grel.c' object='grel.lo' libtool=yes @AMDEPBACKSLASH@
+libglib_2_0_la-gpattern.lo: gpattern.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gpattern.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gpattern.Tpo -c -o libglib_2_0_la-gpattern.lo `test -f 'gpattern.c' || echo '$(srcdir)/'`gpattern.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gpattern.Tpo $(DEPDIR)/libglib_2_0_la-gpattern.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpattern.c' object='libglib_2_0_la-gpattern.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gpattern.lo `test -f 'gpattern.c' || echo '$(srcdir)/'`gpattern.c
-gthread-deprecated.lo: deprecated/gthread-deprecated.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gthread-deprecated.lo -MD -MP -MF $(DEPDIR)/gthread-deprecated.Tpo -c -o gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gthread-deprecated.Tpo $(DEPDIR)/gthread-deprecated.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gthread-deprecated.c' object='gthread-deprecated.lo' libtool=yes @AMDEPBACKSLASH@
+libglib_2_0_la-gpoll.lo: gpoll.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gpoll.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gpoll.Tpo -c -o libglib_2_0_la-gpoll.lo `test -f 'gpoll.c' || echo '$(srcdir)/'`gpoll.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gpoll.Tpo $(DEPDIR)/libglib_2_0_la-gpoll.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpoll.c' object='libglib_2_0_la-gpoll.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gpoll.lo `test -f 'gpoll.c' || echo '$(srcdir)/'`gpoll.c
+
+libglib_2_0_la-gprimes.lo: gprimes.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gprimes.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gprimes.Tpo -c -o libglib_2_0_la-gprimes.lo `test -f 'gprimes.c' || echo '$(srcdir)/'`gprimes.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gprimes.Tpo $(DEPDIR)/libglib_2_0_la-gprimes.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gprimes.c' object='libglib_2_0_la-gprimes.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gprimes.lo `test -f 'gprimes.c' || echo '$(srcdir)/'`gprimes.c
+
+libglib_2_0_la-gqsort.lo: gqsort.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gqsort.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gqsort.Tpo -c -o libglib_2_0_la-gqsort.lo `test -f 'gqsort.c' || echo '$(srcdir)/'`gqsort.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gqsort.Tpo $(DEPDIR)/libglib_2_0_la-gqsort.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gqsort.c' object='libglib_2_0_la-gqsort.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gqsort.lo `test -f 'gqsort.c' || echo '$(srcdir)/'`gqsort.c
+
+libglib_2_0_la-gquark.lo: gquark.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gquark.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gquark.Tpo -c -o libglib_2_0_la-gquark.lo `test -f 'gquark.c' || echo '$(srcdir)/'`gquark.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gquark.Tpo $(DEPDIR)/libglib_2_0_la-gquark.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gquark.c' object='libglib_2_0_la-gquark.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gquark.lo `test -f 'gquark.c' || echo '$(srcdir)/'`gquark.c
+
+libglib_2_0_la-gqueue.lo: gqueue.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gqueue.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gqueue.Tpo -c -o libglib_2_0_la-gqueue.lo `test -f 'gqueue.c' || echo '$(srcdir)/'`gqueue.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gqueue.Tpo $(DEPDIR)/libglib_2_0_la-gqueue.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gqueue.c' object='libglib_2_0_la-gqueue.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gqueue.lo `test -f 'gqueue.c' || echo '$(srcdir)/'`gqueue.c
+
+libglib_2_0_la-grand.lo: grand.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-grand.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-grand.Tpo -c -o libglib_2_0_la-grand.lo `test -f 'grand.c' || echo '$(srcdir)/'`grand.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-grand.Tpo $(DEPDIR)/libglib_2_0_la-grand.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='grand.c' object='libglib_2_0_la-grand.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-grand.lo `test -f 'grand.c' || echo '$(srcdir)/'`grand.c
+
+libglib_2_0_la-gscanner.lo: gscanner.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gscanner.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gscanner.Tpo -c -o libglib_2_0_la-gscanner.lo `test -f 'gscanner.c' || echo '$(srcdir)/'`gscanner.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gscanner.Tpo $(DEPDIR)/libglib_2_0_la-gscanner.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gscanner.c' object='libglib_2_0_la-gscanner.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gscanner.lo `test -f 'gscanner.c' || echo '$(srcdir)/'`gscanner.c
+
+libglib_2_0_la-gsequence.lo: gsequence.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gsequence.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gsequence.Tpo -c -o libglib_2_0_la-gsequence.lo `test -f 'gsequence.c' || echo '$(srcdir)/'`gsequence.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gsequence.Tpo $(DEPDIR)/libglib_2_0_la-gsequence.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsequence.c' object='libglib_2_0_la-gsequence.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gsequence.lo `test -f 'gsequence.c' || echo '$(srcdir)/'`gsequence.c
+
+libglib_2_0_la-gshell.lo: gshell.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gshell.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gshell.Tpo -c -o libglib_2_0_la-gshell.lo `test -f 'gshell.c' || echo '$(srcdir)/'`gshell.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gshell.Tpo $(DEPDIR)/libglib_2_0_la-gshell.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gshell.c' object='libglib_2_0_la-gshell.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gshell.lo `test -f 'gshell.c' || echo '$(srcdir)/'`gshell.c
+
+libglib_2_0_la-gslice.lo: gslice.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gslice.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gslice.Tpo -c -o libglib_2_0_la-gslice.lo `test -f 'gslice.c' || echo '$(srcdir)/'`gslice.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gslice.Tpo $(DEPDIR)/libglib_2_0_la-gslice.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gslice.c' object='libglib_2_0_la-gslice.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gslice.lo `test -f 'gslice.c' || echo '$(srcdir)/'`gslice.c
+
+libglib_2_0_la-gslist.lo: gslist.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gslist.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gslist.Tpo -c -o libglib_2_0_la-gslist.lo `test -f 'gslist.c' || echo '$(srcdir)/'`gslist.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gslist.Tpo $(DEPDIR)/libglib_2_0_la-gslist.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gslist.c' object='libglib_2_0_la-gslist.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gslist.lo `test -f 'gslist.c' || echo '$(srcdir)/'`gslist.c
+
+libglib_2_0_la-gstdio.lo: gstdio.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstdio.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstdio.Tpo -c -o libglib_2_0_la-gstdio.lo `test -f 'gstdio.c' || echo '$(srcdir)/'`gstdio.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstdio.Tpo $(DEPDIR)/libglib_2_0_la-gstdio.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdio.c' object='libglib_2_0_la-gstdio.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstdio.lo `test -f 'gstdio.c' || echo '$(srcdir)/'`gstdio.c
+
+libglib_2_0_la-gstrfuncs.lo: gstrfuncs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstrfuncs.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstrfuncs.Tpo -c -o libglib_2_0_la-gstrfuncs.lo `test -f 'gstrfuncs.c' || echo '$(srcdir)/'`gstrfuncs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstrfuncs.Tpo $(DEPDIR)/libglib_2_0_la-gstrfuncs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrfuncs.c' object='libglib_2_0_la-gstrfuncs.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstrfuncs.lo `test -f 'gstrfuncs.c' || echo '$(srcdir)/'`gstrfuncs.c
+
+libglib_2_0_la-gstring.lo: gstring.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstring.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstring.Tpo -c -o libglib_2_0_la-gstring.lo `test -f 'gstring.c' || echo '$(srcdir)/'`gstring.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstring.Tpo $(DEPDIR)/libglib_2_0_la-gstring.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstring.c' object='libglib_2_0_la-gstring.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstring.lo `test -f 'gstring.c' || echo '$(srcdir)/'`gstring.c
+
+libglib_2_0_la-gstringchunk.lo: gstringchunk.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstringchunk.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstringchunk.Tpo -c -o libglib_2_0_la-gstringchunk.lo `test -f 'gstringchunk.c' || echo '$(srcdir)/'`gstringchunk.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstringchunk.Tpo $(DEPDIR)/libglib_2_0_la-gstringchunk.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstringchunk.c' object='libglib_2_0_la-gstringchunk.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstringchunk.lo `test -f 'gstringchunk.c' || echo '$(srcdir)/'`gstringchunk.c
+
+libglib_2_0_la-gtestutils.lo: gtestutils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtestutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtestutils.Tpo -c -o libglib_2_0_la-gtestutils.lo `test -f 'gtestutils.c' || echo '$(srcdir)/'`gtestutils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtestutils.Tpo $(DEPDIR)/libglib_2_0_la-gtestutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtestutils.c' object='libglib_2_0_la-gtestutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtestutils.lo `test -f 'gtestutils.c' || echo '$(srcdir)/'`gtestutils.c
+
+libglib_2_0_la-gthread.lo: gthread.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread.Tpo -c -o libglib_2_0_la-gthread.lo `test -f 'gthread.c' || echo '$(srcdir)/'`gthread.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread.Tpo $(DEPDIR)/libglib_2_0_la-gthread.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread.c' object='libglib_2_0_la-gthread.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread.lo `test -f 'gthread.c' || echo '$(srcdir)/'`gthread.c
+
+libglib_2_0_la-gthreadpool.lo: gthreadpool.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthreadpool.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthreadpool.Tpo -c -o libglib_2_0_la-gthreadpool.lo `test -f 'gthreadpool.c' || echo '$(srcdir)/'`gthreadpool.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthreadpool.Tpo $(DEPDIR)/libglib_2_0_la-gthreadpool.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthreadpool.c' object='libglib_2_0_la-gthreadpool.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthreadpool.lo `test -f 'gthreadpool.c' || echo '$(srcdir)/'`gthreadpool.c
+
+libglib_2_0_la-gtimer.lo: gtimer.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtimer.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtimer.Tpo -c -o libglib_2_0_la-gtimer.lo `test -f 'gtimer.c' || echo '$(srcdir)/'`gtimer.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtimer.Tpo $(DEPDIR)/libglib_2_0_la-gtimer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtimer.c' object='libglib_2_0_la-gtimer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtimer.lo `test -f 'gtimer.c' || echo '$(srcdir)/'`gtimer.c
+
+libglib_2_0_la-gtimezone.lo: gtimezone.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtimezone.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtimezone.Tpo -c -o libglib_2_0_la-gtimezone.lo `test -f 'gtimezone.c' || echo '$(srcdir)/'`gtimezone.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtimezone.Tpo $(DEPDIR)/libglib_2_0_la-gtimezone.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtimezone.c' object='libglib_2_0_la-gtimezone.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtimezone.lo `test -f 'gtimezone.c' || echo '$(srcdir)/'`gtimezone.c
+
+libglib_2_0_la-gtrashstack.lo: gtrashstack.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtrashstack.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtrashstack.Tpo -c -o libglib_2_0_la-gtrashstack.lo `test -f 'gtrashstack.c' || echo '$(srcdir)/'`gtrashstack.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtrashstack.Tpo $(DEPDIR)/libglib_2_0_la-gtrashstack.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtrashstack.c' object='libglib_2_0_la-gtrashstack.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtrashstack.lo `test -f 'gtrashstack.c' || echo '$(srcdir)/'`gtrashstack.c
+
+libglib_2_0_la-gtree.lo: gtree.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtree.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtree.Tpo -c -o libglib_2_0_la-gtree.lo `test -f 'gtree.c' || echo '$(srcdir)/'`gtree.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtree.Tpo $(DEPDIR)/libglib_2_0_la-gtree.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtree.c' object='libglib_2_0_la-gtree.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtree.lo `test -f 'gtree.c' || echo '$(srcdir)/'`gtree.c
+
+libglib_2_0_la-guniprop.lo: guniprop.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-guniprop.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-guniprop.Tpo -c -o libglib_2_0_la-guniprop.lo `test -f 'guniprop.c' || echo '$(srcdir)/'`guniprop.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-guniprop.Tpo $(DEPDIR)/libglib_2_0_la-guniprop.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='guniprop.c' object='libglib_2_0_la-guniprop.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-guniprop.lo `test -f 'guniprop.c' || echo '$(srcdir)/'`guniprop.c
+
+libglib_2_0_la-gutf8.lo: gutf8.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gutf8.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gutf8.Tpo -c -o libglib_2_0_la-gutf8.lo `test -f 'gutf8.c' || echo '$(srcdir)/'`gutf8.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gutf8.Tpo $(DEPDIR)/libglib_2_0_la-gutf8.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutf8.c' object='libglib_2_0_la-gutf8.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gutf8.lo `test -f 'gutf8.c' || echo '$(srcdir)/'`gutf8.c
+
+libglib_2_0_la-gunibreak.lo: gunibreak.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunibreak.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunibreak.Tpo -c -o libglib_2_0_la-gunibreak.lo `test -f 'gunibreak.c' || echo '$(srcdir)/'`gunibreak.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunibreak.Tpo $(DEPDIR)/libglib_2_0_la-gunibreak.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunibreak.c' object='libglib_2_0_la-gunibreak.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunibreak.lo `test -f 'gunibreak.c' || echo '$(srcdir)/'`gunibreak.c
+
+libglib_2_0_la-gunicollate.lo: gunicollate.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunicollate.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunicollate.Tpo -c -o libglib_2_0_la-gunicollate.lo `test -f 'gunicollate.c' || echo '$(srcdir)/'`gunicollate.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunicollate.Tpo $(DEPDIR)/libglib_2_0_la-gunicollate.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunicollate.c' object='libglib_2_0_la-gunicollate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunicollate.lo `test -f 'gunicollate.c' || echo '$(srcdir)/'`gunicollate.c
+
+libglib_2_0_la-gunidecomp.lo: gunidecomp.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunidecomp.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunidecomp.Tpo -c -o libglib_2_0_la-gunidecomp.lo `test -f 'gunidecomp.c' || echo '$(srcdir)/'`gunidecomp.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunidecomp.Tpo $(DEPDIR)/libglib_2_0_la-gunidecomp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunidecomp.c' object='libglib_2_0_la-gunidecomp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunidecomp.lo `test -f 'gunidecomp.c' || echo '$(srcdir)/'`gunidecomp.c
+
+libglib_2_0_la-gurifuncs.lo: gurifuncs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gurifuncs.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gurifuncs.Tpo -c -o libglib_2_0_la-gurifuncs.lo `test -f 'gurifuncs.c' || echo '$(srcdir)/'`gurifuncs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gurifuncs.Tpo $(DEPDIR)/libglib_2_0_la-gurifuncs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gurifuncs.c' object='libglib_2_0_la-gurifuncs.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gurifuncs.lo `test -f 'gurifuncs.c' || echo '$(srcdir)/'`gurifuncs.c
+
+libglib_2_0_la-gutils.lo: gutils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gutils.Tpo -c -o libglib_2_0_la-gutils.lo `test -f 'gutils.c' || echo '$(srcdir)/'`gutils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gutils.Tpo $(DEPDIR)/libglib_2_0_la-gutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutils.c' object='libglib_2_0_la-gutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gutils.lo `test -f 'gutils.c' || echo '$(srcdir)/'`gutils.c
+
+libglib_2_0_la-gvariant.lo: gvariant.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant.Tpo -c -o libglib_2_0_la-gvariant.lo `test -f 'gvariant.c' || echo '$(srcdir)/'`gvariant.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant.Tpo $(DEPDIR)/libglib_2_0_la-gvariant.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant.c' object='libglib_2_0_la-gvariant.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant.lo `test -f 'gvariant.c' || echo '$(srcdir)/'`gvariant.c
+
+libglib_2_0_la-gvariant-core.lo: gvariant-core.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-core.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-core.Tpo -c -o libglib_2_0_la-gvariant-core.lo `test -f 'gvariant-core.c' || echo '$(srcdir)/'`gvariant-core.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-core.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-core.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-core.c' object='libglib_2_0_la-gvariant-core.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-core.lo `test -f 'gvariant-core.c' || echo '$(srcdir)/'`gvariant-core.c
+
+libglib_2_0_la-gvariant-parser.lo: gvariant-parser.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-parser.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-parser.Tpo -c -o libglib_2_0_la-gvariant-parser.lo `test -f 'gvariant-parser.c' || echo '$(srcdir)/'`gvariant-parser.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-parser.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-parser.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-parser.c' object='libglib_2_0_la-gvariant-parser.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-parser.lo `test -f 'gvariant-parser.c' || echo '$(srcdir)/'`gvariant-parser.c
+
+libglib_2_0_la-gvariant-serialiser.lo: gvariant-serialiser.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-serialiser.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Tpo -c -o libglib_2_0_la-gvariant-serialiser.lo `test -f 'gvariant-serialiser.c' || echo '$(srcdir)/'`gvariant-serialiser.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-serialiser.c' object='libglib_2_0_la-gvariant-serialiser.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-serialiser.lo `test -f 'gvariant-serialiser.c' || echo '$(srcdir)/'`gvariant-serialiser.c
+
+libglib_2_0_la-gvarianttypeinfo.lo: gvarianttypeinfo.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvarianttypeinfo.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Tpo -c -o libglib_2_0_la-gvarianttypeinfo.lo `test -f 'gvarianttypeinfo.c' || echo '$(srcdir)/'`gvarianttypeinfo.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Tpo $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvarianttypeinfo.c' object='libglib_2_0_la-gvarianttypeinfo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvarianttypeinfo.lo `test -f 'gvarianttypeinfo.c' || echo '$(srcdir)/'`gvarianttypeinfo.c
+
+libglib_2_0_la-gvarianttype.lo: gvarianttype.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvarianttype.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvarianttype.Tpo -c -o libglib_2_0_la-gvarianttype.lo `test -f 'gvarianttype.c' || echo '$(srcdir)/'`gvarianttype.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvarianttype.Tpo $(DEPDIR)/libglib_2_0_la-gvarianttype.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvarianttype.c' object='libglib_2_0_la-gvarianttype.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvarianttype.lo `test -f 'gvarianttype.c' || echo '$(srcdir)/'`gvarianttype.c
+
+libglib_2_0_la-gversion.lo: gversion.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gversion.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gversion.Tpo -c -o libglib_2_0_la-gversion.lo `test -f 'gversion.c' || echo '$(srcdir)/'`gversion.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gversion.Tpo $(DEPDIR)/libglib_2_0_la-gversion.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gversion.c' object='libglib_2_0_la-gversion.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gversion.lo `test -f 'gversion.c' || echo '$(srcdir)/'`gversion.c
+
+libglib_2_0_la-gwakeup.lo: gwakeup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gwakeup.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gwakeup.Tpo -c -o libglib_2_0_la-gwakeup.lo `test -f 'gwakeup.c' || echo '$(srcdir)/'`gwakeup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gwakeup.Tpo $(DEPDIR)/libglib_2_0_la-gwakeup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwakeup.c' object='libglib_2_0_la-gwakeup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gwakeup.lo `test -f 'gwakeup.c' || echo '$(srcdir)/'`gwakeup.c
+
+libglib_2_0_la-gprintf.lo: gprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gprintf.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gprintf.Tpo -c -o libglib_2_0_la-gprintf.lo `test -f 'gprintf.c' || echo '$(srcdir)/'`gprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gprintf.Tpo $(DEPDIR)/libglib_2_0_la-gprintf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gprintf.c' object='libglib_2_0_la-gprintf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gprintf.lo `test -f 'gprintf.c' || echo '$(srcdir)/'`gprintf.c
+
+libglib_2_0_la-glib-unix.lo: glib-unix.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-unix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-unix.Tpo -c -o libglib_2_0_la-glib-unix.lo `test -f 'glib-unix.c' || echo '$(srcdir)/'`glib-unix.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-unix.Tpo $(DEPDIR)/libglib_2_0_la-glib-unix.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-unix.c' object='libglib_2_0_la-glib-unix.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-unix.lo `test -f 'glib-unix.c' || echo '$(srcdir)/'`glib-unix.c
+
+libglib_2_0_la-gthread-win32.lo: gthread-win32.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-win32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-win32.Tpo -c -o libglib_2_0_la-gthread-win32.lo `test -f 'gthread-win32.c' || echo '$(srcdir)/'`gthread-win32.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-win32.Tpo $(DEPDIR)/libglib_2_0_la-gthread-win32.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread-win32.c' object='libglib_2_0_la-gthread-win32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-win32.lo `test -f 'gthread-win32.c' || echo '$(srcdir)/'`gthread-win32.c
+
+libglib_2_0_la-gthread-posix.lo: gthread-posix.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-posix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-posix.Tpo -c -o libglib_2_0_la-gthread-posix.lo `test -f 'gthread-posix.c' || echo '$(srcdir)/'`gthread-posix.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-posix.Tpo $(DEPDIR)/libglib_2_0_la-gthread-posix.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread-posix.c' object='libglib_2_0_la-gthread-posix.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-posix.lo `test -f 'gthread-posix.c' || echo '$(srcdir)/'`gthread-posix.c
+
+libglib_2_0_la-giounix.lo: giounix.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giounix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giounix.Tpo -c -o libglib_2_0_la-giounix.lo `test -f 'giounix.c' || echo '$(srcdir)/'`giounix.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giounix.Tpo $(DEPDIR)/libglib_2_0_la-giounix.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giounix.c' object='libglib_2_0_la-giounix.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giounix.lo `test -f 'giounix.c' || echo '$(srcdir)/'`giounix.c
+
+libglib_2_0_la-giowin32.lo: giowin32.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giowin32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giowin32.Tpo -c -o libglib_2_0_la-giowin32.lo `test -f 'giowin32.c' || echo '$(srcdir)/'`giowin32.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giowin32.Tpo $(DEPDIR)/libglib_2_0_la-giowin32.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giowin32.c' object='libglib_2_0_la-giowin32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giowin32.lo `test -f 'giowin32.c' || echo '$(srcdir)/'`giowin32.c
+
+libglib_2_0_la-gspawn.lo: gspawn.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gspawn.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gspawn.Tpo -c -o libglib_2_0_la-gspawn.lo `test -f 'gspawn.c' || echo '$(srcdir)/'`gspawn.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gspawn.Tpo $(DEPDIR)/libglib_2_0_la-gspawn.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gspawn.c' object='libglib_2_0_la-gspawn.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gspawn.lo `test -f 'gspawn.c' || echo '$(srcdir)/'`gspawn.c
+
+libglib_2_0_la-gspawn-win32.lo: gspawn-win32.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gspawn-win32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gspawn-win32.Tpo -c -o libglib_2_0_la-gspawn-win32.lo `test -f 'gspawn-win32.c' || echo '$(srcdir)/'`gspawn-win32.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gspawn-win32.Tpo $(DEPDIR)/libglib_2_0_la-gspawn-win32.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gspawn-win32.c' object='libglib_2_0_la-gspawn-win32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gspawn-win32.lo `test -f 'gspawn-win32.c' || echo '$(srcdir)/'`gspawn-win32.c
+
+libglib_2_0_la-gwin32.lo: gwin32.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gwin32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gwin32.Tpo -c -o libglib_2_0_la-gwin32.lo `test -f 'gwin32.c' || echo '$(srcdir)/'`gwin32.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gwin32.Tpo $(DEPDIR)/libglib_2_0_la-gwin32.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32.c' object='libglib_2_0_la-gwin32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gwin32.lo `test -f 'gwin32.c' || echo '$(srcdir)/'`gwin32.c
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
+install-installed_test_metaDATA: $(installed_test_meta_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
+ done
+
+uninstall-installed_test_metaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
+install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_installed_testDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
@@ -750,14 +1929,13 @@ clean-libtool:
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
@@ -778,31 +1956,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-cscopelist-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
- done
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -818,12 +1978,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -835,15 +1990,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -852,9 +2003,10 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
@@ -870,6 +2022,162 @@ cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -929,12 +2237,18 @@ distdir: $(DISTFILES)
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
+ $(check_SCRIPTS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) all-local
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+ $(HEADERS) all-local
installdirs: installdirs-recursive
installdirs-am:
+ for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
@@ -956,6 +2270,9 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -969,9 +2286,12 @@ maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
mostlyclean-am
distclean: distclean-recursive
@@ -992,7 +2312,10 @@ info: info-recursive
info-am:
-install-data-am:
+install-data-am: install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA \
+ install-nobase_installed_testDATA
install-dvi: install-dvi-recursive
@@ -1038,27 +2361,42 @@ ps: ps-recursive
ps-am:
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
- check-am cscopelist-recursive ctags-recursive install \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am all-local check check-am check-local clean \
- clean-generic clean-libtool clean-noinstLTLIBRARIES cscopelist \
- cscopelist-recursive ctags ctags-recursive dist-hook distclean \
+uninstall-am: uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+ check check-TESTS check-am check-local clean \
+ clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
+ cscopelist-am ctags ctags-am dist-hook distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am
+ install-html-am install-info install-info-am \
+ install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA install-man \
+ install-nobase_installed_testDATA install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am \
+ uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.PRECIOUS: Makefile
### testing rules
@@ -1072,7 +2410,7 @@ test: test-nonrecursive
# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
-@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:
# test-report: run tests in subdirs and generate report
@@ -1086,9 +2424,9 @@ test-report perf-report full-report: ${TEST_PROGS}
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}
@ ignore_logdir=true ; \
@@ -1145,14 +2483,17 @@ lcov-clean:
# run tests in cwd as part of make check
check-local: test-nonrecursive
+
+@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
+@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@)
glibconfig-stamp: ../config.status
$(AM_V_GEN) cd $(top_builddir) && \
$(SHELL) ./config.status glib/glibconfig.h
@touch glibconfig-stamp
-glib.def: glib.symbols
- $(AM_V_GEN) (echo EXPORTS; $(CPP) -P -DG_OS_WIN32 - <$(srcdir)/glib.symbols | sed -e '/^$$/d' -e 's/^/ /') > $(builddir)/glib.def
-
install-ms-lib:
$(install_ms_lib_cmd)
@@ -1165,14 +2506,6 @@ glib-public-headers.txt: Makefile
all-local: glib-public-headers.txt
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@install-def-file:
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@ $(INSTALL) $(builddir)/glib.def $(DESTDIR)$(libdir)/glib-2.0.def
-
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall-def-file:
-@OS_WIN32_AND_DLL_COMPILATION_TRUE@ -rm $(DESTDIR)$(libdir)/glib-2.0.def
-@OS_WIN32_AND_DLL_COMPILATION_FALSE@install-def-file:
-@OS_WIN32_AND_DLL_COMPILATION_FALSE@uninstall-def-file:
-
gspawn-win32-helper-console.c:
echo '#define HELPER_CONSOLE' >$@
echo '#include "gspawn-win32-helper.c"' >>$@
diff --git a/glib/glib/abicheck.sh b/glib/glib/abicheck.sh
deleted file mode 100755
index 3137794..0000000
--- a/glib/glib/abicheck.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/sh
-
-egrep '^#([^i]|if).*[^\]$' "${builddir:-.}/glibconfig.h" > glibconfig.cpp
-
-INCLUDES="-include ${top_builddir:-..}/config.h"
-INCLUDES="$INCLUDES -include glibconfig.cpp $GLIB_DEBUG_FLAGS"
-
-cpp -P -DG_STDIO_NO_WRAP_ON_UNIX $INCLUDES "${srcdir:-.}/glib.symbols" | sed -e '/^$/d' -e 's/ PRIVATE$//' | sort > expected-abi
-rm -f glibconfig.cpp
-
-nm -D -g --defined-only .libs/libglib-2.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi
-
-diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
diff --git a/glib/glib/deprecated/gallocator.h b/glib/glib/deprecated/gallocator.h
index e4990e9..a3dc2a1 100644
--- a/glib/glib/deprecated/gallocator.h
+++ b/glib/glib/deprecated/gallocator.h
@@ -15,13 +15,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_ALLOCATOR_H__
+#define __G_ALLOCATOR_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ALLOCATOR_H__
-#define __G_ALLOCATOR_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
diff --git a/glib/glib/deprecated/gcache.c b/glib/glib/deprecated/gcache.c
index 4968c32..5a59365 100644
--- a/glib/glib/deprecated/gcache.c
+++ b/glib/glib/deprecated/gcache.c
@@ -136,11 +136,12 @@ g_cache_node_destroy (GCacheNode *node)
/**
* GCacheNewFunc:
* @key: a #GCache key
- * @Returns: a new #GCache value corresponding to the key.
*
* Specifies the type of the @value_new_func function passed to
* g_cache_new(). It is passed a #GCache key and should create the
* value corresponding to the key.
+ *
+ * Returns: a new #GCache value corresponding to the key.
*/
/**
@@ -157,12 +158,13 @@ g_cache_node_destroy (GCacheNode *node)
* GCacheDupFunc:
* @value: the #GCache key to destroy (<emphasis>not</emphasis> a
* #GCache value as it seems)
- * @Returns: a copy of the #GCache key
*
* Specifies the type of the @key_dup_func function passed to
* g_cache_new(). The function is passed a key
* (<emphasis>not</emphasis> a value as the prototype implies) and
* should return a duplicate of the key.
+ *
+ * Returns: a copy of the #GCache key
*/
GCache*
g_cache_new (GCacheNewFunc value_new_func,
diff --git a/glib/glib/deprecated/gcache.h b/glib/glib/deprecated/gcache.h
index 2e5119b..a7854e0 100644
--- a/glib/glib/deprecated/gcache.h
+++ b/glib/glib/deprecated/gcache.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_CACHE_H__
+#define __G_CACHE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_CACHE_H__
-#define __G_CACHE_H__
-
#include <glib/glist.h>
G_BEGIN_DECLS
diff --git a/glib/glib/deprecated/gcompletion.c b/glib/glib/deprecated/gcompletion.c
index 620af0e..fb5ab61 100644
--- a/glib/glib/deprecated/gcompletion.c
+++ b/glib/glib/deprecated/gcompletion.c
@@ -86,11 +86,12 @@
/**
* GCompletionFunc:
* @Param1: the completion item.
- * @Returns: the string corresponding to the item.
*
* Specifies the type of the function passed to g_completion_new(). It
* should return the string corresponding to the given target item.
* This is used when you use data structures as #GCompletion items.
+ *
+ * Returns: the string corresponding to the item.
**/
/**
@@ -98,14 +99,15 @@
* @s1: string to compare with @s2.
* @s2: string to compare with @s1.
* @n: maximal number of bytes to compare.
- * @Returns: an integer less than, equal to, or greater than zero if
- * the first @n bytes of @s1 is found, respectively, to be
- * less than, to match, or to be greater than the first @n
- * bytes of @s2.
*
* Specifies the type of the function passed to
* g_completion_set_compare(). This is used when you use strings as
* #GCompletion items.
+ *
+ * Returns: an integer less than, equal to, or greater than zero if
+ * the first @n bytes of @s1 is found, respectively, to be
+ * less than, to match, or to be greater than the first @n
+ * bytes of @s2.
**/
static void completion_check_cache (GCompletion* cmp,
@@ -116,9 +118,10 @@ static void completion_check_cache (GCompletion* cmp,
* @func: the function to be called to return the string representing
* an item in the #GCompletion, or %NULL if strings are going to
* be used as the #GCompletion items.
- * @Returns: the new #GCompletion.
*
* Creates a new #GCompletion.
+ *
+ * Returns: the new #GCompletion.
**/
GCompletion*
g_completion_new (GCompletionFunc func)
@@ -138,7 +141,7 @@ g_completion_new (GCompletionFunc func)
/**
* g_completion_add_items:
* @cmp: the #GCompletion.
- * @items: the list of items to add.
+ * @items: (transfer none): the list of items to add.
*
* Adds items to the #GCompletion.
*
@@ -176,9 +179,11 @@ g_completion_add_items (GCompletion* cmp,
/**
* g_completion_remove_items:
* @cmp: the #GCompletion.
- * @items: the items to remove.
+ * @items: (transfer none): the items to remove.
*
- * Removes items from a #GCompletion.
+ * Removes items from a #GCompletion. The items are not freed, so if the memory
+ * was dynamically allocated, free @items with g_list_free_full() after calling
+ * this function.
*
* Deprecated: 2.26: Rarely used API
**/
@@ -209,7 +214,9 @@ g_completion_remove_items (GCompletion* cmp,
* g_completion_clear_items:
* @cmp: the #GCompletion.
*
- * Removes all items from the #GCompletion.
+ * Removes all items from the #GCompletion. The items are not freed, so if the
+ * memory was dynamically allocated, it should be freed after calling this
+ * function.
*
* Deprecated: 2.26: Rarely used API
**/
@@ -332,12 +339,13 @@ g_completion_complete_utf8 (GCompletion *cmp,
* common to all items that matched @prefix, or %NULL if
* no items matched @prefix. This string should be freed
* when no longer needed.
- * @Returns: the list of items whose strings begin with @prefix. This
- * should not be changed.
*
* Attempts to complete the string @prefix using the #GCompletion
* target items.
*
+ * Returns: (transfer none): the list of items whose strings begin with
+ * @prefix. This should not be changed.
+ *
* Deprecated: 2.26: Rarely used API
**/
GList*
@@ -406,7 +414,9 @@ g_completion_complete (GCompletion* cmp,
* g_completion_free:
* @cmp: the #GCompletion.
*
- * Frees all memory used by the #GCompletion.
+ * Frees all memory used by the #GCompletion. The items are not freed, so if
+ * the memory was dynamically allocated, it should be freed after calling this
+ * function.
*
* Deprecated: 2.26: Rarely used API
**/
diff --git a/glib/glib/deprecated/gcompletion.h b/glib/glib/deprecated/gcompletion.h
index 88a0479..fa77596 100644
--- a/glib/glib/deprecated/gcompletion.h
+++ b/glib/glib/deprecated/gcompletion.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_COMPLETION_H__
+#define __G_COMPLETION_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_COMPLETION_H__
-#define __G_COMPLETION_H__
-
#include <glib/glist.h>
G_BEGIN_DECLS
diff --git a/glib/glib/deprecated/gmain.h b/glib/glib/deprecated/gmain.h
index d1ddf19..bb62240 100644
--- a/glib/glib/deprecated/gmain.h
+++ b/glib/glib/deprecated/gmain.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_DEPRECATED_MAIN_H__
+#define __G_DEPRECATED_MAIN_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DEPRECATED_MAIN_H__
-#define __G_DEPRECATED_MAIN_H__
-
#include <glib/gmain.h>
G_BEGIN_DECLS
diff --git a/glib/glib/deprecated/grel.c b/glib/glib/deprecated/grel.c
index a8b2c4d..7f6fdff 100644
--- a/glib/glib/deprecated/grel.c
+++ b/glib/glib/deprecated/grel.c
@@ -185,11 +185,12 @@ tuple_equal (gint fields)
/**
* g_relation_new:
* @fields: the number of fields.
- * @Returns: a new #GRelation.
*
* Creates a new #GRelation with the given number of fields. Note that
* currently the number of fields must be 2.
*
+ * Returns: a new #GRelation.
+ *
* Deprecated: 2.26: Rarely used API
**/
GRelation*
@@ -375,11 +376,12 @@ g_relation_delete_tuple (gpointer tuple_key,
* @relation: a #GRelation.
* @key: the value to compare with.
* @field: the field of each record to match.
- * @Returns: the number of records deleted.
*
* Deletes any records from a #GRelation that have the given key value
* in the given field.
*
+ * Returns: the number of records deleted.
+ *
* Deprecated: 2.26: Rarely used API
**/
gint
@@ -439,12 +441,13 @@ g_relation_select_tuple (gpointer tuple_key,
* @relation: a #GRelation.
* @key: the value to compare with.
* @field: the field of each record to match.
- * @Returns: the records (tuples) that matched.
*
* Returns all of the tuples which have the given key in the given
* field. Use g_tuples_index() to access the returned records. The
* returned records should be freed with g_tuples_destroy().
*
+ * Returns: the records (tuples) that matched.
+ *
* Deprecated: 2.26: Rarely used API
**/
GTuples*
@@ -486,11 +489,12 @@ g_relation_select (GRelation *relation,
* @relation: a #GRelation.
* @key: the value to compare with.
* @field: the field of each record to match.
- * @Returns: the number of matches.
*
* Returns the number of tuples in a #GRelation that have the given
* value in the given field.
*
+ * Returns: the number of matches.
+ *
* Deprecated: 2.26: Rarely used API
**/
gint
@@ -520,12 +524,13 @@ g_relation_count (GRelation *relation,
* @relation: a #GRelation.
* @...: the fields of the record to compare. The number must match
* the number of fields in the #GRelation.
- * @Returns: %TRUE if a record matches.
*
* Returns %TRUE if a record with the given values exists in a
* #GRelation. Note that the values are compared directly, so that, for
* example, two copies of the same string will not match.
*
+ * Returns: %TRUE if a record matches.
+ *
* Deprecated: 2.26: Rarely used API
**/
gboolean
@@ -578,12 +583,13 @@ g_tuples_destroy (GTuples *tuples0)
* @tuples: the tuple data, returned by g_relation_select().
* @index_: the index of the record.
* @field: the field to return.
- * @Returns: the field of the record.
*
* Gets a field from the records returned by g_relation_select(). It
* returns the given field of the record at the given index. The
* returned value should not be changed.
*
+ * Returns: the field of the record.
+ *
* Deprecated: 2.26: Rarely used API
**/
gpointer
diff --git a/glib/glib/deprecated/grel.h b/glib/glib/deprecated/grel.h
index c9e0996..b76e006 100644
--- a/glib/glib/deprecated/grel.h
+++ b/glib/glib/deprecated/grel.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_REL_H__
+#define __G_REL_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_REL_H__
-#define __G_REL_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
diff --git a/glib/glib/deprecated/gthread-deprecated.c b/glib/glib/deprecated/gthread-deprecated.c
index a3cba18..89dba4d 100644
--- a/glib/glib/deprecated/gthread-deprecated.c
+++ b/glib/glib/deprecated/gthread-deprecated.c
@@ -196,6 +196,7 @@ g_thread_get_initialized (void)
}
/* We need this for ABI compatibility */
+GLIB_AVAILABLE_IN_ALL
void g_thread_init_glib (void);
void g_thread_init_glib (void) { }
@@ -351,10 +352,11 @@ g_thread_create (GThreadFunc func,
* @bound: ignored
* @priority: ignored
* @error: return location for error.
- * @Returns: the new #GThread on success.
*
* This function creates a new thread.
*
+ * Returns: the new #GThread on success.
+ *
* Deprecated:2.32: The @bound and @priority arguments are now ignored.
* Use g_thread_new().
*/
@@ -372,7 +374,7 @@ g_thread_create_full (GThreadFunc func,
thread = g_thread_new_internal (NULL, g_deprecated_thread_proxy,
func, data, stack_size, error);
- if (!joinable)
+ if (thread && !joinable)
{
thread->joinable = FALSE;
g_thread_unref (thread);
@@ -501,12 +503,13 @@ g_static_mutex_init (GStaticMutex *mutex)
/**
* g_static_mutex_get_mutex:
* @mutex: a #GStaticMutex.
- * @Returns: the #GMutex corresponding to @mutex.
*
* For some operations (like g_cond_wait()) you must have a #GMutex
* instead of a #GStaticMutex. This function will return the
* corresponding #GMutex for @mutex.
*
+ * Returns: the #GMutex corresponding to @mutex.
+ *
* Deprecated: 2.32: Just use a #GMutex
*/
GMutex *
@@ -556,10 +559,11 @@ g_static_mutex_get_mutex_impl (GStaticMutex* mutex)
/**
* g_static_mutex_trylock:
* @mutex: a #GStaticMutex.
- * @Returns: %TRUE, if the #GStaticMutex could be locked.
*
* Works like g_mutex_trylock(), but for a #GStaticMutex.
*
+ * Returns: %TRUE, if the #GStaticMutex could be locked.
+ *
* Deprecated: 2.32: Use g_mutex_trylock()
*/
@@ -586,7 +590,7 @@ g_static_mutex_get_mutex_impl (GStaticMutex* mutex)
* <note><para>Calling g_static_mutex_free() on a locked mutex may
* result in undefined behaviour.</para></note>
*
- * Deprecated: 2.32: Use g_mutex_free()
+ * Deprecated: 2.32: Use g_mutex_clear()
*/
void
g_static_mutex_free (GStaticMutex* mutex)
@@ -716,7 +720,6 @@ g_static_rec_mutex_lock (GStaticRecMutex* mutex)
/**
* g_static_rec_mutex_trylock:
* @mutex: a #GStaticRecMutex to lock.
- * @Returns: %TRUE, if @mutex could be locked.
*
* Tries to lock @mutex. If @mutex is already locked by another thread,
* it immediately returns %FALSE. Otherwise it locks @mutex and returns
@@ -724,6 +727,8 @@ g_static_rec_mutex_lock (GStaticRecMutex* mutex)
* functions increases the depth of @mutex and immediately returns
* %TRUE.
*
+ * Returns: %TRUE, if @mutex could be locked.
+ *
* Deprecated: 2.32: Use g_rec_mutex_trylock()
*/
gboolean
@@ -789,8 +794,6 @@ g_static_rec_mutex_lock_full (GStaticRecMutex *mutex,
/**
* g_static_rec_mutex_unlock_full:
* @mutex: a #GStaticRecMutex to completely unlock.
- * @Returns: number of times @mutex has been locked by the current
- * thread.
*
* Completely unlocks @mutex. If another thread is blocked in a
* g_static_rec_mutex_lock() call for @mutex, it will be woken and can
@@ -800,6 +803,9 @@ g_static_rec_mutex_lock_full (GStaticRecMutex *mutex,
* g_static_rec_mutex_lock_full() with the depth returned by this
* function.
*
+ * Returns: number of times @mutex has been locked by the current
+ * thread.
+ *
* Deprecated: 2.32: Use g_rec_mutex_unlock()
*/
guint
@@ -1024,7 +1030,6 @@ g_static_rw_lock_reader_lock (GStaticRWLock* lock)
/**
* g_static_rw_lock_reader_trylock:
* @lock: a #GStaticRWLock to lock for reading.
- * @Returns: %TRUE, if @lock could be locked for reading.
*
* Tries to lock @lock for reading. If @lock is already locked for
* writing by another thread or if another thread is already waiting to
@@ -1032,6 +1037,8 @@ g_static_rw_lock_reader_lock (GStaticRWLock* lock)
* @lock for reading and returns %TRUE. This lock has to be unlocked by
* g_static_rw_lock_reader_unlock().
*
+ * Returns: %TRUE, if @lock could be locked for reading.
+ *
* Deprectated: 2.32: Use g_rw_lock_reader_trylock() instead
*/
gboolean
@@ -1113,13 +1120,14 @@ g_static_rw_lock_writer_lock (GStaticRWLock* lock)
/**
* g_static_rw_lock_writer_trylock:
* @lock: a #GStaticRWLock to lock for writing.
- * @Returns: %TRUE, if @lock could be locked for writing.
*
* Tries to lock @lock for writing. If @lock is already locked (for
* either reading or writing) by another thread, it immediately returns
* %FALSE. Otherwise it locks @lock for writing and returns %TRUE. This
* lock has to be unlocked by g_static_rw_lock_writer_unlock().
*
+ * Returns: %TRUE, if @lock could be locked for writing.
+ *
* Deprectated: 2.32: Use g_rw_lock_writer_trylock() instead
*/
gboolean
@@ -1461,7 +1469,7 @@ g_static_private_free (GStaticPrivate *private_key)
*
* Returns: a newly allocated #GMutex. Use g_mutex_free() to free
*
- * Deprecated:3.32:GMutex can now be statically allocated, or embedded
+ * Deprecated: 2.32: GMutex can now be statically allocated, or embedded
* in structures and initialised with g_mutex_init().
*/
GMutex *
@@ -1484,7 +1492,7 @@ g_mutex_new (void)
* Calling g_mutex_free() on a locked mutex may result
* in undefined behaviour.
*
- * Deprecated:3.32:GMutex can now be statically allocated, or embedded
+ * Deprecated: 2.32: GMutex can now be statically allocated, or embedded
* in structures and initialised with g_mutex_init().
*/
void
@@ -1503,7 +1511,7 @@ g_mutex_free (GMutex *mutex)
*
* Returns: a newly allocated #GCond. Free with g_cond_free()
*
- * Deprecated:3.32:GCond can now be statically allocated, or embedded
+ * Deprecated: 2.32: GCond can now be statically allocated, or embedded
* in structures and initialised with g_cond_init().
*/
GCond *
@@ -1526,7 +1534,7 @@ g_cond_new (void)
* Calling g_cond_free() for a #GCond on which threads are
* blocking leads to undefined behaviour.
*
- * Deprecated:3.32:GCond can now be statically allocated, or embedded
+ * Deprecated: 2.32: GCond can now be statically allocated, or embedded
* in structures and initialised with g_cond_init().
*/
void
diff --git a/glib/glib/deprecated/gthread.h b/glib/glib/deprecated/gthread.h
index 1866540..462bb8f 100644
--- a/glib/glib/deprecated/gthread.h
+++ b/glib/glib/deprecated/gthread.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_DEPRECATED_THREAD_H__
+#define __G_DEPRECATED_THREAD_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DEPRECATED_THREAD_H__
-#define __G_DEPRECATED_THREAD_H__
-
#include <glib/gthread.h>
G_BEGIN_DECLS
@@ -143,8 +143,9 @@ typedef struct
GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_init)
void g_static_mutex_init (GStaticMutex *mutex);
-GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_free)
+GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_clear)
void g_static_mutex_free (GStaticMutex *mutex);
+GLIB_DEPRECATED_IN_2_32_FOR(GMutex)
GMutex *g_static_mutex_get_mutex_impl (GStaticMutex *mutex);
typedef struct _GStaticRecMutex GStaticRecMutex;
diff --git a/glib/glib/docs.c b/glib/glib/docs.c
index a3d862c..c7ae282 100644
--- a/glib/glib/docs.c
+++ b/glib/glib/docs.c
@@ -1895,7 +1895,11 @@
* the compiler is <command>gcc</command>. Declaring a function as const
* enables better optimization of calls to the function. A const function
* doesn't examine any values except its parameters, and has no effects
- * except its return value. See the GNU C documentation for details.
+ * except its return value.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* <note><para>
* A function that has pointer arguments and examines the data pointed to
@@ -1912,8 +1916,11 @@
* compiler is <command>gcc</command>. Declaring a function as pure enables
* better optimization of calls to the function. A pure function has no
* effects except its return value and the return value depends only on
- * the parameters and/or global variables. See the GNU C documentation
- * for details.
+ * the parameters and/or global variables.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*/
/**
@@ -1924,7 +1931,11 @@
* better optimization of the function. A function can have the malloc
* attribute if it returns a pointer which is guaranteed to not alias with
* any other pointer when the function returns (in practice, this means newly
- * allocated memory). See the GNU C documentation for details.
+ * allocated memory).
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.6
*/
@@ -1937,7 +1948,11 @@
* if the compiler is a new enough <command>gcc</command>. This attribute
* tells the compiler that the function returns a pointer to memory of a
* size that is specified by the @x<!-- -->th function parameter.
- * See the GNU C documentation for details.
+ *
+ * Place the attribute after the function declaration, just before the
+ * semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.18
*/
@@ -1951,7 +1966,11 @@
* if the compiler is a new enough <command>gcc</command>. This attribute
* tells the compiler that the function returns a pointer to memory of a
* size that is specified by the product of two function parameters.
- * See the GNU C documentation for details.
+ *
+ * Place the attribute after the function declaration, just before the
+ * semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.18
*/
@@ -1964,7 +1983,10 @@
* variables and functions as deprecated. When called with the
* <option>-Wdeprecated-declarations</option> option, the compiler will
* generate warnings when deprecated interfaces are used.
- * See the GNU C documentation for details.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.2
*/
@@ -1977,7 +1999,10 @@
* Like %G_GNUC_DEPRECATED, but names the intended replacement for the
* deprecated symbol if the version of <command>gcc</command> in use is
* new enough to support custom deprecation messages.
- * See the GNU C documentation for details.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Note that if @f is a macro, it will be expanded in the warning message.
* You can enclose it in quotes to prevent this. (The quotes will show up
@@ -2032,6 +2057,7 @@
/**
* G_DEPRECATED_FOR:
+ * @f: the name of the function that this function was deprecated for
*
* This macro is similar to %G_GNUC_DEPRECATED_FOR, and can be used to mark
* functions declarations as deprecated. Unlike %G_GNUC_DEPRECATED_FOR, it is
@@ -2043,6 +2069,8 @@
/**
* G_UNAVAILABLE:
+ * @maj: the major version that introduced the symbol
+ * @min: the minor version that introduced the symbol
*
* This macro can be used to mark a function declaration as unavailable.
* It must be placed before the function declaration. Use of a function
@@ -2065,8 +2093,11 @@
* Expands to the GNU C <literal>noreturn</literal> function attribute
* if the compiler is <command>gcc</command>. It is used for declaring
* functions which never return. It enables optimization of the function,
- * and avoids possible compiler warnings. See the GNU C documentation for
- * details.
+ * and avoids possible compiler warnings.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*/
/**
@@ -2074,8 +2105,19 @@
*
* Expands to the GNU C <literal>unused</literal> function attribute if
* the compiler is <command>gcc</command>. It is used for declaring
- * functions which may never be used. It avoids possible compiler warnings.
- * See the GNU C documentation for details.
+ * functions and arguments which may never be used. It avoids possible compiler
+ * warnings.
+ *
+ * For functions, place the attribute after the declaration, just before the
+ * semicolon. For arguments, place the attribute at the beginning of the
+ * argument declaration.
+ *
+ * |[
+ * void my_unused_function (G_GNUC_UNUSED gint unused_argument,
+ * gint other_argument) G_GNUC_UNUSED;
+ * ]|
+ *
+ * See the GNU C documentation for more details.
*/
/**
@@ -2088,7 +2130,12 @@
* if the compiler is <command>gcc</command>. This is used for declaring
* functions which take a variable number of arguments, with the same
* syntax as printf(). It allows the compiler to type-check the arguments
- * passed to the function. See the GNU C documentation for details.
+ * passed to the function.
+ *
+ * Place the attribute after the function declaration, just before the
+ * semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* |[
* gint g_snprintf (gchar *string,
@@ -2122,7 +2169,12 @@
* so that the result can be passed to a printf(), scanf(), strftime()
* or strfmon() style function (with the remaining arguments to the
* format function the same as they would have been for the unmodified
- * string). See the GNU C documentation for details.
+ * string).
+ *
+ * Place the attribute after the function declaration, just before the
+ * semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* |[
* gchar *g_dgettext (gchar *domain_name, gchar *msgid) G_GNUC_FORMAT (2);
@@ -2136,7 +2188,11 @@
* if the compiler is <command>gcc</command>, or "" if it isn't. This
* function attribute only applies to variadic functions and instructs
* the compiler to check that the argument list is terminated with an
- * explicit %NULL. See the GNU C documentation for details.
+ * explicit %NULL.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.8
*/
@@ -2147,7 +2203,11 @@
* Expands to the GNU C <literal>warn_unused_result</literal> function
* attribute if the compiler is <command>gcc</command>, or "" if it isn't.
* This function attribute makes the compiler emit a warning if the result
- * of a function call is ignored. See the GNU C documentation for details.
+ * of a function call is ignored.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*
* Since: 2.10
*/
@@ -2179,7 +2239,10 @@
* attribute if the compiler is <command>gcc</command>. Functions with this
* attribute will not be instrumented for profiling, when the compiler is
* called with the <option>-finstrument-functions</option> option.
- * See the GNU C documentation for details.
+ *
+ * Place the attribute after the declaration, just before the semicolon.
+ *
+ * See the GNU C documentation for more details.
*/
/**
diff --git a/glib/glib/galloca.h b/glib/glib/galloca.h
index 1ecdf65..8ece1b2 100644
--- a/glib/glib/galloca.h
+++ b/glib/glib/galloca.h
@@ -24,16 +24,18 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_ALLOCA_H__
+#define __G_ALLOCA_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ALLOCA_H__
-#define __G_ALLOCA_H__
-
#include <glib/gtypes.h>
-#ifdef __GNUC__
+#if defined(__BIONIC__) && defined (GLIB_HAVE_ALLOCA_H)
+# include <alloca.h>
+#elif defined(__GNUC__)
/* GCC does the right thing */
# undef alloca
# define alloca(size) __builtin_alloca (size)
diff --git a/glib/glib/garray.c b/glib/glib/garray.c
index 0cb3713..3bfbe9d 100644
--- a/glib/glib/garray.c
+++ b/glib/glib/garray.c
@@ -118,7 +118,6 @@ struct _GRealArray
* @a: a #GArray.
* @t: the type of the elements.
* @i: the index of the element to return.
- * @Returns: the element of the #GArray at the index given by @i.
*
* Returns the element of a #GArray at the given index. The return
* value is cast to the given type.
@@ -132,6 +131,8 @@ struct _GRealArray
* event = &amp;g_array_index (events, EDayViewEvent, 3);
* </programlisting>
* </example>
+ *
+ * Returns: the element of the #GArray at the index given by @i.
**/
#define g_array_elt_len(array,i) ((array)->elt_size * (i))
@@ -154,9 +155,10 @@ static void g_array_maybe_expand (GRealArray *array,
* @clear_: %TRUE if #GArray elements should be automatically cleared
* to 0 when they are allocated.
* @element_size: the size of each element in bytes.
- * @Returns: the new #GArray.
*
* Creates a new #GArray with a reference count of 1.
+ *
+ * Returns: the new #GArray.
**/
GArray*
g_array_new (gboolean zero_terminated,
@@ -176,12 +178,13 @@ g_array_new (gboolean zero_terminated,
* allocation.
* @element_size: size of each element in the array.
* @reserved_size: number of elements preallocated.
- * @Returns: the new #GArray.
*
* Creates a new #GArray with @reserved_size elements preallocated and
* a reference count of 1. This avoids frequent reallocation, if you
* are going to add many elements to the array. Note however that the
* size of the array is still 0.
+ *
+ * Returns: the new #GArray.
**/
GArray* g_array_sized_new (gboolean zero_terminated,
gboolean clear,
@@ -315,8 +318,6 @@ g_array_get_element_size (GArray *array)
* g_array_free:
* @array: a #GArray.
* @free_segment: if %TRUE the actual element data is freed as well.
- * @Returns: the element data if @free_segment is %FALSE, otherwise
- * %NULL. The element data should be freed using g_free().
*
* Frees the memory allocated for the #GArray. If @free_segment is
* %TRUE it frees the memory block holding the elements as well and
@@ -328,6 +329,9 @@ g_array_get_element_size (GArray *array)
*
* <note><para>If array elements contain dynamically-allocated memory,
* they should be freed separately.</para></note>
+ *
+ * Returns: the element data if @free_segment is %FALSE, otherwise
+ * %NULL. The element data should be freed using g_free().
**/
gchar*
g_array_free (GArray *farray,
@@ -388,15 +392,15 @@ array_free (GRealArray *array,
* @array: a #GArray.
* @data: a pointer to the elements to append to the end of the array.
* @len: the number of elements to append.
- * @Returns: the #GArray.
*
* Adds @len elements onto the end of the array.
+ *
+ * Returns: the #GArray.
**/
/**
* g_array_append_val:
* @a: a #GArray.
* @v: the value to append to the #GArray.
- * @Returns: the #GArray.
*
* Adds the value on to the end of the array. The array will grow in
* size automatically if necessary.
@@ -404,6 +408,8 @@ array_free (GRealArray *array,
* <note><para>g_array_append_val() is a macro which uses a reference
* to the value parameter @v. This means that you cannot use it with
* literal values such as "27". You must use variables.</para></note>
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_append_vals (GArray *farray,
@@ -432,19 +438,19 @@ g_array_append_vals (GArray *farray,
* @data: a pointer to the elements to prepend to the start of the
* array.
* @len: the number of elements to prepend.
- * @Returns: the #GArray.
*
* Adds @len elements onto the start of the array.
*
* This operation is slower than g_array_append_vals() since the
* existing elements in the array have to be moved to make space for
* the new elements.
+ *
+ * Returns: the #GArray.
**/
/**
* g_array_prepend_val:
* @a: a #GArray.
* @v: the value to prepend to the #GArray.
- * @Returns: the #GArray.
*
* Adds the value on to the start of the array. The array will grow in
* size automatically if necessary.
@@ -456,6 +462,8 @@ g_array_append_vals (GArray *farray,
* <note><para>g_array_prepend_val() is a macro which uses a reference
* to the value parameter @v. This means that you cannot use it with
* literal values such as "27". You must use variables.</para></note>
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_prepend_vals (GArray *farray,
@@ -486,22 +494,24 @@ g_array_prepend_vals (GArray *farray,
* @index_: the index to place the elements at.
* @data: a pointer to the elements to insert.
* @len: the number of elements to insert.
- * @Returns: the #GArray.
*
* Inserts @len elements into a #GArray at the given index.
+ *
+ * Returns: the #GArray.
**/
/**
* g_array_insert_val:
* @a: a #GArray.
* @i: the index to place the element at.
* @v: the value to insert into the array.
- * @Returns: the #GArray.
*
* Inserts an element into an array at the given index.
*
* <note><para>g_array_insert_val() is a macro which uses a reference
* to the value parameter @v. This means that you cannot use it with
* literal values such as "27". You must use variables.</para></note>
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_insert_vals (GArray *farray,
@@ -532,10 +542,11 @@ g_array_insert_vals (GArray *farray,
* g_array_set_size:
* @array: a #GArray.
* @length: the new size of the #GArray.
- * @Returns: the #GArray.
*
* Sets the size of the array, expanding it if necessary. If the array
* was created with @clear_ set to %TRUE, the new elements are set to 0.
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_set_size (GArray *farray,
@@ -566,10 +577,11 @@ g_array_set_size (GArray *farray,
* g_array_remove_index:
* @array: a #GArray.
* @index_: the index of the element to remove.
- * @Returns: the #GArray.
*
* Removes the element at the given index from a #GArray. The following
* elements are moved down one place.
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_remove_index (GArray *farray,
@@ -603,12 +615,13 @@ g_array_remove_index (GArray *farray,
* g_array_remove_index_fast:
* @array: a @GArray.
* @index_: the index of the element to remove.
- * @Returns: the #GArray.
*
* Removes the element at the given index from a #GArray. The last
* element in the array is used to fill in the space, so this function
* does not preserve the order of the #GArray. But it is faster than
* g_array_remove_index().
+ *
+ * Returns: the #GArray.
**/
GArray*
g_array_remove_index_fast (GArray *farray,
@@ -643,11 +656,12 @@ g_array_remove_index_fast (GArray *farray,
* @array: a @GArray.
* @index_: the index of the first element to remove.
* @length: the number of elements to remove.
- * @Returns: the #GArray.
*
* Removes the given number of elements starting at the given index
* from a #GArray. The following elements are moved to close the gap.
*
+ * Returns: the #GArray.
+ *
* Since: 2.4
**/
GArray*
@@ -848,9 +862,10 @@ struct _GRealPtrArray
* g_ptr_array_index:
* @array: a #GPtrArray.
* @index_: the index of the pointer to return.
- * @Returns: the pointer at the given index.
*
* Returns the pointer at the given index of the pointer array.
+ *
+ * Returns: the pointer at the given index.
**/
static void g_ptr_array_maybe_expand (GRealPtrArray *array,
@@ -858,9 +873,10 @@ static void g_ptr_array_maybe_expand (GRealPtrArray *array,
/**
* g_ptr_array_new:
- * @Returns: the new #GPtrArray.
*
* Creates a new #GPtrArray with a reference count of 1.
+ *
+ * Returns: the new #GPtrArray.
**/
GPtrArray*
g_ptr_array_new (void)
@@ -871,12 +887,13 @@ g_ptr_array_new (void)
/**
* g_ptr_array_sized_new:
* @reserved_size: number of pointers preallocated.
- * @Returns: the new #GPtrArray.
*
* Creates a new #GPtrArray with @reserved_size pointers preallocated
* and a reference count of 1. This avoids frequent reallocation, if
* you are going to add many pointers to the array. Note however that
* the size of the array is still 0.
+ *
+ * Returns: the new #GPtrArray.
**/
GPtrArray*
g_ptr_array_sized_new (guint reserved_size)
@@ -970,15 +987,15 @@ g_ptr_array_set_free_func (GPtrArray *array,
/**
* g_ptr_array_ref:
- * @array: A #GArray.
+ * @array: a #GPtrArray
*
- * Atomically increments the reference count of @array by one. This
- * function is MT-safe and may be called from any thread.
+ * Atomically increments the reference count of @array by one.
+ * This function is thread-safe and may be called from any thread.
*
- * Returns: The passed in #GPtrArray.
+ * Returns: The passed in #GPtrArray
*
* Since: 2.22
- **/
+ */
GPtrArray *
g_ptr_array_ref (GPtrArray *array)
{
@@ -1018,8 +1035,6 @@ g_ptr_array_unref (GPtrArray *array)
* g_ptr_array_free:
* @array: a #GPtrArray.
* @free_seg: if %TRUE the actual pointer array is freed as well.
- * @Returns: the pointer array if @free_seg is %FALSE, otherwise %NULL.
- * The pointer array should be freed using g_free().
*
* Frees the memory allocated for the #GPtrArray. If @free_seg is %TRUE
* it frees the memory block holding the elements as well. Pass %FALSE
@@ -1031,6 +1046,9 @@ g_ptr_array_unref (GPtrArray *array)
* <note><para>If array contents point to dynamically-allocated
* memory, they should be freed separately if @free_seg is %TRUE and no
* #GDestroyNotify function has been set for @array.</para></note>
+ *
+ * Returns: the pointer array if @free_seg is %FALSE, otherwise %NULL.
+ * The pointer array should be freed using g_free().
**/
gpointer*
g_ptr_array_free (GPtrArray *farray,
@@ -1138,12 +1156,13 @@ g_ptr_array_set_size (GPtrArray *farray,
* g_ptr_array_remove_index:
* @array: a #GPtrArray.
* @index_: the index of the pointer to remove.
- * @Returns: the pointer which was removed.
*
* Removes the pointer at the given index from the pointer array. The
* following elements are moved down one place. If @array has a
* non-%NULL #GDestroyNotify function it is called for the removed
* element.
+ *
+ * Returns: the pointer which was removed.
**/
gpointer
g_ptr_array_remove_index (GPtrArray *farray,
@@ -1177,13 +1196,14 @@ g_ptr_array_remove_index (GPtrArray *farray,
* g_ptr_array_remove_index_fast:
* @array: a #GPtrArray.
* @index_: the index of the pointer to remove.
- * @Returns: the pointer which was removed.
*
* Removes the pointer at the given index from the pointer array. The
* last element in the array is used to fill in the space, so this
* function does not preserve the order of the array. But it is faster
* than g_ptr_array_remove_index(). If @array has a non-%NULL
* #GDestroyNotify function it is called for the removed element.
+ *
+ * Returns: the pointer which was removed.
**/
gpointer
g_ptr_array_remove_index_fast (GPtrArray *farray,
@@ -1263,8 +1283,6 @@ g_ptr_array_remove_range (GPtrArray *farray,
* g_ptr_array_remove:
* @array: a #GPtrArray.
* @data: the pointer to remove.
- * @Returns: %TRUE if the pointer is removed. %FALSE if the pointer is
- * not found in the array.
*
* Removes the first occurrence of the given pointer from the pointer
* array. The following elements are moved down one place. If @array
@@ -1273,6 +1291,9 @@ g_ptr_array_remove_range (GPtrArray *farray,
*
* It returns %TRUE if the pointer was removed, or %FALSE if the
* pointer was not found.
+ *
+ * Returns: %TRUE if the pointer is removed. %FALSE if the pointer is
+ * not found in the array.
**/
gboolean
g_ptr_array_remove (GPtrArray *farray,
@@ -1299,7 +1320,6 @@ g_ptr_array_remove (GPtrArray *farray,
* g_ptr_array_remove_fast:
* @array: a #GPtrArray.
* @data: the pointer to remove.
- * @Returns: %TRUE if the pointer was found in the array.
*
* Removes the first occurrence of the given pointer from the pointer
* array. The last element in the array is used to fill in the space,
@@ -1309,6 +1329,8 @@ g_ptr_array_remove (GPtrArray *farray,
*
* It returns %TRUE if the pointer was removed, or %FALSE if the
* pointer was not found.
+ *
+ * Returns: %TRUE if the pointer was found in the array.
**/
gboolean
g_ptr_array_remove_fast (GPtrArray *farray,
@@ -1487,9 +1509,10 @@ g_ptr_array_foreach (GPtrArray *array,
/**
* g_byte_array_new:
- * @Returns: the new #GByteArray.
*
* Creates a new #GByteArray with a reference count of 1.
+ *
+ * Returns: (transfer full): the new #GByteArray.
**/
GByteArray* g_byte_array_new (void)
{
@@ -1498,7 +1521,7 @@ GByteArray* g_byte_array_new (void)
/**
* g_byte_array_new_take:
- * @data: (array length=len): byte data for the array
+ * @data: (transfer full) (array length=len): byte data for the array
* @len: length of @data
*
* Create byte array containing the data. The data will be owned by the array
@@ -1529,12 +1552,13 @@ g_byte_array_new_take (guint8 *data,
/**
* g_byte_array_sized_new:
* @reserved_size: number of bytes preallocated.
- * @Returns: the new #GByteArray.
*
* Creates a new #GByteArray with @reserved_size bytes preallocated.
* This avoids frequent reallocation, if you are going to add many
* bytes to the array. Note however that the size of the array is still
* 0.
+ *
+ * Returns: the new #GByteArray.
**/
GByteArray* g_byte_array_sized_new (guint reserved_size)
{
@@ -1545,13 +1569,14 @@ GByteArray* g_byte_array_sized_new (guint reserved_size)
* g_byte_array_free:
* @array: a #GByteArray.
* @free_segment: if %TRUE the actual byte data is freed as well.
- * @Returns: the element data if @free_segment is %FALSE, otherwise
- * %NULL. The element data should be freed using g_free().
*
* Frees the memory allocated by the #GByteArray. If @free_segment is
* %TRUE it frees the actual byte data. If the reference count of
* @array is greater than one, the #GByteArray wrapper is preserved but
* the size of @array will be set to zero.
+ *
+ * Returns: the element data if @free_segment is %FALSE, otherwise
+ * %NULL. The element data should be freed using g_free().
**/
guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment)
@@ -1627,10 +1652,11 @@ g_byte_array_unref (GByteArray *array)
* @array: a #GByteArray.
* @data: the byte data to be added.
* @len: the number of bytes to add.
- * @Returns: the #GByteArray.
*
* Adds the given bytes to the end of the #GByteArray. The array will
* grow in size automatically if necessary.
+ *
+ * Returns: the #GByteArray.
**/
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
@@ -1646,10 +1672,11 @@ GByteArray* g_byte_array_append (GByteArray *array,
* @array: a #GByteArray.
* @data: the byte data to be added.
* @len: the number of bytes to add.
- * @Returns: the #GByteArray.
*
* Adds the given data to the start of the #GByteArray. The array will
* grow in size automatically if necessary.
+ *
+ * Returns: the #GByteArray.
**/
GByteArray* g_byte_array_prepend (GByteArray *array,
const guint8 *data,
@@ -1664,9 +1691,10 @@ GByteArray* g_byte_array_prepend (GByteArray *array,
* g_byte_array_set_size:
* @array: a #GByteArray.
* @length: the new size of the #GByteArray.
- * @Returns: the #GByteArray.
*
* Sets the size of the #GByteArray, expanding it if necessary.
+ *
+ * Returns: the #GByteArray.
**/
GByteArray* g_byte_array_set_size (GByteArray *array,
guint length)
@@ -1680,10 +1708,11 @@ GByteArray* g_byte_array_set_size (GByteArray *array,
* g_byte_array_remove_index:
* @array: a #GByteArray.
* @index_: the index of the byte to remove.
- * @Returns: the #GByteArray.
*
* Removes the byte at the given index from a #GByteArray. The
* following bytes are moved down one place.
+ *
+ * Returns: the #GByteArray.
**/
GByteArray* g_byte_array_remove_index (GByteArray *array,
guint index_)
@@ -1697,12 +1726,13 @@ GByteArray* g_byte_array_remove_index (GByteArray *array,
* g_byte_array_remove_index_fast:
* @array: a #GByteArray.
* @index_: the index of the byte to remove.
- * @Returns: the #GByteArray.
*
* Removes the byte at the given index from a #GByteArray. The last
* element in the array is used to fill in the space, so this function
* does not preserve the order of the #GByteArray. But it is faster
* than g_byte_array_remove_index().
+ *
+ * Returns: the #GByteArray.
**/
GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
guint index_)
@@ -1717,11 +1747,12 @@ GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
* @array: a @GByteArray.
* @index_: the index of the first byte to remove.
* @length: the number of bytes to remove.
- * @Returns: the #GByteArray.
*
* Removes the given number of bytes starting at the given index from a
* #GByteArray. The following elements are moved to close the gap.
*
+ * Returns: the #GByteArray.
+ *
* Since: 2.4
**/
GByteArray*
diff --git a/glib/glib/garray.h b/glib/glib/garray.h
index eb37b92..f3d7cee 100644
--- a/glib/glib/garray.h
+++ b/glib/glib/garray.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_ARRAY_H__
+#define __G_ARRAY_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ARRAY_H__
-#define __G_ARRAY_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -68,42 +68,58 @@ struct _GPtrArray
#define g_array_insert_val(a,i,v) g_array_insert_vals (a, i, &(v), 1)
#define g_array_index(a,t,i) (((t*) (void *) (a)->data) [(i)])
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_new (gboolean zero_terminated,
gboolean clear_,
guint element_size);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_sized_new (gboolean zero_terminated,
gboolean clear_,
guint element_size,
guint reserved_size);
+GLIB_AVAILABLE_IN_ALL
gchar* g_array_free (GArray *array,
gboolean free_segment);
+GLIB_AVAILABLE_IN_ALL
GArray *g_array_ref (GArray *array);
+GLIB_AVAILABLE_IN_ALL
void g_array_unref (GArray *array);
+GLIB_AVAILABLE_IN_ALL
guint g_array_get_element_size (GArray *array);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_append_vals (GArray *array,
gconstpointer data,
guint len);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_prepend_vals (GArray *array,
gconstpointer data,
guint len);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_insert_vals (GArray *array,
guint index_,
gconstpointer data,
guint len);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_set_size (GArray *array,
guint length);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_remove_index (GArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_remove_index_fast (GArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
GArray* g_array_remove_range (GArray *array,
guint index_,
guint length);
+GLIB_AVAILABLE_IN_ALL
void g_array_sort (GArray *array,
GCompareFunc compare_func);
+GLIB_AVAILABLE_IN_ALL
void g_array_sort_with_data (GArray *array,
GCompareDataFunc compare_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_array_set_clear_func (GArray *array,
GDestroyNotify clear_func);
@@ -112,37 +128,55 @@ void g_array_set_clear_func (GArray *array,
* spot and shortens the array. remove_fast will again distort order.
*/
#define g_ptr_array_index(array,index_) ((array)->pdata)[index_]
+GLIB_AVAILABLE_IN_ALL
GPtrArray* g_ptr_array_new (void);
+GLIB_AVAILABLE_IN_ALL
GPtrArray* g_ptr_array_new_with_free_func (GDestroyNotify element_free_func);
+GLIB_AVAILABLE_IN_ALL
GPtrArray* g_ptr_array_sized_new (guint reserved_size);
+GLIB_AVAILABLE_IN_ALL
GPtrArray* g_ptr_array_new_full (guint reserved_size,
GDestroyNotify element_free_func);
+GLIB_AVAILABLE_IN_ALL
gpointer* g_ptr_array_free (GPtrArray *array,
gboolean free_seg);
+GLIB_AVAILABLE_IN_ALL
GPtrArray* g_ptr_array_ref (GPtrArray *array);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_unref (GPtrArray *array);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_set_free_func (GPtrArray *array,
GDestroyNotify element_free_func);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_set_size (GPtrArray *array,
gint length);
+GLIB_AVAILABLE_IN_ALL
gpointer g_ptr_array_remove_index (GPtrArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
gpointer g_ptr_array_remove_index_fast (GPtrArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
gboolean g_ptr_array_remove (GPtrArray *array,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
gboolean g_ptr_array_remove_fast (GPtrArray *array,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_remove_range (GPtrArray *array,
guint index_,
guint length);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_add (GPtrArray *array,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_sort (GPtrArray *array,
GCompareFunc compare_func);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_sort_with_data (GPtrArray *array,
GCompareDataFunc compare_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_ptr_array_foreach (GPtrArray *array,
GFunc func,
gpointer user_data);
@@ -152,32 +186,47 @@ void g_ptr_array_foreach (GPtrArray *array,
* but type-safe.
*/
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_new (void);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_new_take (guint8 *data,
gsize len);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_sized_new (guint reserved_size);
+GLIB_AVAILABLE_IN_ALL
guint8* g_byte_array_free (GByteArray *array,
gboolean free_segment);
+GLIB_AVAILABLE_IN_ALL
GBytes* g_byte_array_free_to_bytes (GByteArray *array);
+GLIB_AVAILABLE_IN_ALL
GByteArray *g_byte_array_ref (GByteArray *array);
+GLIB_AVAILABLE_IN_ALL
void g_byte_array_unref (GByteArray *array);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
guint len);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_prepend (GByteArray *array,
const guint8 *data,
guint len);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_set_size (GByteArray *array,
guint length);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_remove_index (GByteArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
guint index_);
+GLIB_AVAILABLE_IN_ALL
GByteArray* g_byte_array_remove_range (GByteArray *array,
guint index_,
guint length);
+GLIB_AVAILABLE_IN_ALL
void g_byte_array_sort (GByteArray *array,
GCompareFunc compare_func);
+GLIB_AVAILABLE_IN_ALL
void g_byte_array_sort_with_data (GByteArray *array,
GCompareDataFunc compare_func,
gpointer user_data);
diff --git a/glib/glib/gasyncqueue.h b/glib/glib/gasyncqueue.h
index f0d6d95..3d4b38f 100644
--- a/glib/glib/gasyncqueue.h
+++ b/glib/glib/gasyncqueue.h
@@ -24,24 +24,30 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_ASYNCQUEUE_H__
+#define __G_ASYNCQUEUE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ASYNCQUEUE_H__
-#define __G_ASYNCQUEUE_H__
-
#include <glib/gthread.h>
G_BEGIN_DECLS
typedef struct _GAsyncQueue GAsyncQueue;
+GLIB_AVAILABLE_IN_ALL
GAsyncQueue *g_async_queue_new (void);
+GLIB_AVAILABLE_IN_ALL
GAsyncQueue *g_async_queue_new_full (GDestroyNotify item_free_func);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_lock (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_unlock (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GAsyncQueue *g_async_queue_ref (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_unref (GAsyncQueue *queue);
GLIB_DEPRECATED_FOR(g_async_queue_ref)
@@ -50,31 +56,45 @@ void g_async_queue_ref_unlocked (GAsyncQueue *queue);
GLIB_DEPRECATED_FOR(g_async_queue_unref)
void g_async_queue_unref_and_unlock (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_push (GAsyncQueue *queue,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_push_unlocked (GAsyncQueue *queue,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_push_sorted (GAsyncQueue *queue,
gpointer data,
GCompareDataFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_push_sorted_unlocked (GAsyncQueue *queue,
gpointer data,
GCompareDataFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_pop (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_pop_unlocked (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_try_pop (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_try_pop_unlocked (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_timeout_pop (GAsyncQueue *queue,
guint64 timeout);
+GLIB_AVAILABLE_IN_ALL
gpointer g_async_queue_timeout_pop_unlocked (GAsyncQueue *queue,
guint64 timeout);
+GLIB_AVAILABLE_IN_ALL
gint g_async_queue_length (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gint g_async_queue_length_unlocked (GAsyncQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_sort (GAsyncQueue *queue,
GCompareDataFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_async_queue_sort_unlocked (GAsyncQueue *queue,
GCompareDataFunc func,
gpointer user_data);
diff --git a/glib/glib/gatomic.c b/glib/glib/gatomic.c
index 2df2bcc..eb2fe46 100644
--- a/glib/glib/gatomic.c
+++ b/glib/glib/gatomic.c
@@ -111,7 +111,7 @@
* Since: 2.4
**/
gint
-(g_atomic_int_get) (volatile gint *atomic)
+(g_atomic_int_get) (const volatile gint *atomic)
{
return g_atomic_int_get (atomic);
}
@@ -316,9 +316,9 @@ guint
* Since: 2.4
**/
gpointer
-(g_atomic_pointer_get) (volatile void *atomic)
+(g_atomic_pointer_get) (const volatile void *atomic)
{
- return g_atomic_pointer_get ((volatile gpointer *) atomic);
+ return g_atomic_pointer_get ((const volatile gpointer *) atomic);
}
/**
@@ -467,17 +467,67 @@ gsize
#elif defined (G_PLATFORM_WIN32)
#include <windows.h>
-#if !defined(_M_AMD64) && !defined (_M_IA64) && !defined(_M_X64)
+#if !defined(_M_AMD64) && !defined (_M_IA64) && !defined(_M_X64) && !(defined _MSC_VER && _MSC_VER <= 1200)
#define InterlockedAnd _InterlockedAnd
#define InterlockedOr _InterlockedOr
#define InterlockedXor _InterlockedXor
#endif
+#if !defined (_MSC_VER) || _MSC_VER <= 1200
+#include "gmessages.h"
+/* Inlined versions for older compiler */
+static LONG
+_gInterlockedAnd (volatile guint *atomic,
+ guint val)
+{
+ LONG i, j;
+
+ j = *atomic;
+ do {
+ i = j;
+ j = InterlockedCompareExchange(atomic, i & val, i);
+ } while (i != j);
+
+ return j;
+}
+#define InterlockedAnd(a,b) _gInterlockedAnd(a,b)
+static LONG
+_gInterlockedOr (volatile guint *atomic,
+ guint val)
+{
+ LONG i, j;
+
+ j = *atomic;
+ do {
+ i = j;
+ j = InterlockedCompareExchange(atomic, i | val, i);
+ } while (i != j);
+
+ return j;
+}
+#define InterlockedOr(a,b) _gInterlockedOr(a,b)
+static LONG
+_gInterlockedXor (volatile guint *atomic,
+ guint val)
+{
+ LONG i, j;
+
+ j = *atomic;
+ do {
+ i = j;
+ j = InterlockedCompareExchange(atomic, i ^ val, i);
+ } while (i != j);
+
+ return j;
+}
+#define InterlockedXor(a,b) _gInterlockedXor(a,b)
+#endif
+
/*
* http://msdn.microsoft.com/en-us/library/ms684122(v=vs.85).aspx
*/
gint
-(g_atomic_int_get) (volatile gint *atomic)
+(g_atomic_int_get) (const volatile gint *atomic)
{
MemoryBarrier ();
return *atomic;
@@ -541,9 +591,9 @@ guint
gpointer
-(g_atomic_pointer_get) (volatile void *atomic)
+(g_atomic_pointer_get) (const volatile void *atomic)
{
- volatile gpointer *ptr = atomic;
+ const volatile gpointer *ptr = atomic;
MemoryBarrier ();
return *ptr;
@@ -632,7 +682,7 @@ gsize
static pthread_mutex_t g_atomic_lock = PTHREAD_MUTEX_INITIALIZER;
gint
-(g_atomic_int_get) (volatile gint *atomic)
+(g_atomic_int_get) (const volatile gint *atomic)
{
gint value;
@@ -747,9 +797,9 @@ guint
gpointer
-(g_atomic_pointer_get) (volatile void *atomic)
+(g_atomic_pointer_get) (const volatile void *atomic)
{
- volatile gpointer *ptr = atomic;
+ const volatile gpointer *ptr = atomic;
gpointer value;
pthread_mutex_lock (&g_atomic_lock);
diff --git a/glib/glib/gatomic.h b/glib/glib/gatomic.h
index 8b52e0b..e7fd1f2 100644
--- a/glib/glib/gatomic.h
+++ b/glib/glib/gatomic.h
@@ -19,25 +19,31 @@
* Author: Ryan Lortie <desrt@desrt.ca>
*/
+#ifndef __G_ATOMIC_H__
+#define __G_ATOMIC_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ATOMIC_H__
-#define __G_ATOMIC_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
-gint g_atomic_int_get (volatile gint *atomic);
+GLIB_AVAILABLE_IN_ALL
+gint g_atomic_int_get (const volatile gint *atomic);
+GLIB_AVAILABLE_IN_ALL
void g_atomic_int_set (volatile gint *atomic,
gint newval);
+GLIB_AVAILABLE_IN_ALL
void g_atomic_int_inc (volatile gint *atomic);
+GLIB_AVAILABLE_IN_ALL
gboolean g_atomic_int_dec_and_test (volatile gint *atomic);
+GLIB_AVAILABLE_IN_ALL
gboolean g_atomic_int_compare_and_exchange (volatile gint *atomic,
gint oldval,
gint newval);
+GLIB_AVAILABLE_IN_ALL
gint g_atomic_int_add (volatile gint *atomic,
gint val);
GLIB_AVAILABLE_IN_2_30
@@ -46,15 +52,20 @@ guint g_atomic_int_and (volatile guint *a
GLIB_AVAILABLE_IN_2_30
guint g_atomic_int_or (volatile guint *atomic,
guint val);
+GLIB_AVAILABLE_IN_ALL
guint g_atomic_int_xor (volatile guint *atomic,
guint val);
-gpointer g_atomic_pointer_get (volatile void *atomic);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_atomic_pointer_get (const volatile void *atomic);
+GLIB_AVAILABLE_IN_ALL
void g_atomic_pointer_set (volatile void *atomic,
gpointer newval);
+GLIB_AVAILABLE_IN_ALL
gboolean g_atomic_pointer_compare_and_exchange (volatile void *atomic,
gpointer oldval,
gpointer newval);
+GLIB_AVAILABLE_IN_ALL
gssize g_atomic_pointer_add (volatile void *atomic,
gssize val);
GLIB_AVAILABLE_IN_2_30
@@ -63,6 +74,7 @@ gsize g_atomic_pointer_and (volatile void *a
GLIB_AVAILABLE_IN_2_30
gsize g_atomic_pointer_or (volatile void *atomic,
gsize val);
+GLIB_AVAILABLE_IN_ALL
gsize g_atomic_pointer_xor (volatile void *atomic,
gsize val);
diff --git a/glib/glib/gbacktrace.c b/glib/glib/gbacktrace.c
index 957c482..4d19d6f 100644
--- a/glib/glib/gbacktrace.c
+++ b/glib/glib/gbacktrace.c
@@ -89,7 +89,8 @@
static void stack_trace (char **args);
#endif
-extern volatile gboolean glib_on_error_halt;
+/* People want to hit this from their debugger... */
+GLIB_AVAILABLE_IN_ALL volatile gboolean glib_on_error_halt;
volatile gboolean glib_on_error_halt = TRUE;
/**
diff --git a/glib/glib/gbacktrace.h b/glib/glib/gbacktrace.h
index f0a6eab..47dd2ee 100644
--- a/glib/glib/gbacktrace.h
+++ b/glib/glib/gbacktrace.h
@@ -24,19 +24,21 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_BACKTRACE_H__
+#define __G_BACKTRACE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_BACKTRACE_H__
-#define __G_BACKTRACE_H__
-
#include <glib/gtypes.h>
#include <signal.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
void g_on_error_query (const gchar *prg_name);
+GLIB_AVAILABLE_IN_ALL
void g_on_error_stack_trace (const gchar *prg_name);
/**
diff --git a/glib/glib/gbase64.c b/glib/glib/gbase64.c
index d0ab0ea..cc6cbfc 100644
--- a/glib/glib/gbase64.c
+++ b/glib/glib/gbase64.c
@@ -344,8 +344,18 @@ g_base64_decode_step (const gchar *in,
/* convert 4 base64 bytes to 3 normal bytes */
v=*save;
i=*state;
- inptr = (const guchar *)in;
+
last[0] = last[1] = 0;
+
+ /* we use the sign in the state to determine if we got a padding character
+ in the previous sequence */
+ if (i < 0)
+ {
+ i = -i;
+ last[0] = '=';
+ }
+
+ inptr = (const guchar *)in;
while (inptr < inend)
{
c = *inptr++;
@@ -369,7 +379,7 @@ g_base64_decode_step (const gchar *in,
}
*save = v;
- *state = i;
+ *state = last[0] == '=' ? -i : i;
return outptr - out;
}
@@ -379,7 +389,9 @@ g_base64_decode_step (const gchar *in,
* @text: zero-terminated string with base64 text to decode
* @out_len: (out): The length of the decoded data is written here
*
- * Decode a sequence of Base-64 encoded text into binary data
+ * Decode a sequence of Base-64 encoded text into binary data. Note
+ * that the returned binary data is not necessarily zero-terminated,
+ * so it should not be used as a character string.
*
* Return value: (transfer full) (array length=out_len) (element-type guint8):
* newly allocated buffer containing the binary data
diff --git a/glib/glib/gbase64.h b/glib/glib/gbase64.h
index 88ce6d8..b53fca5 100644
--- a/glib/glib/gbase64.h
+++ b/glib/glib/gbase64.h
@@ -18,36 +18,42 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_BASE64_H__
+#define __G_BASE64_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_BASE64_H__
-#define __G_BASE64_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
gsize g_base64_encode_step (const guchar *in,
gsize len,
gboolean break_lines,
gchar *out,
gint *state,
gint *save);
+GLIB_AVAILABLE_IN_ALL
gsize g_base64_encode_close (gboolean break_lines,
gchar *out,
gint *state,
gint *save);
+GLIB_AVAILABLE_IN_ALL
gchar* g_base64_encode (const guchar *data,
gsize len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gsize g_base64_decode_step (const gchar *in,
gsize len,
guchar *out,
gint *state,
guint *save);
+GLIB_AVAILABLE_IN_ALL
guchar *g_base64_decode (const gchar *text,
gsize *out_len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
guchar *g_base64_decode_inplace (gchar *text,
gsize *out_len);
diff --git a/glib/glib/gbitlock.c b/glib/glib/gbitlock.c
index 7b879be..e183d39 100644
--- a/glib/glib/gbitlock.c
+++ b/glib/glib/gbitlock.c
@@ -20,6 +20,8 @@
* Author: Ryan Lortie <desrt@desrt.ca>
*/
+#include "config.h"
+
#include "gbitlock.h"
#include <glib/gmessages.h>
@@ -29,10 +31,9 @@
#include <glib/gslice.h>
#include "gthreadprivate.h"
-#include "config.h"
-#undef HAVE_FUTEX
#ifdef G_BIT_LOCK_FORCE_FUTEX_EMULATION
+#undef HAVE_FUTEX
#endif
#ifndef HAVE_FUTEX
diff --git a/glib/glib/gbitlock.h b/glib/glib/gbitlock.h
index 641ee69..7485dfa 100644
--- a/glib/glib/gbitlock.h
+++ b/glib/glib/gbitlock.h
@@ -31,17 +31,23 @@
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
void g_bit_lock (volatile gint *address,
gint lock_bit);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bit_trylock (volatile gint *address,
gint lock_bit);
+GLIB_AVAILABLE_IN_ALL
void g_bit_unlock (volatile gint *address,
gint lock_bit);
+GLIB_AVAILABLE_IN_ALL
void g_pointer_bit_lock (volatile void *address,
gint lock_bit);
+GLIB_AVAILABLE_IN_ALL
gboolean g_pointer_bit_trylock (volatile void *address,
gint lock_bit);
+GLIB_AVAILABLE_IN_ALL
void g_pointer_bit_unlock (volatile void *address,
gint lock_bit);
diff --git a/glib/glib/gbookmarkfile.c b/glib/glib/gbookmarkfile.c
index edf196b..569d438 100644
--- a/glib/glib/gbookmarkfile.c
+++ b/glib/glib/gbookmarkfile.c
@@ -1585,15 +1585,7 @@ timestamp_from_iso8601 (const gchar *iso_date)
return (time_t) stamp.tv_sec;
}
-
-
-GQuark
-g_bookmark_file_error_quark (void)
-{
- return g_quark_from_static_string ("g-bookmark-file-error-quark");
-}
-
-
+G_DEFINE_QUARK (g-bookmark-file-error-quark, g_bookmark_file_error)
/********************
* Public API *
@@ -1897,7 +1889,7 @@ g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark,
/**
* g_bookmark_file_to_data:
* @bookmark: a #GBookmarkFile
- * @length: (allow-none): return location for the length of the returned string, or %NULL
+ * @length: (allow-none) (out): return location for the length of the returned string, or %NULL
* @error: return location for a #GError, or %NULL
*
* This function outputs @bookmark as a string.
@@ -2087,13 +2079,13 @@ g_bookmark_file_has_item (GBookmarkFile *bookmark,
/**
* g_bookmark_file_get_uris:
* @bookmark: a #GBookmarkFile
- * @length: (allow-none): return location for the number of returned URIs, or %NULL
+ * @length: (allow-none) (out): return location for the number of returned URIs, or %NULL
*
* Returns all URIs of the bookmarks in the bookmark file @bookmark.
* The array of returned URIs will be %NULL-terminated, so @length may
* optionally be %NULL.
*
- * Return value: a newly allocated %NULL-terminated array of strings.
+ * Return value: (array length=length) (transfer full): a newly allocated %NULL-terminated array of strings.
* Use g_strfreev() to free it.
*
* Since: 2.12
@@ -2922,7 +2914,7 @@ g_bookmark_file_set_groups (GBookmarkFile *bookmark,
* g_bookmark_file_get_groups:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @length: (allow-none): return location for the length of the returned string, or %NULL
+ * @length: (allow-none) (out): return location for the length of the returned string, or %NULL
* @error: return location for a #GError, or %NULL
*
* Retrieves the list of group names of the bookmark for @uri.
@@ -2933,7 +2925,7 @@ g_bookmark_file_set_groups (GBookmarkFile *bookmark,
* The returned array is %NULL terminated, so @length may optionally
* be %NULL.
*
- * Return value: a newly allocated %NULL-terminated array of group names.
+ * Return value: (array length=length) (transfer full): a newly allocated %NULL-terminated array of group names.
* Use g_strfreev() to free it.
*
* Since: 2.12
@@ -3234,6 +3226,9 @@ g_bookmark_file_set_app_info (GBookmarkFile *bookmark,
}
}
+ if (!item->metadata)
+ item->metadata = bookmark_metadata_new ();
+
ai = bookmark_item_lookup_app_info (item, name);
if (!ai)
{
@@ -3344,9 +3339,9 @@ expand_exec_line (const gchar *exec_fmt,
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
* @name: an application's name
- * @exec: (allow-none): location for the command line of the application, or %NULL
- * @count: (allow-none): return location for the registration count, or %NULL
- * @stamp: (allow-none): return location for the last registration time, or %NULL
+ * @exec: (allow-none) (out): return location for the command line of the application, or %NULL
+ * @count: (allow-none) (out): return location for the registration count, or %NULL
+ * @stamp: (allow-none) (out): return location for the last registration time, or %NULL
* @error: return location for a #GError, or %NULL
*
* Gets the registration informations of @app_name for the bookmark for
@@ -3444,7 +3439,7 @@ g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
* g_bookmark_file_get_applications:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @length: (allow-none): return location of the length of the returned list, or %NULL
+ * @length: (allow-none) (out): return location of the length of the returned list, or %NULL
* @error: return location for a #GError, or %NULL
*
* Retrieves the names of the applications that have registered the
@@ -3453,7 +3448,7 @@ g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
* In the event the URI cannot be found, %NULL is returned and
* @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
*
- * Return value: a newly allocated %NULL-terminated array of strings.
+ * Return value: (array length=length) (transfer full): a newly allocated %NULL-terminated array of strings.
* Use g_strfreev() to free it.
*
* Since: 2.12
@@ -3664,8 +3659,8 @@ g_bookmark_file_set_icon (GBookmarkFile *bookmark,
* g_bookmark_file_get_icon:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @href: (allow-none): return location for the icon's location or %NULL
- * @mime_type: (allow-none): return location for the icon's MIME type or %NULL
+ * @href: (allow-none) (out): return location for the icon's location or %NULL
+ * @mime_type: (allow-none) (out): return location for the icon's MIME type or %NULL
* @error: return location for a #GError or %NULL
*
* Gets the icon of the bookmark for @uri.
diff --git a/glib/glib/gbookmarkfile.h b/glib/glib/gbookmarkfile.h
index 6b2ee6f..4d94efe 100644
--- a/glib/glib/gbookmarkfile.h
+++ b/glib/glib/gbookmarkfile.h
@@ -17,13 +17,13 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
*/
+#ifndef __G_BOOKMARK_FILE_H__
+#define __G_BOOKMARK_FILE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_BOOKMARK_FILE_H__
-#define __G_BOOKMARK_FILE_H__
-
#include <glib/gerror.h>
#include <time.h>
@@ -66,6 +66,7 @@ typedef enum
G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND
} GBookmarkFileError;
+GLIB_AVAILABLE_IN_ALL
GQuark g_bookmark_file_error_quark (void);
/**
@@ -76,72 +77,93 @@ GQuark g_bookmark_file_error_quark (void);
*/
typedef struct _GBookmarkFile GBookmarkFile;
+GLIB_AVAILABLE_IN_ALL
GBookmarkFile *g_bookmark_file_new (void);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_free (GBookmarkFile *bookmark);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_load_from_file (GBookmarkFile *bookmark,
const gchar *filename,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_load_from_data (GBookmarkFile *bookmark,
const gchar *data,
gsize length,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark,
const gchar *file,
gchar **full_path,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar * g_bookmark_file_to_data (GBookmarkFile *bookmark,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_to_file (GBookmarkFile *bookmark,
const gchar *filename,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_title (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *title);
+GLIB_AVAILABLE_IN_ALL
gchar * g_bookmark_file_get_title (GBookmarkFile *bookmark,
const gchar *uri,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_description (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *description);
+GLIB_AVAILABLE_IN_ALL
gchar * g_bookmark_file_get_description (GBookmarkFile *bookmark,
const gchar *uri,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_mime_type (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *mime_type);
+GLIB_AVAILABLE_IN_ALL
gchar * g_bookmark_file_get_mime_type (GBookmarkFile *bookmark,
const gchar *uri,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_groups (GBookmarkFile *bookmark,
const gchar *uri,
const gchar **groups,
gsize length);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_add_group (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *group);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_has_group (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *group,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_bookmark_file_get_groups (GBookmarkFile *bookmark,
const gchar *uri,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_add_application (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *name,
const gchar *exec);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_has_application (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *name,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_bookmark_file_get_applications (GBookmarkFile *bookmark,
const gchar *uri,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_set_app_info (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *name,
@@ -149,6 +171,7 @@ gboolean g_bookmark_file_set_app_info (GBookmarkFile *bookmark,
gint count,
time_t stamp,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *name,
@@ -156,55 +179,72 @@ gboolean g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
guint *count,
time_t *stamp,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_is_private (GBookmarkFile *bookmark,
const gchar *uri,
gboolean is_private);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_get_is_private (GBookmarkFile *bookmark,
const gchar *uri,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_icon (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *href,
const gchar *mime_type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_get_icon (GBookmarkFile *bookmark,
const gchar *uri,
gchar **href,
gchar **mime_type,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_added (GBookmarkFile *bookmark,
const gchar *uri,
time_t added);
+GLIB_AVAILABLE_IN_ALL
time_t g_bookmark_file_get_added (GBookmarkFile *bookmark,
const gchar *uri,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_modified (GBookmarkFile *bookmark,
const gchar *uri,
time_t modified);
+GLIB_AVAILABLE_IN_ALL
time_t g_bookmark_file_get_modified (GBookmarkFile *bookmark,
const gchar *uri,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_bookmark_file_set_visited (GBookmarkFile *bookmark,
const gchar *uri,
time_t visited);
+GLIB_AVAILABLE_IN_ALL
time_t g_bookmark_file_get_visited (GBookmarkFile *bookmark,
const gchar *uri,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_has_item (GBookmarkFile *bookmark,
const gchar *uri);
+GLIB_AVAILABLE_IN_ALL
gint g_bookmark_file_get_size (GBookmarkFile *bookmark);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_bookmark_file_get_uris (GBookmarkFile *bookmark,
gsize *length) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_remove_group (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *group,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_remove_application (GBookmarkFile *bookmark,
const gchar *uri,
const gchar *name,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_remove_item (GBookmarkFile *bookmark,
const gchar *uri,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bookmark_file_move_item (GBookmarkFile *bookmark,
const gchar *old_uri,
const gchar *new_uri,
diff --git a/glib/glib/gbytes.c b/glib/glib/gbytes.c
index daf5642..4d1f6c6 100644
--- a/glib/glib/gbytes.c
+++ b/glib/glib/gbytes.c
@@ -77,7 +77,8 @@ struct _GBytes
/**
* g_bytes_new:
- * @data: (array length=size): the data to be used for the bytes
+ * @data: (transfer none) (array length=size) (element-type guint8):
+ * the data to be used for the bytes
* @size: the size of @data
*
* Creates a new #GBytes from @data.
@@ -97,7 +98,8 @@ g_bytes_new (gconstpointer data,
/**
* g_bytes_new_take:
- * @data: (transfer full) (array length=size): the data to be used for the bytes
+ * @data: (transfer full) (array length=size) (element-type guint8):
+ the data to be used for the bytes
* @size: the size of @data
*
* Creates a new #GBytes from @data.
@@ -124,8 +126,9 @@ g_bytes_new_take (gpointer data,
/**
- * g_bytes_new_static:
- * @data: (array length=size): the data to be used for the bytes
+ * g_bytes_new_static: (skip)
+ * @data: (transfer full) (array length=size) (element-type guint8):
+ the data to be used for the bytes
* @size: the size of @data
*
* Creates a new #GBytes from static data.
@@ -218,7 +221,8 @@ g_bytes_new_from_bytes (GBytes *bytes,
*
* This function will always return the same pointer for a given #GBytes.
*
- * Returns: (array length=size) (type guint8): a pointer to the byte data
+ * Returns: (transfer none) (array length=size) (type guint8): a pointer to the
+ * byte data
*
* Since: 2.32
*/
@@ -390,7 +394,7 @@ try_steal_and_unref (GBytes *bytes,
{
gpointer result;
- if (bytes->free_func != free_func)
+ if (bytes->free_func != free_func || bytes->data == NULL)
return NULL;
/* Are we the only reference? */
diff --git a/glib/glib/gbytes.h b/glib/glib/gbytes.h
index de3c8f8..c89f6eb 100644
--- a/glib/glib/gbytes.h
+++ b/glib/glib/gbytes.h
@@ -21,55 +21,69 @@
* Stef Walter <stefw@collabora.co.uk>
*/
+#ifndef __G_BYTES_H__
+#define __G_BYTES_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_BYTES_H__
-#define __G_BYTES_H__
-
#include <glib/gtypes.h>
#include <glib/garray.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_new (gconstpointer data,
gsize size);
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_new_take (gpointer data,
gsize size);
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_new_static (gconstpointer data,
gsize size);
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_new_with_free_func (gconstpointer data,
gsize size,
GDestroyNotify free_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_new_from_bytes (GBytes *bytes,
gsize offset,
gsize length);
+GLIB_AVAILABLE_IN_ALL
gconstpointer g_bytes_get_data (GBytes *bytes,
gsize *size);
+GLIB_AVAILABLE_IN_ALL
gsize g_bytes_get_size (GBytes *bytes);
+GLIB_AVAILABLE_IN_ALL
GBytes * g_bytes_ref (GBytes *bytes);
+GLIB_AVAILABLE_IN_ALL
void g_bytes_unref (GBytes *bytes);
+GLIB_AVAILABLE_IN_ALL
gpointer g_bytes_unref_to_data (GBytes *bytes,
gsize *size);
+GLIB_AVAILABLE_IN_ALL
GByteArray * g_bytes_unref_to_array (GBytes *bytes);
+GLIB_AVAILABLE_IN_ALL
guint g_bytes_hash (gconstpointer bytes);
+GLIB_AVAILABLE_IN_ALL
gboolean g_bytes_equal (gconstpointer bytes1,
gconstpointer bytes2);
+GLIB_AVAILABLE_IN_ALL
gint g_bytes_compare (gconstpointer bytes1,
gconstpointer bytes2);
diff --git a/glib/glib/gcharset.c b/glib/glib/gcharset.c
index 4f52ab4..bb8c044 100644
--- a/glib/glib/gcharset.c
+++ b/glib/glib/gcharset.c
@@ -20,7 +20,7 @@
#include "config.h"
-#include "gcharset.h"
+#include "gcharsetprivate.h"
#include "garray.h"
#include "genviron.h"
@@ -87,7 +87,7 @@ get_alias_hash (void)
/* As an abuse of the alias table, the following routines gets
* the charsets that are aliases for the canonical name.
*/
-G_GNUC_INTERNAL const char **
+const char **
_g_charset_get_aliases (const char *canonical_name)
{
GHashTable *alias_hash = get_alias_hash ();
@@ -471,15 +471,15 @@ guess_category_value (const gchar *category_name)
{
const gchar *retval;
- /* The highest priority value is the `LANGUAGE' environment
+ /* The highest priority value is the 'LANGUAGE' environment
variable. This is a GNU extension. */
retval = g_getenv ("LANGUAGE");
if ((retval != NULL) && (retval[0] != '\0'))
return retval;
- /* `LANGUAGE' is not set. So we have to proceed with the POSIX
- methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
- systems this can be done by the `setlocale' function itself. */
+ /* 'LANGUAGE' is not set. So we have to proceed with the POSIX
+ methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. On some
+ systems this can be done by the 'setlocale' function itself. */
/* Setting of LC_ALL overwrites all other. */
retval = g_getenv ("LC_ALL");
diff --git a/glib/glib/gcharset.h b/glib/glib/gcharset.h
index 9b56524..f3b306d 100644
--- a/glib/glib/gcharset.h
+++ b/glib/glib/gcharset.h
@@ -18,21 +18,25 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_CHARSET_H__
+#define __G_CHARSET_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_CHARSET_H__
-#define __G_CHARSET_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
gboolean g_get_charset (const char **charset);
+GLIB_AVAILABLE_IN_ALL
gchar * g_get_codeset (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * const * g_get_language_names (void);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_get_locale_variants (const gchar *locale);
G_END_DECLS
diff --git a/glib/glib/gcharsetprivate.h b/glib/glib/gcharsetprivate.h
new file mode 100644
index 0000000..aea1384
--- /dev/null
+++ b/glib/glib/gcharsetprivate.h
@@ -0,0 +1,32 @@
+/* gunicodeprivate.h
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __G_CHARSET_PRIVATE_H__
+#define __G_CHARSET_PRIVATE_H__
+
+#include "gcharset.h"
+
+G_BEGIN_DECLS
+
+const char ** _g_charset_get_aliases (const char *canonical_name);
+
+G_END_DECLS
+
+#endif
diff --git a/glib/glib/gchecksum.c b/glib/glib/gchecksum.c
index f543d96..4dc8558 100644
--- a/glib/glib/gchecksum.c
+++ b/glib/glib/gchecksum.c
@@ -54,7 +54,7 @@
* Support for checksums has been added in GLib 2.16
**/
-#define IS_VALID_TYPE(type) ((type) >= G_CHECKSUM_MD5 && (type) <= G_CHECKSUM_SHA256)
+#define IS_VALID_TYPE(type) ((type) >= G_CHECKSUM_MD5 && (type) <= G_CHECKSUM_SHA512)
/* The fact that these are lower case characters is part of the ABI */
static const gchar hex_digits[] = "0123456789abcdef";
@@ -102,6 +102,21 @@ typedef struct
guchar digest[SHA256_DIGEST_LEN];
} Sha256sum;
+#define SHA512_BLOCK_LEN 128 /* 1024 bits message block */
+#define SHA512_DIGEST_LEN 64
+
+typedef struct
+{
+ guint64 H[8];
+
+ guint8 block[SHA512_BLOCK_LEN];
+ guint8 block_len;
+
+ guint64 data_len[2];
+
+ guchar digest[SHA512_DIGEST_LEN];
+} Sha512sum;
+
struct _GChecksum
{
GChecksumType type;
@@ -112,6 +127,7 @@ struct _GChecksum
Md5sum md5;
Sha1sum sha1;
Sha256sum sha256;
+ Sha512sum sha512;
} sum;
};
@@ -1069,6 +1085,284 @@ sha256_sum_digest (Sha256sum *sha256,
digest[i] = sha256->digest[i];
}
+/*
+ * SHA-512 Checksum
+ *
+ * Implemented following FIPS-180-2 standard at
+ * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf.
+ * References in the form [§x.y.z] map to sections in that document.
+ *
+ * Author: Eduardo Lima Mitev <elima@igalia.com>
+ */
+
+/* SHA-384 and SHA-512 functions [§4.1.3] */
+#define Ch(x,y,z) ((x & y) ^ (~x & z))
+#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z))
+#define SHR(n,x) (x >> n)
+#define ROTR(n,x) (SHR (n, x) | (x << (64 - n)))
+#define SIGMA0(x) (ROTR (28, x) ^ ROTR (34, x) ^ ROTR (39, x))
+#define SIGMA1(x) (ROTR (14, x) ^ ROTR (18, x) ^ ROTR (41, x))
+#define sigma0(x) (ROTR ( 1, x) ^ ROTR ( 8, x) ^ SHR ( 7, x))
+#define sigma1(x) (ROTR (19, x) ^ ROTR (61, x) ^ SHR ( 6, x))
+
+#define PUT_UINT64(n,b,i) G_STMT_START{ \
+ (b)[(i) ] = (guint8) (n >> 56); \
+ (b)[(i) + 1] = (guint8) (n >> 48); \
+ (b)[(i) + 2] = (guint8) (n >> 40); \
+ (b)[(i) + 3] = (guint8) (n >> 32); \
+ (b)[(i) + 4] = (guint8) (n >> 24); \
+ (b)[(i) + 5] = (guint8) (n >> 16); \
+ (b)[(i) + 6] = (guint8) (n >> 8); \
+ (b)[(i) + 7] = (guint8) (n ); } G_STMT_END
+
+static void
+sha512_sum_init (Sha512sum *sha512)
+{
+ /* Initial Hash Value [§5.3.4] */
+ sha512->H[0] = 0x6a09e667f3bcc908;
+ sha512->H[1] = 0xbb67ae8584caa73b;
+ sha512->H[2] = 0x3c6ef372fe94f82b;
+ sha512->H[3] = 0xa54ff53a5f1d36f1;
+ sha512->H[4] = 0x510e527fade682d1;
+ sha512->H[5] = 0x9b05688c2b3e6c1f;
+ sha512->H[6] = 0x1f83d9abfb41bd6b;
+ sha512->H[7] = 0x5be0cd19137e2179;
+
+ sha512->block_len = 0;
+
+ sha512->data_len[0] = 0;
+ sha512->data_len[1] = 0;
+}
+
+/* SHA-384 and SHA-512 constants [§4.2.3] */
+static const guint64 SHA512_K[80] = {
+ 0x428a2f98d728ae22, 0x7137449123ef65cd,
+ 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
+ 0x3956c25bf348b538, 0x59f111f1b605d019,
+ 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
+ 0xd807aa98a3030242, 0x12835b0145706fbe,
+ 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
+ 0x72be5d74f27b896f, 0x80deb1fe3b1696b1,
+ 0x9bdc06a725c71235, 0xc19bf174cf692694,
+ 0xe49b69c19ef14ad2, 0xefbe4786384f25e3,
+ 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
+ 0x2de92c6f592b0275, 0x4a7484aa6ea6e483,
+ 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
+ 0x983e5152ee66dfab, 0xa831c66d2db43210,
+ 0xb00327c898fb213f, 0xbf597fc7beef0ee4,
+ 0xc6e00bf33da88fc2, 0xd5a79147930aa725,
+ 0x06ca6351e003826f, 0x142929670a0e6e70,
+ 0x27b70a8546d22ffc, 0x2e1b21385c26c926,
+ 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
+ 0x650a73548baf63de, 0x766a0abb3c77b2a8,
+ 0x81c2c92e47edaee6, 0x92722c851482353b,
+ 0xa2bfe8a14cf10364, 0xa81a664bbc423001,
+ 0xc24b8b70d0f89791, 0xc76c51a30654be30,
+ 0xd192e819d6ef5218, 0xd69906245565a910,
+ 0xf40e35855771202a, 0x106aa07032bbd1b8,
+ 0x19a4c116b8d2d0c8, 0x1e376c085141ab53,
+ 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
+ 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb,
+ 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
+ 0x748f82ee5defb2fc, 0x78a5636f43172f60,
+ 0x84c87814a1f0ab72, 0x8cc702081a6439ec,
+ 0x90befffa23631e28, 0xa4506cebde82bde9,
+ 0xbef9a3f7b2c67915, 0xc67178f2e372532b,
+ 0xca273eceea26619c, 0xd186b8c721c0c207,
+ 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
+ 0x06f067aa72176fba, 0x0a637dc5a2c898a6,
+ 0x113f9804bef90dae, 0x1b710b35131c471b,
+ 0x28db77f523047d84, 0x32caab7b40c72493,
+ 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
+ 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a,
+ 0x5fcb6fab3ad6faec, 0x6c44198c4a475817
+};
+
+static void
+sha512_transform (guint64 H[8],
+ guint8 const data[SHA512_BLOCK_LEN])
+{
+ gint i;
+ gint t;
+ guint64 a, b, c, d, e, f, g, h;
+ guint64 M[16];
+ guint64 W[80];
+
+ /* SHA-512 hash computation [§6.3.2] */
+
+ /* prepare the message schedule */
+ for (i = 0; i < 16; i++)
+ {
+ gint p = i * 8;
+
+ M[i] =
+ ((guint64) data[p + 0] << 56) |
+ ((guint64) data[p + 1] << 48) |
+ ((guint64) data[p + 2] << 40) |
+ ((guint64) data[p + 3] << 32) |
+ ((guint64) data[p + 4] << 24) |
+ ((guint64) data[p + 5] << 16) |
+ ((guint64) data[p + 6] << 8) |
+ ((guint64) data[p + 7] );
+ }
+
+ for (t = 0; t < 80; t++)
+ if (t < 16)
+ W[t] = M[t];
+ else
+ W[t] = sigma1 (W[t - 2]) + W[t - 7] + sigma0 (W[t - 15]) + W[t - 16];
+
+ /* initialize the eight working variables */
+ a = H[0];
+ b = H[1];
+ c = H[2];
+ d = H[3];
+ e = H[4];
+ f = H[5];
+ g = H[6];
+ h = H[7];
+
+ for (t = 0; t < 80; t++)
+ {
+ guint64 T1, T2;
+
+ T1 = h + SIGMA1 (e) + Ch (e, f, g) + SHA512_K[t] + W[t];
+ T2 = SIGMA0 (a) + Maj (a, b, c);
+ h = g;
+ g = f;
+ f = e;
+ e = d + T1;
+ d = c;
+ c = b;
+ b = a;
+ a = T1 + T2;
+ }
+
+ /* Compute the intermediate hash value H */
+ H[0] += a;
+ H[1] += b;
+ H[2] += c;
+ H[3] += d;
+ H[4] += e;
+ H[5] += f;
+ H[6] += g;
+ H[7] += h;
+}
+
+static void
+sha512_sum_update (Sha512sum *sha512,
+ const guchar *buffer,
+ gsize length)
+{
+ gsize block_left, offset = 0;
+
+ if (length == 0)
+ return;
+
+ sha512->data_len[0] += length * 8;
+ if (sha512->data_len[0] < length)
+ sha512->data_len[1]++;
+
+ /* try to fill current block */
+ block_left = SHA512_BLOCK_LEN - sha512->block_len;
+ if (block_left > 0)
+ {
+ gsize fill_len;
+
+ fill_len = MIN (block_left, length);
+ memcpy (sha512->block + sha512->block_len, buffer, fill_len);
+ sha512->block_len += fill_len;
+ length -= fill_len;
+ offset += fill_len;
+
+ if (sha512->block_len == SHA512_BLOCK_LEN)
+ {
+ sha512_transform (sha512->H, sha512->block);
+ sha512->block_len = 0;
+ }
+ }
+
+ /* process complete blocks */
+ while (length >= SHA512_BLOCK_LEN)
+ {
+ memcpy (sha512->block, buffer + offset, SHA512_BLOCK_LEN);
+
+ sha512_transform (sha512->H, sha512->block);
+
+ length -= SHA512_BLOCK_LEN;
+ offset += SHA512_BLOCK_LEN;
+ }
+
+ /* keep remaining data for next block */
+ if (length > 0)
+ {
+ memcpy (sha512->block, buffer + offset, length);
+ sha512->block_len = length;
+ }
+}
+
+static void
+sha512_sum_close (Sha512sum *sha512)
+{
+ guint l;
+ gint zeros;
+ guint8 pad[SHA512_BLOCK_LEN * 2] = { 0, };
+ guint pad_len = 0;
+ gint i;
+
+ /* apply padding [§5.1.2] */
+ l = sha512->block_len * 8;
+ zeros = 896 - (l + 1);
+
+ if (zeros < 0)
+ zeros += 128 * 8;
+
+ pad[0] = 0x80; /* 1000 0000 */
+ zeros -= 7;
+ pad_len++;
+
+ memset (pad + pad_len, 0x00, zeros / 8);
+ pad_len += zeros / 8;
+ zeros = zeros % 8;
+
+ /* put message bit length at the end of padding */
+ PUT_UINT64 (sha512->data_len[1], pad, pad_len);
+ pad_len += 8;
+
+ PUT_UINT64 (sha512->data_len[0], pad, pad_len);
+ pad_len += 8;
+
+ /* update checksum with the padded block */
+ sha512_sum_update (sha512, pad, pad_len);
+
+ /* copy resulting 64-bit words into digest */
+ for (i = 0; i < 8; i++)
+ PUT_UINT64 (sha512->H[i], sha512->digest, i * 8);
+}
+
+static gchar *
+sha512_sum_to_string (Sha512sum *sha512)
+{
+ return digest_to_string (sha512->digest, SHA512_DIGEST_LEN);
+}
+
+static void
+sha512_sum_digest (Sha512sum *sha512,
+ guint8 *digest)
+{
+ memcpy (digest, sha512->digest, SHA512_DIGEST_LEN);
+}
+
+#undef Ch
+#undef Maj
+#undef SHR
+#undef ROTR
+#undef SIGMA0
+#undef SIGMA1
+#undef sigma0
+#undef sigma1
+
+#undef PUT_UINT64
/*
* Public API
@@ -1101,6 +1395,9 @@ g_checksum_type_get_length (GChecksumType checksum_type)
case G_CHECKSUM_SHA256:
len = SHA256_DIGEST_LEN;
break;
+ case G_CHECKSUM_SHA512:
+ len = SHA512_DIGEST_LEN;
+ break;
default:
len = -1;
break;
@@ -1127,7 +1424,7 @@ g_checksum_type_get_length (GChecksumType checksum_type)
* will be closed and it won't be possible to call g_checksum_update()
* on it anymore.
*
- * Return value: the newly created #GChecksum, or %NULL.
+ * Return value: (transfer full): the newly created #GChecksum, or %NULL.
* Use g_checksum_free() to free the memory allocated by it.
*
* Since: 2.16
@@ -1175,6 +1472,9 @@ g_checksum_reset (GChecksum *checksum)
case G_CHECKSUM_SHA256:
sha256_sum_init (&(checksum->sum.sha256));
break;
+ case G_CHECKSUM_SHA512:
+ sha512_sum_init (&(checksum->sum.sha512));
+ break;
default:
g_assert_not_reached ();
break;
@@ -1231,7 +1531,7 @@ g_checksum_free (GChecksum *checksum)
/**
* g_checksum_update:
* @checksum: a #GChecksum
- * @data: buffer used to compute the checksum
+ * @data: (array length=length) (element-type guint8): buffer used to compute the checksum
* @length: size of the buffer, or -1 if it is a null-terminated string.
*
* Feeds @data into an existing #GChecksum. The checksum must still be
@@ -1253,7 +1553,7 @@ g_checksum_update (GChecksum *checksum,
if (checksum->digest_str)
{
- g_warning ("The checksum `%s' has been closed and cannot be updated "
+ g_warning ("The checksum '%s' has been closed and cannot be updated "
"anymore.",
checksum->digest_str);
return;
@@ -1270,6 +1570,9 @@ g_checksum_update (GChecksum *checksum,
case G_CHECKSUM_SHA256:
sha256_sum_update (&(checksum->sum.sha256), data, length);
break;
+ case G_CHECKSUM_SHA512:
+ sha512_sum_update (&(checksum->sum.sha512), data, length);
+ break;
default:
g_assert_not_reached ();
break;
@@ -1317,6 +1620,10 @@ g_checksum_get_string (GChecksum *checksum)
sha256_sum_close (&(checksum->sum.sha256));
str = sha256_sum_to_string (&(checksum->sum.sha256));
break;
+ case G_CHECKSUM_SHA512:
+ sha512_sum_close (&(checksum->sum.sha512));
+ str = sha512_sum_to_string (&(checksum->sum.sha512));
+ break;
default:
g_assert_not_reached ();
break;
@@ -1328,7 +1635,7 @@ g_checksum_get_string (GChecksum *checksum)
}
/**
- * g_checksum_get_digest:
+ * g_checksum_get_digest: (skip)
* @checksum: a #GChecksum
* @buffer: output buffer
* @digest_len: an inout parameter. The caller initializes it to the size of @buffer.
@@ -1384,6 +1691,14 @@ g_checksum_get_digest (GChecksum *checksum,
}
sha256_sum_digest (&(checksum->sum.sha256), buffer);
break;
+ case G_CHECKSUM_SHA512:
+ if (checksum_open)
+ {
+ sha512_sum_close (&(checksum->sum.sha512));
+ str = sha512_sum_to_string (&(checksum->sum.sha512));
+ }
+ sha512_sum_digest (&(checksum->sum.sha512), buffer);
+ break;
default:
g_assert_not_reached ();
break;
@@ -1398,7 +1713,7 @@ g_checksum_get_digest (GChecksum *checksum,
/**
* g_compute_checksum_for_data:
* @checksum_type: a #GChecksumType
- * @data: binary blob to compute the digest of
+ * @data: (array length=length) (element-type guint8): binary blob to compute the digest of
* @length: length of @data
*
* Computes the checksum for a binary @data of @length. This is a
@@ -1462,3 +1777,33 @@ g_compute_checksum_for_string (GChecksumType checksum_type,
return g_compute_checksum_for_data (checksum_type, (const guchar *) str, length);
}
+
+/**
+ * g_compute_checksum_for_bytes:
+ * @checksum_type: a #GChecksumType
+ * @data: binary blob to compute the digest of
+ *
+ * Computes the checksum for a binary @data. This is a
+ * convenience wrapper for g_checksum_new(), g_checksum_get_string()
+ * and g_checksum_free().
+ *
+ * The hexadecimal string returned will be in lower case.
+ *
+ * Return value: the digest of the binary data as a string in hexadecimal.
+ * The returned string should be freed with g_free() when done using it.
+ *
+ * Since: 2.34
+ */
+gchar *
+g_compute_checksum_for_bytes (GChecksumType checksum_type,
+ GBytes *data)
+{
+ gconstpointer byte_data;
+ gsize length;
+
+ g_return_val_if_fail (IS_VALID_TYPE (checksum_type), NULL);
+ g_return_val_if_fail (data != NULL, NULL);
+
+ byte_data = g_bytes_get_data (data, &length);
+ return g_compute_checksum_for_data (checksum_type, byte_data, length);
+}
diff --git a/glib/glib/gchecksum.h b/glib/glib/gchecksum.h
index 69fe1f4..ba500a2 100644
--- a/glib/glib/gchecksum.h
+++ b/glib/glib/gchecksum.h
@@ -18,14 +18,15 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_CHECKSUM_H__
+#define __G_CHECKSUM_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_CHECKSUM_H__
-#define __G_CHECKSUM_H__
-
#include <glib/gtypes.h>
+#include <glib/gbytes.h>
G_BEGIN_DECLS
@@ -34,6 +35,7 @@ G_BEGIN_DECLS
* @G_CHECKSUM_MD5: Use the MD5 hashing algorithm
* @G_CHECKSUM_SHA1: Use the SHA-1 hashing algorithm
* @G_CHECKSUM_SHA256: Use the SHA-256 hashing algorithm
+ * @G_CHECKSUM_SHA512: Use the SHA-512 hashing algorithm
*
* The hashing algorithm to be used by #GChecksum when performing the
* digest of some data.
@@ -46,7 +48,8 @@ G_BEGIN_DECLS
typedef enum {
G_CHECKSUM_MD5,
G_CHECKSUM_SHA1,
- G_CHECKSUM_SHA256
+ G_CHECKSUM_SHA256,
+ G_CHECKSUM_SHA512
} GChecksumType;
/**
@@ -60,27 +63,41 @@ typedef enum {
*/
typedef struct _GChecksum GChecksum;
+GLIB_AVAILABLE_IN_ALL
gssize g_checksum_type_get_length (GChecksumType checksum_type);
+GLIB_AVAILABLE_IN_ALL
GChecksum * g_checksum_new (GChecksumType checksum_type);
+GLIB_AVAILABLE_IN_ALL
void g_checksum_reset (GChecksum *checksum);
+GLIB_AVAILABLE_IN_ALL
GChecksum * g_checksum_copy (const GChecksum *checksum);
+GLIB_AVAILABLE_IN_ALL
void g_checksum_free (GChecksum *checksum);
+GLIB_AVAILABLE_IN_ALL
void g_checksum_update (GChecksum *checksum,
const guchar *data,
gssize length);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_checksum_get_string (GChecksum *checksum);
+GLIB_AVAILABLE_IN_ALL
void g_checksum_get_digest (GChecksum *checksum,
guint8 *buffer,
gsize *digest_len);
+GLIB_AVAILABLE_IN_ALL
gchar *g_compute_checksum_for_data (GChecksumType checksum_type,
const guchar *data,
gsize length);
+GLIB_AVAILABLE_IN_ALL
gchar *g_compute_checksum_for_string (GChecksumType checksum_type,
const gchar *str,
gssize length);
+GLIB_AVAILABLE_IN_2_34
+gchar *g_compute_checksum_for_bytes (GChecksumType checksum_type,
+ GBytes *data);
+
G_END_DECLS
#endif /* __G_CHECKSUM_H__ */
diff --git a/glib/glib/gconvert.c b/glib/glib/gconvert.c
index e18f3c1..c28e171 100644
--- a/glib/glib/gconvert.c
+++ b/glib/glib/gconvert.c
@@ -43,7 +43,7 @@
#include "gconvert.h"
-#include "gcharset.h"
+#include "gcharsetprivate.h"
#include "gslist.h"
#include "gstrfuncs.h"
#include "gtestutils.h"
@@ -51,11 +51,6 @@
#include "gunicode.h"
#include "gfileutils.h"
-#ifdef NEED_ICONV_CACHE
-#include "glist.h"
-#include "ghash.h"
-#endif
-
#include "glibintl.h"
#if defined(USE_LIBICONV_GNU) && !defined (_LIBICONV_H)
@@ -194,11 +189,7 @@
*/
#define NUL_TERMINATOR_LENGTH 4
-GQuark
-g_convert_error_quark (void)
-{
- return g_quark_from_static_string ("g_convert_error");
-}
+G_DEFINE_QUARK (g_convert_error, g_convert_error)
static gboolean
try_conversion (const char *to_codeset,
@@ -233,7 +224,7 @@ try_to_aliases (const char **to_aliases,
return FALSE;
}
-G_GNUC_INTERNAL extern const char **
+extern const char **
_g_charset_get_aliases (const char *canonical_name);
/**
@@ -337,296 +328,6 @@ g_iconv_close (GIConv converter)
return iconv_close (cd);
}
-
-#ifdef NEED_ICONV_CACHE
-
-#define ICONV_CACHE_SIZE (16)
-
-struct _iconv_cache_bucket {
- gchar *key;
- guint32 refcount;
- gboolean used;
- GIConv cd;
-};
-
-static GList *iconv_cache_list;
-static GHashTable *iconv_cache;
-static GHashTable *iconv_open_hash;
-static guint iconv_cache_size = 0;
-G_LOCK_DEFINE_STATIC (iconv_cache_lock);
-
-/* caller *must* hold the iconv_cache_lock */
-static void
-iconv_cache_init (void)
-{
- static gboolean initialized = FALSE;
-
- if (initialized)
- return;
-
- iconv_cache_list = NULL;
- iconv_cache = g_hash_table_new (g_str_hash, g_str_equal);
- iconv_open_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- initialized = TRUE;
-}
-
-
-/*
- * iconv_cache_bucket_new:
- * @key: cache key
- * @cd: iconv descriptor
- *
- * Creates a new cache bucket, inserts it into the cache and
- * increments the cache size.
- *
- * This assumes ownership of @key.
- *
- * Returns a pointer to the newly allocated cache bucket.
- **/
-static struct _iconv_cache_bucket *
-iconv_cache_bucket_new (gchar *key, GIConv cd)
-{
- struct _iconv_cache_bucket *bucket;
-
- bucket = g_new (struct _iconv_cache_bucket, 1);
- bucket->key = key;
- bucket->refcount = 1;
- bucket->used = TRUE;
- bucket->cd = cd;
-
- g_hash_table_insert (iconv_cache, bucket->key, bucket);
-
- /* FIXME: if we sorted the list so items with few refcounts were
- first, then we could expire them faster in iconv_cache_expire_unused () */
- iconv_cache_list = g_list_prepend (iconv_cache_list, bucket);
-
- iconv_cache_size++;
-
- return bucket;
-}
-
-
-/*
- * iconv_cache_bucket_expire:
- * @node: cache bucket's node
- * @bucket: cache bucket
- *
- * Expires a single cache bucket @bucket. This should only ever be
- * called on a bucket that currently has no used iconv descriptors
- * open.
- *
- * @node is not a required argument. If @node is not supplied, we
- * search for it ourselves.
- **/
-static void
-iconv_cache_bucket_expire (GList *node, struct _iconv_cache_bucket *bucket)
-{
- g_hash_table_remove (iconv_cache, bucket->key);
-
- if (node == NULL)
- node = g_list_find (iconv_cache_list, bucket);
-
- g_assert (node != NULL);
-
- if (node->prev)
- {
- node->prev->next = node->next;
- if (node->next)
- node->next->prev = node->prev;
- }
- else
- {
- iconv_cache_list = node->next;
- if (node->next)
- node->next->prev = NULL;
- }
-
- g_list_free_1 (node);
-
- g_free (bucket->key);
- g_iconv_close (bucket->cd);
- g_free (bucket);
-
- iconv_cache_size--;
-}
-
-
-/*
- * iconv_cache_expire_unused:
- *
- * Expires as many unused cache buckets as it needs to in order to get
- * the total number of buckets < ICONV_CACHE_SIZE.
- **/
-static void
-iconv_cache_expire_unused (void)
-{
- struct _iconv_cache_bucket *bucket;
- GList *node, *next;
-
- node = iconv_cache_list;
- while (node && iconv_cache_size >= ICONV_CACHE_SIZE)
- {
- next = node->next;
-
- bucket = node->data;
- if (bucket->refcount == 0)
- iconv_cache_bucket_expire (node, bucket);
-
- node = next;
- }
-}
-
-static GIConv
-open_converter (const gchar *to_codeset,
- const gchar *from_codeset,
- GError **error)
-{
- struct _iconv_cache_bucket *bucket;
- gchar *key, *dyn_key, auto_key[80];
- GIConv cd;
- gsize len_from_codeset, len_to_codeset;
-
- /* create our key */
- len_from_codeset = strlen (from_codeset);
- len_to_codeset = strlen (to_codeset);
- if (len_from_codeset + len_to_codeset + 2 < sizeof (auto_key))
- {
- key = auto_key;
- dyn_key = NULL;
- }
- else
- key = dyn_key = g_malloc (len_from_codeset + len_to_codeset + 2);
- memcpy (key, from_codeset, len_from_codeset);
- key[len_from_codeset] = ':';
- strcpy (key + len_from_codeset + 1, to_codeset);
-
- G_LOCK (iconv_cache_lock);
-
- /* make sure the cache has been initialized */
- iconv_cache_init ();
-
- bucket = g_hash_table_lookup (iconv_cache, key);
- if (bucket)
- {
- g_free (dyn_key);
-
- if (bucket->used)
- {
- cd = g_iconv_open (to_codeset, from_codeset);
- if (cd == (GIConv) -1)
- goto error;
- }
- else
- {
- /* Apparently iconv on Solaris <= 7 segfaults if you pass in
- * NULL for anything but inbuf; work around that. (NULL outbuf
- * or NULL *outbuf is allowed by Unix98.)
- */
- gsize inbytes_left = 0;
- gchar *outbuf = NULL;
- gsize outbytes_left = 0;
-
- cd = bucket->cd;
- bucket->used = TRUE;
-
- /* reset the descriptor */
- g_iconv (cd, NULL, &inbytes_left, &outbuf, &outbytes_left);
- }
-
- bucket->refcount++;
- }
- else
- {
- cd = g_iconv_open (to_codeset, from_codeset);
- if (cd == (GIConv) -1)
- {
- g_free (dyn_key);
- goto error;
- }
-
- iconv_cache_expire_unused ();
-
- bucket = iconv_cache_bucket_new (dyn_key ? dyn_key : g_strdup (key), cd);
- }
-
- g_hash_table_insert (iconv_open_hash, cd, bucket->key);
-
- G_UNLOCK (iconv_cache_lock);
-
- return cd;
-
- error:
-
- G_UNLOCK (iconv_cache_lock);
-
- /* Something went wrong. */
- if (error)
- {
- if (errno == EINVAL)
- g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_NO_CONVERSION,
- _("Conversion from character set '%s' to '%s' is not supported"),
- from_codeset, to_codeset);
- else
- g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
- _("Could not open converter from '%s' to '%s'"),
- from_codeset, to_codeset);
- }
-
- return cd;
-}
-
-static int
-close_converter (GIConv converter)
-{
- struct _iconv_cache_bucket *bucket;
- const gchar *key;
- GIConv cd;
-
- cd = converter;
-
- if (cd == (GIConv) -1)
- return 0;
-
- G_LOCK (iconv_cache_lock);
-
- key = g_hash_table_lookup (iconv_open_hash, cd);
- if (key)
- {
- g_hash_table_remove (iconv_open_hash, cd);
-
- bucket = g_hash_table_lookup (iconv_cache, key);
- g_assert (bucket);
-
- bucket->refcount--;
-
- if (cd == bucket->cd)
- bucket->used = FALSE;
- else
- g_iconv_close (cd);
-
- if (!bucket->refcount && iconv_cache_size > ICONV_CACHE_SIZE)
- {
- /* expire this cache bucket */
- iconv_cache_bucket_expire (NULL, bucket);
- }
- }
- else
- {
- G_UNLOCK (iconv_cache_lock);
-
- g_warning ("This iconv context wasn't opened using open_converter");
-
- return g_iconv_close (converter);
- }
-
- G_UNLOCK (iconv_cache_lock);
-
- return 0;
-}
-
-#else /* !NEED_ICONV_CACHE */
-
static GIConv
open_converter (const gchar *to_codeset,
const gchar *from_codeset,
@@ -664,8 +365,6 @@ close_converter (GIConv cd)
return g_iconv_close (cd);
}
-#endif /* NEED_ICONV_CACHE */
-
/**
* g_convert_with_iconv:
* @str: the string to convert
@@ -1500,15 +1199,15 @@ g_filename_to_utf8 (const gchar *opsysstring,
* @utf8string: a UTF-8 encoded string.
* @len: the length of the string, or -1 if the string is
* nul-terminated.
- * @bytes_read: location to store the number of bytes in the
- * input string that were successfully converted, or %NULL.
+ * @bytes_read: (out) (allow-none): location to store the number of bytes in
+ * the input string that were successfully converted, or %NULL.
* Even if the conversion was successful, this may be
* less than @len if there were partial characters
* at the end of the input. If the error
* #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
* stored will the byte offset after the last valid
* input sequence.
- * @bytes_written: the number of bytes stored in the output buffer (not
+ * @bytes_written: (out): the number of bytes stored in the output buffer (not
* including the terminating nul).
* @error: location to store the error occurring, or %NULL to ignore
* errors. Any of the errors in #GConvertError may occur.
@@ -1518,7 +1217,8 @@ g_filename_to_utf8 (const gchar *opsysstring,
* on other platforms, this function indirectly depends on the
* <link linkend="setlocale">current locale</link>.
*
- * Return value: The converted string, or %NULL on an error.
+ * Return value: (array length=bytes_written) (element-type guint8) (transfer full):
+ * The converted string, or %NULL on an error.
**/
gchar*
g_filename_from_utf8 (const gchar *utf8string,
@@ -1838,7 +1538,7 @@ hostname_validate (const char *hostname)
/**
* g_filename_from_uri:
* @uri: a uri describing a filename (escaped, encoded in ASCII).
- * @hostname: (allow-none): Location to store hostname for the URI, or %NULL.
+ * @hostname: (out) (allow-none): Location to store hostname for the URI, or %NULL.
* If there is no hostname in the URI, %NULL will be
* stored in this location.
* @error: location to store the error occurring, or %NULL to ignore
@@ -1847,8 +1547,8 @@ hostname_validate (const char *hostname)
* Converts an escaped ASCII-encoded URI to a local filename in the
* encoding used for filenames.
*
- * Return value: a newly-allocated string holding the resulting
- * filename, or %NULL on an error.
+ * Return value: (type filename): a newly-allocated string holding
+ * the resulting filename, or %NULL on an error.
**/
gchar *
g_filename_from_uri (const gchar *uri,
@@ -2079,9 +1779,9 @@ g_filename_to_uri (const gchar *filename,
* mime type defined in RFC 2483 into individual URIs,
* discarding any comments. The URIs are not validated.
*
- * Returns: a newly allocated %NULL-terminated list of
- * strings holding the individual URIs. The array should
- * be freed with g_strfreev().
+ * Returns: (transfer full): a newly allocated %NULL-terminated list
+ * of strings holding the individual URIs. The array should be freed
+ * with g_strfreev().
*
* Since: 2.6
*/
diff --git a/glib/glib/gconvert.h b/glib/glib/gconvert.h
index 7fd16c8..1945c07 100644
--- a/glib/glib/gconvert.h
+++ b/glib/glib/gconvert.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_CONVERT_H__
+#define __G_CONVERT_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_CONVERT_H__
-#define __G_CONVERT_H__
-
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -65,6 +65,7 @@ typedef enum
* error domains.
*/
#define G_CONVERT_ERROR g_convert_error_quark()
+GLIB_AVAILABLE_IN_ALL
GQuark g_convert_error_quark (void);
/**
@@ -76,16 +77,20 @@ GQuark g_convert_error_quark (void);
*/
typedef struct _GIConv *GIConv;
+GLIB_AVAILABLE_IN_ALL
GIConv g_iconv_open (const gchar *to_codeset,
const gchar *from_codeset);
+GLIB_AVAILABLE_IN_ALL
gsize g_iconv (GIConv converter,
gchar **inbuf,
gsize *inbytes_left,
gchar **outbuf,
gsize *outbytes_left);
+GLIB_AVAILABLE_IN_ALL
gint g_iconv_close (GIConv converter);
+GLIB_AVAILABLE_IN_ALL
gchar* g_convert (const gchar *str,
gssize len,
const gchar *to_codeset,
@@ -93,12 +98,14 @@ gchar* g_convert (const gchar *str,
gsize *bytes_read,
gsize *bytes_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_convert_with_iconv (const gchar *str,
gssize len,
GIConv converter,
gsize *bytes_read,
gsize *bytes_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_convert_with_fallback (const gchar *str,
gssize len,
const gchar *to_codeset,
@@ -111,11 +118,13 @@ gchar* g_convert_with_fallback (const gchar *str,
/* Convert between libc's idea of strings and UTF-8.
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_locale_to_utf8 (const gchar *opsysstring,
gssize len,
gsize *bytes_read,
gsize *bytes_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_locale_from_utf8 (const gchar *utf8string,
gssize len,
gsize *bytes_read,
@@ -125,40 +134,67 @@ gchar* g_locale_from_utf8 (const gchar *utf8string,
/* Convert between the operating system (or C runtime)
* representation of file names and UTF-8.
*/
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_filename_to_utf8 g_filename_to_utf8_utf8
-#define g_filename_from_utf8 g_filename_from_utf8_utf8
-#define g_filename_from_uri g_filename_from_uri_utf8
-#define g_filename_to_uri g_filename_to_uri_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
gchar* g_filename_to_utf8 (const gchar *opsysstring,
gssize len,
gsize *bytes_read,
gsize *bytes_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_filename_from_utf8 (const gchar *utf8string,
gssize len,
gsize *bytes_read,
gsize *bytes_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_filename_from_uri (const gchar *uri,
gchar **hostname,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_filename_to_uri (const gchar *filename,
const gchar *hostname,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_filename_display_name (const gchar *filename) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_get_filename_charsets (const gchar ***charsets);
+GLIB_AVAILABLE_IN_ALL
gchar *g_filename_display_basename (const gchar *filename) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar **g_uri_list_extract_uris (const gchar *uri_list) G_GNUC_MALLOC;
+#ifdef G_OS_WIN32
+#define g_filename_to_utf8 g_filename_to_utf8_utf8
+#define g_filename_from_utf8 g_filename_from_utf8_utf8
+#define g_filename_from_uri g_filename_from_uri_utf8
+#define g_filename_to_uri g_filename_to_uri_utf8
+
+GLIB_AVAILABLE_IN_ALL
+gchar* g_filename_to_utf8_utf8 (const gchar *opsysstring,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
+gchar* g_filename_from_utf8_utf8 (const gchar *utf8string,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
+gchar *g_filename_from_uri_utf8 (const gchar *uri,
+ gchar **hostname,
+ GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
+gchar *g_filename_to_uri_utf8 (const gchar *filename,
+ const gchar *hostname,
+ GError **error) G_GNUC_MALLOC;
+#endif
+
G_END_DECLS
#endif /* __G_CONVERT_H__ */
diff --git a/glib/glib/gdataset.c b/glib/glib/gdataset.c
index 80f5094..006bdc1 100644
--- a/glib/glib/gdataset.c
+++ b/glib/glib/gdataset.c
@@ -185,10 +185,8 @@ static inline gpointer g_data_set_internal (GData **datalist,
GDestroyNotify destroy_func,
GDataset *dataset);
static void g_data_initialize (void);
-static inline GQuark g_quark_new (gchar *string);
-
-/* Locking model:
+/* Locking model:
* Each standalone GDataList is protected by a bitlock in the datalist pointer,
* which protects that modification of the non-flags part of the datalist pointer
* and the contents of the datalist.
@@ -204,10 +202,6 @@ G_LOCK_DEFINE_STATIC (g_dataset_global);
static GHashTable *g_dataset_location_ht = NULL;
static GDataset *g_dataset_cached = NULL; /* should this be
thread specific? */
-G_LOCK_DEFINE_STATIC (g_quark_global);
-static GHashTable *g_quark_ht = NULL;
-static gchar **g_quarks = NULL;
-static int g_quark_seq_id = 0;
/* --- functions --- */
@@ -684,10 +678,11 @@ g_datalist_id_set_data_full (GData **datalist,
* g_dataset_id_remove_no_notify:
* @dataset_location: the location identifying the dataset.
* @key_id: the #GQuark ID identifying the data element.
- * @Returns: the data previously stored at @key_id, or %NULL if none.
*
* Removes an element, without calling its destroy notification
* function.
+ *
+ * Returns: the data previously stored at @key_id, or %NULL if none.
**/
/**
* g_dataset_remove_no_notify:
@@ -722,10 +717,11 @@ g_dataset_id_remove_no_notify (gconstpointer dataset_location,
* g_datalist_id_remove_no_notify:
* @datalist: a datalist.
* @key_id: the #GQuark identifying a data element.
- * @Returns: the data previously stored at @key_id, or %NULL if none.
*
* Removes an element, without calling its destroy notification
* function.
+ *
+ * Returns: the data previously stored at @key_id, or %NULL if none.
**/
/**
* g_datalist_remove_no_notify:
@@ -752,19 +748,21 @@ g_datalist_id_remove_no_notify (GData **datalist,
* g_dataset_id_get_data:
* @dataset_location: the location identifying the dataset.
* @key_id: the #GQuark id to identify the data element.
- * @Returns: the data element corresponding to the #GQuark, or %NULL if
- * it is not found.
*
* Gets the data element corresponding to a #GQuark.
+ *
+ * Returns: the data element corresponding to the #GQuark, or %NULL if
+ * it is not found.
**/
/**
* g_dataset_get_data:
* @l: the location identifying the dataset.
* @k: the string identifying the data element.
- * @Returns: the data element corresponding to the string, or %NULL if
- * it is not found.
*
* Gets the data element corresponding to a string.
+ *
+ * Returns: the data element corresponding to the string, or %NULL if
+ * it is not found.
**/
gpointer
g_dataset_id_get_data (gconstpointer dataset_location,
@@ -792,54 +790,229 @@ g_dataset_id_get_data (gconstpointer dataset_location,
* g_datalist_id_get_data:
* @datalist: a datalist.
* @key_id: the #GQuark identifying a data element.
- * @Returns: the data element, or %NULL if it is not found.
*
* Retrieves the data element corresponding to @key_id.
- **/
+ *
+ * Returns: the data element, or %NULL if it is not found.
+ */
gpointer
-g_datalist_id_get_data (GData **datalist,
- GQuark key_id)
+g_datalist_id_get_data (GData **datalist,
+ GQuark key_id)
{
- gpointer res = NULL;
+ return g_datalist_id_dup_data (datalist, key_id, NULL, NULL);
+}
+
+/**
+ * GDuplicateFunc:
+ * @data: the data to duplicate
+ * @user_data: user data that was specified in g_datalist_id_dup_data()
+ *
+ * The type of functions that are used to 'duplicate' an object.
+ * What this means depends on the context, it could just be
+ * incrementing the reference count, if @data is a ref-counted
+ * object.
+ *
+ * Returns: a duplicate of data
+ */
+
+/**
+ * g_datalist_id_dup_data:
+ * @datalist: location of a datalist
+ * @key_id: the #GQuark identifying a data element
+ * @dup_func: (allow-none): function to duplicate the old value
+ * @user_data: (allow-none): passed as user_data to @dup_func
+ *
+ * This is a variant of g_datalist_id_get_data() which
+ * returns a 'duplicate' of the value. @dup_func defines the
+ * meaning of 'duplicate' in this context, it could e.g.
+ * take a reference on a ref-counted object.
+ *
+ * If the @key_id is not set in the datalist then @dup_func
+ * will be called with a %NULL argument.
+ *
+ * Note that @dup_func is called while the datalist is locked, so it
+ * is not allowed to read or modify the datalist.
+ *
+ * This function can be useful to avoid races when multiple
+ * threads are using the same datalist and the same key.
+ *
+ * Returns: the result of calling @dup_func on the value
+ * associated with @key_id in @datalist, or %NULL if not set.
+ * If @dup_func is %NULL, the value is returned unmodified.
+ *
+ * Since: 2.34
+ */
+gpointer
+g_datalist_id_dup_data (GData **datalist,
+ GQuark key_id,
+ GDuplicateFunc dup_func,
+ gpointer user_data)
+{
+ gpointer val = NULL;
+ gpointer retval = NULL;
+ GData *d;
+ GDataElt *data, *data_end;
g_return_val_if_fail (datalist != NULL, NULL);
- if (key_id)
+ g_return_val_if_fail (key_id != 0, NULL);
+
+ g_datalist_lock (datalist);
+
+ d = G_DATALIST_GET_POINTER (datalist);
+ if (d)
{
- GData *d;
- GDataElt *data, *data_end;
+ data = d->data;
+ data_end = data + d->len - 1;
+ while (data <= data_end)
+ {
+ if (data->key == key_id)
+ {
+ val = data->data;
+ break;
+ }
+ data++;
+ }
+ }
- g_datalist_lock (datalist);
+ if (dup_func)
+ retval = dup_func (val, user_data);
+ else
+ retval = val;
- d = G_DATALIST_GET_POINTER (datalist);
- if (d)
+ g_datalist_unlock (datalist);
+
+ return retval;
+}
+
+/**
+ * g_datalist_id_replace_data:
+ * @datalist: location of a datalist
+ * @key_id: the #GQuark identifying a data element
+ * @oldval: (allow-none): the old value to compare against
+ * @newval: (allow-none): the new value to replace it with
+ * @destroy: (allow-none): destroy notify for the new value
+ * @old_destroy: (allow-none): destroy notify for the existing value
+ *
+ * Compares the member that is associated with @key_id in
+ * @datalist to @oldval, and if they are the same, replace
+ * @oldval with @newval.
+ *
+ * This is like a typical atomic compare-and-exchange
+ * operation, for a member of @datalist.
+ *
+ * If the previous value was replaced then ownership of the
+ * old value (@oldval) is passed to the caller, including
+ * the registred destroy notify for it (passed out in @old_destroy).
+ * Its up to the caller to free this as he wishes, which may
+ * or may not include using @old_destroy as sometimes replacement
+ * should not destroy the object in the normal way.
+ *
+ * Return: %TRUE if the existing value for @key_id was replaced
+ * by @newval, %FALSE otherwise.
+ *
+ * Since: 2.34
+ */
+gboolean
+g_datalist_id_replace_data (GData **datalist,
+ GQuark key_id,
+ gpointer oldval,
+ gpointer newval,
+ GDestroyNotify destroy,
+ GDestroyNotify *old_destroy)
+{
+ gpointer val = NULL;
+ GData *d;
+ GDataElt *data, *data_end;
+
+ g_return_val_if_fail (datalist != NULL, FALSE);
+ g_return_val_if_fail (key_id != 0, FALSE);
+
+ if (old_destroy)
+ *old_destroy = NULL;
+
+ g_datalist_lock (datalist);
+
+ d = G_DATALIST_GET_POINTER (datalist);
+ if (d)
+ {
+ data = d->data;
+ data_end = data + d->len - 1;
+ while (data <= data_end)
+ {
+ if (data->key == key_id)
+ {
+ val = data->data;
+ if (val == oldval)
+ {
+ if (old_destroy)
+ *old_destroy = data->destroy;
+ if (newval != NULL)
+ {
+ data->data = newval;
+ data->destroy = destroy;
+ }
+ else
+ {
+ if (data != data_end)
+ *data = *data_end;
+ d->len--;
+
+ /* We don't bother to shrink, but if all data are now gone
+ * we at least free the memory
+ */
+ if (d->len == 0)
+ {
+ G_DATALIST_SET_POINTER (datalist, NULL);
+ g_free (d);
+ }
+ }
+ }
+ break;
+ }
+ data++;
+ }
+ }
+
+ if (val == NULL && oldval == NULL && newval != NULL)
+ {
+ GData *old_d;
+
+ /* insert newval */
+ old_d = d;
+ if (d == NULL)
{
- data = d->data;
- data_end = data + d->len;
- while (data < data_end)
- {
- if (data->key == key_id)
- {
- res = data->data;
- break;
- }
- data++;
- }
- }
+ d = g_malloc (sizeof (GData));
+ d->len = 0;
+ d->alloc = 1;
+ }
+ else if (d->len == d->alloc)
+ {
+ d->alloc = d->alloc * 2;
+ d = g_realloc (d, sizeof (GData) + (d->alloc - 1) * sizeof (GDataElt));
+ }
+ if (old_d != d)
+ G_DATALIST_SET_POINTER (datalist, d);
- g_datalist_unlock (datalist);
+ d->data[d->len].key = key_id;
+ d->data[d->len].data = newval;
+ d->data[d->len].destroy = destroy;
+ d->len++;
}
- return res;
+ g_datalist_unlock (datalist);
+
+ return val == oldval;
}
/**
* g_datalist_get_data:
* @datalist: a datalist.
* @key: the string identifying a data element.
- * @Returns: the data element, or %NULL if it is not found.
*
* Gets a data element, using its string identifier. This is slower than
* g_datalist_id_get_data() because it compares strings.
+ *
+ * Returns: the data element, or %NULL if it is not found.
**/
gpointer
g_datalist_get_data (GData **datalist,
@@ -1069,294 +1242,3 @@ g_data_initialize (void)
g_dataset_location_ht = g_hash_table_new (g_direct_hash, NULL);
g_dataset_cached = NULL;
}
-
-/**
- * SECTION:quarks
- * @title: Quarks
- * @short_description: a 2-way association between a string and a
- * unique integer identifier
- *
- * Quarks are associations between strings and integer identifiers.
- * Given either the string or the #GQuark identifier it is possible to
- * retrieve the other.
- *
- * Quarks are used for both <link
- * linkend="glib-Datasets">Datasets</link> and <link
- * linkend="glib-Keyed-Data-Lists">Keyed Data Lists</link>.
- *
- * To create a new quark from a string, use g_quark_from_string() or
- * g_quark_from_static_string().
- *
- * To find the string corresponding to a given #GQuark, use
- * g_quark_to_string().
- *
- * To find the #GQuark corresponding to a given string, use
- * g_quark_try_string().
- *
- * Another use for the string pool maintained for the quark functions
- * is string interning, using g_intern_string() or
- * g_intern_static_string(). An interned string is a canonical
- * representation for a string. One important advantage of interned
- * strings is that they can be compared for equality by a simple
- * pointer comparison, rather than using strcmp().
- **/
-
-/**
- * GQuark:
- *
- * A GQuark is a non-zero integer which uniquely identifies a
- * particular string. A GQuark value of zero is associated to %NULL.
- **/
-
-/**
- * g_quark_try_string:
- * @string: (allow-none): a string.
- * @Returns: the #GQuark associated with the string, or 0 if @string is
- * %NULL or there is no #GQuark associated with it.
- *
- * Gets the #GQuark associated with the given string, or 0 if string is
- * %NULL or it has no associated #GQuark.
- *
- * If you want the GQuark to be created if it doesn't already exist,
- * use g_quark_from_string() or g_quark_from_static_string().
- **/
-GQuark
-g_quark_try_string (const gchar *string)
-{
- GQuark quark = 0;
-
- if (string == NULL)
- return 0;
-
- G_LOCK (g_quark_global);
- if (g_quark_ht)
- quark = GPOINTER_TO_UINT (g_hash_table_lookup (g_quark_ht, string));
- G_UNLOCK (g_quark_global);
-
- return quark;
-}
-
-#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
-static char *quark_block = NULL;
-static int quark_block_offset = 0;
-
-/* HOLDS: g_quark_global_lock */
-static char *
-quark_strdup(const gchar *string)
-{
- gchar *copy;
- gsize len;
-
- len = strlen (string) + 1;
-
- /* For strings longer than half the block size, fall back
- to strdup so that we fill our blocks at least 50%. */
- if (len > QUARK_STRING_BLOCK_SIZE / 2)
- return g_strdup (string);
-
- if (quark_block == NULL ||
- QUARK_STRING_BLOCK_SIZE - quark_block_offset < len)
- {
- quark_block = g_malloc (QUARK_STRING_BLOCK_SIZE);
- quark_block_offset = 0;
- }
-
- copy = quark_block + quark_block_offset;
- memcpy (copy, string, len);
- quark_block_offset += len;
-
- return copy;
-}
-
-/* HOLDS: g_quark_global_lock */
-static inline GQuark
-g_quark_from_string_internal (const gchar *string,
- gboolean duplicate)
-{
- GQuark quark = 0;
-
- if (g_quark_ht)
- quark = GPOINTER_TO_UINT (g_hash_table_lookup (g_quark_ht, string));
-
- if (!quark)
- {
- quark = g_quark_new (duplicate ? quark_strdup (string) : (gchar *)string);
- TRACE(GLIB_QUARK_NEW(string, quark));
- }
-
- return quark;
-}
-
-/**
- * g_quark_from_string:
- * @string: (allow-none): a string.
- * @Returns: the #GQuark identifying the string, or 0 if @string is
- * %NULL.
- *
- * Gets the #GQuark identifying the given string. If the string does
- * not currently have an associated #GQuark, a new #GQuark is created,
- * using a copy of the string.
- **/
-GQuark
-g_quark_from_string (const gchar *string)
-{
- GQuark quark;
-
- if (!string)
- return 0;
-
- G_LOCK (g_quark_global);
- quark = g_quark_from_string_internal (string, TRUE);
- G_UNLOCK (g_quark_global);
-
- return quark;
-}
-
-/**
- * g_quark_from_static_string:
- * @string: (allow-none): a string.
- * @Returns: the #GQuark identifying the string, or 0 if @string is
- * %NULL.
- *
- * Gets the #GQuark identifying the given (static) string. If the
- * string does not currently have an associated #GQuark, a new #GQuark
- * is created, linked to the given string.
- *
- * Note that this function is identical to g_quark_from_string() except
- * that if a new #GQuark is created the string itself is used rather
- * than a copy. This saves memory, but can only be used if the string
- * will <emphasis>always</emphasis> exist. It can be used with
- * statically allocated strings in the main program, but not with
- * statically allocated memory in dynamically loaded modules, if you
- * expect to ever unload the module again (e.g. do not use this
- * function in GTK+ theme engines).
- **/
-GQuark
-g_quark_from_static_string (const gchar *string)
-{
- GQuark quark;
-
- if (!string)
- return 0;
-
- G_LOCK (g_quark_global);
- quark = g_quark_from_string_internal (string, FALSE);
- G_UNLOCK (g_quark_global);
-
- return quark;
-}
-
-/**
- * g_quark_to_string:
- * @quark: a #GQuark.
- * @Returns: the string associated with the #GQuark.
- *
- * Gets the string associated with the given #GQuark.
- **/
-const gchar *
-g_quark_to_string (GQuark quark)
-{
- gchar* result = NULL;
- gchar **quarks;
- gint quark_seq_id;
-
- quark_seq_id = g_atomic_int_get (&g_quark_seq_id);
- quarks = g_atomic_pointer_get (&g_quarks);
-
- if (quark < quark_seq_id)
- result = quarks[quark];
-
- return result;
-}
-
-/* HOLDS: g_quark_global_lock */
-static inline GQuark
-g_quark_new (gchar *string)
-{
- GQuark quark;
- gchar **g_quarks_new;
-
- if (g_quark_seq_id % G_QUARK_BLOCK_SIZE == 0)
- {
- g_quarks_new = g_new (gchar*, g_quark_seq_id + G_QUARK_BLOCK_SIZE);
- if (g_quark_seq_id != 0)
- memcpy (g_quarks_new, g_quarks, sizeof (char *) * g_quark_seq_id);
- memset (g_quarks_new + g_quark_seq_id, 0, sizeof (char *) * G_QUARK_BLOCK_SIZE);
- /* This leaks the old quarks array. Its unfortunate, but it allows
- us to do lockless lookup of the arrays, and there shouldn't be that
- many quarks in an app */
- g_atomic_pointer_set (&g_quarks, g_quarks_new);
- }
- if (!g_quark_ht)
- {
- g_assert (g_quark_seq_id == 0);
- g_quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
- g_quarks[g_quark_seq_id] = NULL;
- g_atomic_int_inc (&g_quark_seq_id);
- }
-
- quark = g_quark_seq_id;
- g_atomic_pointer_set (&g_quarks[quark], string);
- g_hash_table_insert (g_quark_ht, string, GUINT_TO_POINTER (quark));
- g_atomic_int_inc (&g_quark_seq_id);
-
- return quark;
-}
-
-/**
- * g_intern_string:
- * @string: (allow-none): a string
- *
- * Returns a canonical representation for @string. Interned strings can
- * be compared for equality by comparing the pointers, instead of using strcmp().
- *
- * Returns: a canonical representation for the string
- *
- * Since: 2.10
- */
-const gchar *
-g_intern_string (const gchar *string)
-{
- const gchar *result;
- GQuark quark;
-
- if (!string)
- return NULL;
-
- G_LOCK (g_quark_global);
- quark = g_quark_from_string_internal (string, TRUE);
- result = g_quarks[quark];
- G_UNLOCK (g_quark_global);
-
- return result;
-}
-
-/**
- * g_intern_static_string:
- * @string: (allow-none): a static string
- *
- * Returns a canonical representation for @string. Interned strings can
- * be compared for equality by comparing the pointers, instead of using strcmp().
- * g_intern_static_string() does not copy the string, therefore @string must
- * not be freed or modified.
- *
- * Returns: a canonical representation for the string
- *
- * Since: 2.10
- */
-const gchar *
-g_intern_static_string (const gchar *string)
-{
- GQuark quark;
- const gchar *result;
-
- if (!string)
- return NULL;
-
- G_LOCK (g_quark_global);
- quark = g_quark_from_string_internal (string, FALSE);
- result = g_quarks[quark];
- G_UNLOCK (g_quark_global);
-
- return result;
-}
diff --git a/glib/glib/gdataset.h b/glib/glib/gdataset.h
index eab296b..6d69e60 100644
--- a/glib/glib/gdataset.h
+++ b/glib/glib/gdataset.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_DATASET_H__
+#define __G_DATASET_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DATASET_H__
-#define __G_DATASET_H__
-
#include <glib/gquark.h>
G_BEGIN_DECLS
@@ -43,16 +43,38 @@ typedef void (*GDataForeachFunc) (GQuark key_id,
/* Keyed Data List
*/
+GLIB_AVAILABLE_IN_ALL
void g_datalist_init (GData **datalist);
+GLIB_AVAILABLE_IN_ALL
void g_datalist_clear (GData **datalist);
+GLIB_AVAILABLE_IN_ALL
gpointer g_datalist_id_get_data (GData **datalist,
GQuark key_id);
+GLIB_AVAILABLE_IN_ALL
void g_datalist_id_set_data_full (GData **datalist,
GQuark key_id,
gpointer data,
GDestroyNotify destroy_func);
+
+typedef gpointer (*GDuplicateFunc) (gpointer data, gpointer user_data);
+
+GLIB_AVAILABLE_IN_2_34
+gpointer g_datalist_id_dup_data (GData **datalist,
+ GQuark key_id,
+ GDuplicateFunc dup_func,
+ gpointer user_data);
+GLIB_AVAILABLE_IN_2_34
+gboolean g_datalist_id_replace_data (GData **datalist,
+ GQuark key_id,
+ gpointer oldval,
+ gpointer newval,
+ GDestroyNotify destroy,
+ GDestroyNotify *old_destroy);
+
+GLIB_AVAILABLE_IN_ALL
gpointer g_datalist_id_remove_no_notify (GData **datalist,
GQuark key_id);
+GLIB_AVAILABLE_IN_ALL
void g_datalist_foreach (GData **datalist,
GDataForeachFunc func,
gpointer user_data);
@@ -66,10 +88,13 @@ void g_datalist_foreach (GData **datalist,
*/
#define G_DATALIST_FLAGS_MASK 0x3
+GLIB_AVAILABLE_IN_ALL
void g_datalist_set_flags (GData **datalist,
guint flags);
+GLIB_AVAILABLE_IN_ALL
void g_datalist_unset_flags (GData **datalist,
guint flags);
+GLIB_AVAILABLE_IN_ALL
guint g_datalist_get_flags (GData **datalist);
#define g_datalist_id_set_data(dl, q, d) \
@@ -85,20 +110,25 @@ guint g_datalist_get_flags (GData **datalist);
#define g_datalist_remove_data(dl, k) \
g_datalist_id_set_data ((dl), g_quark_try_string (k), NULL)
-
/* Location Associated Keyed Data
*/
+GLIB_AVAILABLE_IN_ALL
void g_dataset_destroy (gconstpointer dataset_location);
+GLIB_AVAILABLE_IN_ALL
gpointer g_dataset_id_get_data (gconstpointer dataset_location,
GQuark key_id);
+GLIB_AVAILABLE_IN_ALL
gpointer g_datalist_get_data (GData **datalist,
const gchar *key);
+GLIB_AVAILABLE_IN_ALL
void g_dataset_id_set_data_full (gconstpointer dataset_location,
GQuark key_id,
gpointer data,
GDestroyNotify destroy_func);
+GLIB_AVAILABLE_IN_ALL
gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location,
GQuark key_id);
+GLIB_AVAILABLE_IN_ALL
void g_dataset_foreach (gconstpointer dataset_location,
GDataForeachFunc func,
gpointer user_data);
diff --git a/glib/glib/gdate.c b/glib/glib/gdate.c
index d9b25f3..1978cf7 100644
--- a/glib/glib/gdate.c
+++ b/glib/glib/gdate.c
@@ -1096,7 +1096,7 @@ g_date_prepare_to_parse (const gchar *str,
++i;
}
DEBUG_MSG (("**Order: %s, %s, %s", strings[0], strings[1], strings[2]));
- DEBUG_MSG (("**Sample date in this locale: `%s'", buf));
+ DEBUG_MSG (("**Sample date in this locale: '%s'", buf));
}
#endif
}
@@ -1137,7 +1137,7 @@ g_date_set_parse (GDate *d,
g_date_prepare_to_parse (str, &pt);
- DEBUG_MSG (("Found %d ints, `%d' `%d' `%d' and written out month %d",
+ DEBUG_MSG (("Found %d ints, '%d' '%d' '%d' and written out month %d",
pt.num_ints, pt.n[0], pt.n[1], pt.n[2], pt.month));
diff --git a/glib/glib/gdate.h b/glib/glib/gdate.h
index 5ef1850..ad02879 100644
--- a/glib/glib/gdate.h
+++ b/glib/glib/gdate.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_DATE_H__
+#define __G_DATE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DATE_H__
-#define __G_DATE_H__
-
#include <time.h>
#include <glib/gtypes.h>
@@ -119,11 +119,15 @@ struct _GDate
* to get a usable object. You can also allocate a GDate statically,
* then call g_date_clear() to initialize.
*/
+GLIB_AVAILABLE_IN_ALL
GDate* g_date_new (void);
+GLIB_AVAILABLE_IN_ALL
GDate* g_date_new_dmy (GDateDay day,
GDateMonth month,
GDateYear year);
+GLIB_AVAILABLE_IN_ALL
GDate* g_date_new_julian (guint32 julian_day);
+GLIB_AVAILABLE_IN_ALL
void g_date_free (GDate *date);
/* check g_date_valid() after doing an operation that might fail, like
@@ -131,21 +135,34 @@ void g_date_free (GDate *date);
* dates (the exceptions are the mutators, since you need those to
* return to validity).
*/
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_day (GDateDay day) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_month (GDateMonth month) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_year (GDateYear year) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_weekday (GDateWeekday weekday) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_julian (guint32 julian_date) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_valid_dmy (GDateDay day,
GDateMonth month,
GDateYear year) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
GDateWeekday g_date_get_weekday (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
GDateMonth g_date_get_month (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
GDateYear g_date_get_year (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
GDateDay g_date_get_day (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
guint32 g_date_get_julian (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
guint g_date_get_day_of_year (const GDate *date);
/* First monday/sunday is the start of week 1; if we haven't reached
* that day, return 0. These are not ISO weeks of the year; that
@@ -153,14 +170,18 @@ guint g_date_get_day_of_year (const GDate *date);
* these functions return the number of weeks, starting on the
* corrsponding day
*/
+GLIB_AVAILABLE_IN_ALL
guint g_date_get_monday_week_of_year (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
guint g_date_get_sunday_week_of_year (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
guint g_date_get_iso8601_week_of_year (const GDate *date);
/* If you create a static date struct you need to clear it to get it
* in a sane state before use. You can clear a whole array at
* once with the ndates argument.
*/
+GLIB_AVAILABLE_IN_ALL
void g_date_clear (GDate *date,
guint n_dates);
@@ -168,10 +189,13 @@ void g_date_clear (GDate *date,
* permits many formats but tries to catch common typos. If your data
* needs to be strictly validated, it is not an appropriate function.
*/
+GLIB_AVAILABLE_IN_ALL
void g_date_set_parse (GDate *date,
const gchar *str);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_time_t (GDate *date,
time_t timet);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_time_val (GDate *date,
GTimeVal *timeval);
#ifndef G_DISABLE_DEPRECATED
@@ -179,65 +203,88 @@ GLIB_DEPRECATED_FOR(g_date_set_time_t)
void g_date_set_time (GDate *date,
GTime time_);
#endif
+GLIB_AVAILABLE_IN_ALL
void g_date_set_month (GDate *date,
GDateMonth month);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_day (GDate *date,
GDateDay day);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_year (GDate *date,
GDateYear year);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_dmy (GDate *date,
GDateDay day,
GDateMonth month,
GDateYear y);
+GLIB_AVAILABLE_IN_ALL
void g_date_set_julian (GDate *date,
guint32 julian_date);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_is_first_of_month (const GDate *date);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_is_last_of_month (const GDate *date);
/* To go forward by some number of weeks just go forward weeks*7 days */
+GLIB_AVAILABLE_IN_ALL
void g_date_add_days (GDate *date,
guint n_days);
+GLIB_AVAILABLE_IN_ALL
void g_date_subtract_days (GDate *date,
guint n_days);
/* If you add/sub months while day > 28, the day might change */
+GLIB_AVAILABLE_IN_ALL
void g_date_add_months (GDate *date,
guint n_months);
+GLIB_AVAILABLE_IN_ALL
void g_date_subtract_months (GDate *date,
guint n_months);
/* If it's feb 29, changing years can move you to the 28th */
+GLIB_AVAILABLE_IN_ALL
void g_date_add_years (GDate *date,
guint n_years);
+GLIB_AVAILABLE_IN_ALL
void g_date_subtract_years (GDate *date,
guint n_years);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_is_leap_year (GDateYear year) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
guint8 g_date_get_days_in_month (GDateMonth month,
GDateYear year) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
guint8 g_date_get_monday_weeks_in_year (GDateYear year) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
guint8 g_date_get_sunday_weeks_in_year (GDateYear year) G_GNUC_CONST;
/* Returns the number of days between the two dates. If date2 comes
before date1, a negative value is return. */
+GLIB_AVAILABLE_IN_ALL
gint g_date_days_between (const GDate *date1,
const GDate *date2);
/* qsort-friendly (with a cast...) */
+GLIB_AVAILABLE_IN_ALL
gint g_date_compare (const GDate *lhs,
const GDate *rhs);
+GLIB_AVAILABLE_IN_ALL
void g_date_to_struct_tm (const GDate *date,
struct tm *tm);
+GLIB_AVAILABLE_IN_ALL
void g_date_clamp (GDate *date,
const GDate *min_date,
const GDate *max_date);
/* Swap date1 and date2's values if date1 > date2. */
+GLIB_AVAILABLE_IN_ALL
void g_date_order (GDate *date1, GDate *date2);
/* Just like strftime() except you can only use date-related formats.
* Using a time format is undefined.
*/
+GLIB_AVAILABLE_IN_ALL
gsize g_date_strftime (gchar *s,
gsize slen,
const gchar *format,
diff --git a/glib/glib/gdatetime.c b/glib/glib/gdatetime.c
index 7f78b84..ccfe574 100644
--- a/glib/glib/gdatetime.c
+++ b/glib/glib/gdatetime.c
@@ -115,9 +115,6 @@
struct _GDateTime
{
- /* 1 is 0001-01-01 in Proleptic Gregorian */
- gint32 days;
-
/* Microsecond timekeeping within Day */
guint64 usec;
@@ -125,6 +122,9 @@ struct _GDateTime
GTimeZone *tz;
gint interval;
+ /* 1 is 0001-01-01 in Proleptic Gregorian */
+ gint32 days;
+
volatile gint ref_count;
};
@@ -948,6 +948,14 @@ g_date_time_new (GTimeZone *tz,
GDateTime *datetime;
gint64 full_time;
+ if (year < 1 || year > 9999 ||
+ month < 1 || month > 12 ||
+ day < 1 || day > 31 ||
+ hour < 0 || hour > 23 ||
+ minute < 0 || minute > 59 ||
+ seconds < 0.0 || seconds >= 60.0)
+ return NULL;
+
datetime = g_date_time_alloc (tz);
datetime->days = ymd_to_days (year, month, day);
datetime->usec = (hour * USEC_PER_HOUR)
@@ -989,7 +997,7 @@ g_date_time_new (GTimeZone *tz,
*
* Returns: a #GDateTime, or %NULL
*
- * Since: 2.26.
+ * Since: 2.26
**/
GDateTime *
g_date_time_new_local (gint year,
@@ -1026,7 +1034,7 @@ g_date_time_new_local (gint year,
*
* Returns: a #GDateTime, or %NULL
*
- * Since: 2.26.
+ * Since: 2.26
**/
GDateTime *
g_date_time_new_utc (gint year,
@@ -1390,7 +1398,7 @@ g_date_time_compare (gconstpointer dt1,
*
* Calculates the difference in time between @end and @begin. The
* #GTimeSpan that is returned is effectively @end - @begin (ie:
- * positive if the first simparameter is larger).
+ * positive if the first parameter is larger).
*
* Return value: the difference between the two #GDateTime, as a time
* span expressed in microseconds.
@@ -2082,6 +2090,59 @@ g_date_time_to_utc (GDateTime *datetime)
/* Format {{{1 */
+static gboolean
+format_z (GString *outstr,
+ gint offset,
+ guint colons)
+{
+ gint hours;
+ gint minutes;
+ gint seconds;
+
+ hours = offset / 3600;
+ minutes = ABS (offset) / 60 % 60;
+ seconds = ABS (offset) % 60;
+
+ switch (colons)
+ {
+ case 0:
+ g_string_append_printf (outstr, "%+03d%02d",
+ hours,
+ minutes);
+ break;
+
+ case 1:
+ g_string_append_printf (outstr, "%+03d:%02d",
+ hours,
+ minutes);
+ break;
+
+ case 2:
+ g_string_append_printf (outstr, "%+03d:%02d:%02d",
+ hours,
+ minutes,
+ seconds);
+ break;
+
+ case 3:
+ g_string_append_printf (outstr, "%+03d", hours);
+
+ if (minutes != 0 || seconds != 0)
+ {
+ g_string_append_printf (outstr, ":%02d", minutes);
+
+ if (seconds != 0)
+ g_string_append_printf (outstr, ":%02d", seconds);
+ }
+ break;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static void
format_number (GString *str,
gboolean use_alt_digits,
@@ -2177,6 +2238,7 @@ g_date_time_format_locale (GDateTime *datetime,
gboolean locale_is_utf8)
{
guint len;
+ guint colons;
gchar *tmp;
gunichar c;
gboolean alt_digits = FALSE;
@@ -2211,6 +2273,7 @@ g_date_time_format_locale (GDateTime *datetime,
if (!*format)
break;
+ colons = 0;
alt_digits = FALSE;
pad_set = FALSE;
@@ -2302,7 +2365,7 @@ g_date_time_format_locale (GDateTime *datetime,
alt_digits = TRUE;
goto next_mod;
case 'p':
- ampm = GET_AMPM (datetime);
+ ampm = (gchar *) GET_AMPM (datetime);
if (!locale_is_utf8)
{
ampm = tmp = g_locale_to_utf8 (ampm, -1, NULL, NULL, NULL);
@@ -2323,7 +2386,7 @@ g_date_time_format_locale (GDateTime *datetime,
g_free (ampm);
break;
case 'P':
- ampm = GET_AMPM (datetime);
+ ampm = (gchar *) GET_AMPM (datetime);
if (!locale_is_utf8)
{
ampm = tmp = g_locale_to_utf8 (ampm, -1, NULL, NULL, NULL);
@@ -2406,17 +2469,15 @@ g_date_time_format_locale (GDateTime *datetime,
g_date_time_get_year (datetime));
break;
case 'z':
- if (datetime->tz != NULL)
- {
- gint64 offset = g_date_time_get_utc_offset (datetime)
- / USEC_PER_SECOND;
-
- g_string_append_printf (outstr, "%+03d%02d",
- (int) offset / 3600,
- (int) abs(offset) / 60 % 60);
- }
- else
- g_string_append (outstr, "+0000");
+ {
+ gint64 offset;
+ if (datetime->tz != NULL)
+ offset = g_date_time_get_utc_offset (datetime) / USEC_PER_SECOND;
+ else
+ offset = 0;
+ if (!format_z (outstr, (int) offset, colons))
+ return FALSE;
+ }
break;
case 'Z':
tz = g_date_time_get_timezone_abbreviation (datetime);
@@ -2445,6 +2506,12 @@ g_date_time_format_locale (GDateTime *datetime,
pad_set = TRUE;
pad = "0";
goto next_mod;
+ case ':':
+ /* Colons are only allowed before 'z' */
+ if (*format && *format != 'z' && *format != ':')
+ return FALSE;
+ colons++;
+ goto next_mod;
default:
return FALSE;
}
@@ -2666,7 +2733,23 @@ g_date_time_format_locale (GDateTime *datetime,
* <varlistentry><term>
* <literal>\%z</literal>:
* </term><listitem><simpara>
- * the time-zone as hour offset from UTC
+ * the time zone as an offset from UTC (+hhmm)
+ * </simpara></listitem></varlistentry>
+ * <varlistentry><term>
+ * <literal>\%:z</literal>:
+ * </term><listitem><simpara>
+ * the time zone as an offset from UTC (+hh:mm). This is a gnulib strftime extension. Since: 2.38
+ * </simpara></listitem></varlistentry>
+ * <varlistentry><term>
+ * <literal>\%::z</literal>:
+ * </term><listitem><simpara>
+ * the time zone as an offset from UTC (+hh:mm:ss). This is a gnulib strftime extension. Since: 2.38
+ * </simpara></listitem></varlistentry>
+ * <varlistentry><term>
+ * <literal>\%:::z</literal>:
+ * </term><listitem><simpara>
+ * the time zone as an offset from UTC, with : to necessary precision
+ * (e.g., -04, +05:30). This is a gnulib strftime extension. Since: 2.38
* </simpara></listitem></varlistentry>
* <varlistentry><term>
* <literal>\%Z</literal>:
diff --git a/glib/glib/gdatetime.h b/glib/glib/gdatetime.h
index 6643e3f..cbaf190 100644
--- a/glib/glib/gdatetime.h
+++ b/glib/glib/gdatetime.h
@@ -23,13 +23,13 @@
* Ryan Lortie <desrt@desrt.ca>
*/
+#ifndef __G_DATE_TIME_H__
+#define __G_DATE_TIME_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DATE_TIME_H__
-#define __G_DATE_TIME_H__
-
#include <glib/gtimezone.h>
G_BEGIN_DECLS
@@ -98,19 +98,29 @@ typedef gint64 GTimeSpan;
*/
typedef struct _GDateTime GDateTime;
+GLIB_AVAILABLE_IN_ALL
void g_date_time_unref (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_ref (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_now (GTimeZone *tz);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_now_local (void);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_now_utc (void);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_from_unix_local (gint64 t);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_from_unix_utc (gint64 t);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_from_timeval_local (const GTimeVal *tv);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new (GTimeZone *tz,
gint year,
gint month,
@@ -118,12 +128,14 @@ GDateTime * g_date_time_new (GTimeZo
gint hour,
gint minute,
gdouble seconds);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_local (gint year,
gint month,
gint day,
gint hour,
gint minute,
gdouble seconds);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_new_utc (gint year,
gint month,
gint day,
@@ -131,33 +143,42 @@ GDateTime * g_date_time_new_utc (gint
gint minute,
gdouble seconds);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add (GDateTime *datetime,
GTimeSpan timespan);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_years (GDateTime *datetime,
gint years);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_months (GDateTime *datetime,
gint months);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_weeks (GDateTime *datetime,
gint weeks);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_days (GDateTime *datetime,
gint days);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_hours (GDateTime *datetime,
gint hours);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_minutes (GDateTime *datetime,
gint minutes);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_seconds (GDateTime *datetime,
gdouble seconds);
+GLIB_AVAILABLE_IN_ALL
G_GNUC_WARN_UNUSED_RESULT
GDateTime * g_date_time_add_full (GDateTime *datetime,
gint years,
@@ -167,48 +188,74 @@ GDateTime * g_date_time_add_full (GDateTi
gint minutes,
gdouble seconds);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_compare (gconstpointer dt1,
gconstpointer dt2);
+GLIB_AVAILABLE_IN_ALL
GTimeSpan g_date_time_difference (GDateTime *end,
GDateTime *begin);
+GLIB_AVAILABLE_IN_ALL
guint g_date_time_hash (gconstpointer datetime);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_time_equal (gconstpointer dt1,
gconstpointer dt2);
+GLIB_AVAILABLE_IN_ALL
void g_date_time_get_ymd (GDateTime *datetime,
gint *year,
gint *month,
gint *day);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_year (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_month (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_day_of_month (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_week_numbering_year (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_week_of_year (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_day_of_week (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_day_of_year (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_hour (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_minute (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_second (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint g_date_time_get_microsecond (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gdouble g_date_time_get_seconds (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gint64 g_date_time_to_unix (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_time_to_timeval (GDateTime *datetime,
GTimeVal *tv);
+GLIB_AVAILABLE_IN_ALL
GTimeSpan g_date_time_get_utc_offset (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_date_time_get_timezone_abbreviation (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gboolean g_date_time_is_daylight_savings (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_to_timezone (GDateTime *datetime,
GTimeZone *tz);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_to_local (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
GDateTime * g_date_time_to_utc (GDateTime *datetime);
+GLIB_AVAILABLE_IN_ALL
gchar * g_date_time_format (GDateTime *datetime,
const gchar *format) G_GNUC_MALLOC;
diff --git a/glib/glib/gdir.c b/glib/glib/gdir.c
index e89de89..4f17981 100644
--- a/glib/glib/gdir.c
+++ b/glib/glib/gdir.c
@@ -42,12 +42,13 @@
#include "gtestutils.h"
#include "glibintl.h"
-
#if defined (_MSC_VER) && !defined (HAVE_DIRENT_H)
#include "../build/win32/dirent/dirent.h"
#include "../build/win32/dirent/wdirent.c"
#endif
+#include "glib-private.h" /* g_dir_open_with_errno, g_dir_new_from_dirp */
+
/**
* GDir:
*
@@ -66,6 +67,57 @@ struct _GDir
#endif
};
+/*< private >
+ * g_dir_open_with_errno:
+ * @path: the path to the directory you are interested in.
+ * @flags: Currently must be set to 0. Reserved for future use.
+ *
+ * Opens a directory for reading.
+ *
+ * This function is equivalent to g_dir_open() except in the error case,
+ * errno will be set accordingly.
+ *
+ * This is useful if you want to construct your own error message.
+ *
+ * Returns: a newly allocated #GDir on success, or %NULL on failure,
+ * with errno set accordingly.
+ *
+ * Since: 2.38
+ */
+GDir *
+g_dir_open_with_errno (const gchar *path,
+ guint flags)
+{
+ GDir dir;
+#ifdef G_OS_WIN32
+ gint saved_errno;
+ wchar_t *wpath;
+#endif
+
+ g_return_val_if_fail (path != NULL, NULL);
+
+#ifdef G_OS_WIN32
+ wpath = g_utf8_to_utf16 (path, -1, NULL, NULL, NULL);
+
+ g_return_val_if_fail (wpath != NULL, NULL);
+
+ dir.wdirp = _wopendir (wpath);
+ saved_errno = errno;
+ g_free (wpath);
+ errno = saved_errno;
+
+ if (dir.wdirp == NULL)
+ return NULL;
+#else
+ dir.dirp = opendir (path);
+
+ if (dir.dirp == NULL)
+ return NULL;
+#endif
+
+ return g_memdup (&dir, sizeof dir);
+}
+
/**
* g_dir_open:
* @path: the path to the directory you are interested in. On Unix
@@ -88,67 +140,25 @@ g_dir_open (const gchar *path,
guint flags,
GError **error)
{
+ gint saved_errno;
GDir *dir;
- int errsv;
-#ifdef G_OS_WIN32
- wchar_t *wpath;
-#else
- gchar *utf8_path;
-#endif
- g_return_val_if_fail (path != NULL, NULL);
-
-#ifdef G_OS_WIN32
- wpath = g_utf8_to_utf16 (path, -1, NULL, NULL, error);
+ dir = g_dir_open_with_errno (path, flags);
- if (wpath == NULL)
- return NULL;
-
- dir = g_new (GDir, 1);
-
- dir->wdirp = _wopendir (wpath);
- g_free (wpath);
-
- if (dir->wdirp)
- return dir;
-
- /* error case */
- errsv = errno;
-
- g_set_error (error,
- G_FILE_ERROR,
- g_file_error_from_errno (errsv),
- _("Error opening directory '%s': %s"),
- path, g_strerror (errsv));
-
- g_free (dir);
-
- return NULL;
-#else
- dir = g_new (GDir, 1);
-
- dir->dirp = opendir (path);
-
- if (dir->dirp)
- return dir;
-
- /* error case */
- errsv = errno;
+ if (dir == NULL)
+ {
+ gchar *utf8_path;
- utf8_path = g_filename_to_utf8 (path, -1,
- NULL, NULL, NULL);
+ saved_errno = errno;
- g_set_error (error,
- G_FILE_ERROR,
- g_file_error_from_errno (errsv),
- _("Error opening directory '%s': %s"),
- utf8_path, g_strerror (errsv));
+ utf8_path = g_filename_to_utf8 (path, -1, NULL, NULL, NULL);
- g_free (utf8_path);
- g_free (dir);
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (saved_errno),
+ _("Error opening directory '%s': %s"), utf8_path, g_strerror (saved_errno));
+ g_free (utf8_path);
+ }
- return NULL;
-#endif
+ return dir;
}
#if defined (G_OS_WIN32) && !defined (_WIN64)
@@ -181,6 +191,40 @@ g_dir_open (const gchar *path,
}
#endif
+/*< private >
+ * g_dir_new_from_dirp:
+ * @dirp: a #DIR* created by opendir() or fdopendir()
+ *
+ * Creates a #GDir object from the DIR object that is created using
+ * opendir() or fdopendir(). The created #GDir assumes ownership of the
+ * passed-in #DIR pointer.
+ *
+ * @dirp must not be %NULL.
+ *
+ * This function never fails.
+ *
+ * Returns: a newly allocated #GDir, which should be closed using
+ * g_dir_close().
+ *
+ * Since: 2.38
+ **/
+GDir *
+g_dir_new_from_dirp (gpointer dirp)
+{
+#ifdef G_OS_UNIX
+ GDir *dir;
+
+ g_return_val_if_fail (dirp != NULL, NULL);
+
+ dir = g_new (GDir, 1);
+ dir->dirp = dirp;
+
+ return dir;
+#else
+ g_assert_not_reached ();
+#endif
+}
+
/**
* g_dir_read_name:
* @dir: a #GDir* created by g_dir_open()
diff --git a/glib/glib/gdir.h b/glib/glib/gdir.h
index 79b3038..7b6ec1b 100644
--- a/glib/glib/gdir.h
+++ b/glib/glib/gdir.h
@@ -21,34 +21,46 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_DIR_H__
+#define __G_DIR_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_DIR_H__
-#define __G_DIR_H__
-
#include <glib/gerror.h>
+#ifdef G_OS_UNIX
+#include <dirent.h>
+#endif
+
G_BEGIN_DECLS
typedef struct _GDir GDir;
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-/* For DLL ABI stability, keep old names for old (non-UTF-8) functionality. */
-#define g_dir_open g_dir_open_utf8
-#define g_dir_read_name g_dir_read_name_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
GDir * g_dir_open (const gchar *path,
guint flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_dir_read_name (GDir *dir);
+GLIB_AVAILABLE_IN_ALL
void g_dir_rewind (GDir *dir);
+GLIB_AVAILABLE_IN_ALL
void g_dir_close (GDir *dir);
+#ifdef G_OS_WIN32
+#define g_dir_open g_dir_open_utf8
+#define g_dir_read_name g_dir_read_name_utf8
+
+GLIB_AVAILABLE_IN_ALL
+GDir *g_dir_open_utf8 (const gchar *path,
+ guint flags,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+const gchar *g_dir_read_name_utf8 (GDir *dir);
+#endif /* G_OS_WIN32 */
+
G_END_DECLS
#endif /* __G_DIR_H__ */
diff --git a/glib/glib/gen-unicode-tables.pl b/glib/glib/gen-unicode-tables.pl
index f2b9237..d111d91 100755
--- a/glib/glib/gen-unicode-tables.pl
+++ b/glib/glib/gen-unicode-tables.pl
@@ -143,6 +143,7 @@ $FOLDING_MAPPING = 2;
'PO' => "G_UNICODE_BREAK_POSTFIX",
'PR' => "G_UNICODE_BREAK_PREFIX",
'QU' => "G_UNICODE_BREAK_QUOTATION",
+ 'RI' => "G_UNICODE_BREAK_REGIONAL_INDICATOR",
'SA' => "G_UNICODE_BREAK_COMPLEX_CONTEXT",
'SG' => "G_UNICODE_BREAK_SURROGATE",
'SP' => "G_UNICODE_BREAK_SPACE",
diff --git a/glib/glib/genviron.c b/glib/glib/genviron.c
index 59a8bbe..be2d6a5 100644
--- a/glib/glib/genviron.c
+++ b/glib/glib/genviron.c
@@ -40,6 +40,7 @@
#include <windows.h>
#endif
+#include "glib-private.h"
#include "gmem.h"
#include "gmessages.h"
#include "gstrfuncs.h"
@@ -466,7 +467,11 @@ g_getenv (const gchar *variable)
if (len == 0)
{
g_free (wname);
- return NULL;
+ if (GetLastError () == ERROR_ENVVAR_NOT_FOUND)
+ return NULL;
+
+ quark = g_quark_from_static_string ("");
+ return g_quark_to_string (quark);
}
else if (len == 1)
len = 2;
@@ -633,10 +638,15 @@ g_get_environ (void)
gint i, n;
strings = GetEnvironmentStringsW ();
- for (n = 0; strings[n]; n += wcslen (strings + n) + 1);
- result = g_new (char *, n + 1);
- for (i = 0; strings[i]; i += wcslen (strings + i) + 1)
- result[i] = g_utf16_to_utf8 (strings + i, -1, NULL, NULL, NULL);
+ for (n = 0, i = 0; strings[n]; i++)
+ n += wcslen (strings + n) + 1;
+
+ result = g_new (char *, i + 1);
+ for (n = 0, i = 0; strings[n]; i++)
+ {
+ result[i] = g_utf16_to_utf8 (strings + n, -1, NULL, NULL, NULL);
+ n += wcslen (strings + n) + 1;
+ }
FreeEnvironmentStringsW (strings);
result[i] = NULL;
diff --git a/glib/glib/genviron.h b/glib/glib/genviron.h
index c75c548..1fcc225 100644
--- a/glib/glib/genviron.h
+++ b/glib/glib/genviron.h
@@ -24,42 +24,57 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_ENVIRON_H__
+#define __G_ENVIRON_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ENVIRON_H__
-#define __G_ENVIRON_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_getenv g_getenv_utf8
-#define g_setenv g_setenv_utf8
-#define g_unsetenv g_unsetenv_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
const gchar * g_getenv (const gchar *variable);
+GLIB_AVAILABLE_IN_ALL
gboolean g_setenv (const gchar *variable,
const gchar *value,
gboolean overwrite);
+GLIB_AVAILABLE_IN_ALL
void g_unsetenv (const gchar *variable);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_listenv (void);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_get_environ (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_environ_getenv (gchar **envp,
const gchar *variable);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_environ_setenv (gchar **envp,
const gchar *variable,
const gchar *value,
gboolean overwrite) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gchar ** g_environ_unsetenv (gchar **envp,
const gchar *variable) G_GNUC_WARN_UNUSED_RESULT;
+#ifdef G_OS_WIN32
+#define g_getenv g_getenv_utf8
+#define g_setenv g_setenv_utf8
+#define g_unsetenv g_unsetenv_utf8
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *g_getenv_utf8 (const gchar *variable);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_setenv_utf8 (const gchar *variable,
+ const gchar *value,
+ gboolean overwrite);
+GLIB_AVAILABLE_IN_ALL
+void g_unsetenv_utf8 (const gchar *variable);
+#endif
+
G_END_DECLS
#endif /* __G_ENVIRON_H__ */
diff --git a/glib/glib/gerror.c b/glib/glib/gerror.c
index e6ce3c0..2adbdf8 100644
--- a/glib/glib/gerror.c
+++ b/glib/glib/gerror.c
@@ -645,6 +645,7 @@ g_clear_error (GError **err)
}
}
+G_GNUC_PRINTF(2, 0)
static void
g_error_add_prefix (gchar **string,
const gchar *format,
diff --git a/glib/glib/gerror.h b/glib/glib/gerror.h
index 6eb65fe..6224b87 100644
--- a/glib/glib/gerror.h
+++ b/glib/glib/gerror.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_ERROR_H__
+#define __G_ERROR_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_ERROR_H__
-#define __G_ERROR_H__
-
#include <stdarg.h>
#include <glib/gquark.h>
@@ -49,22 +49,28 @@ struct _GError
gchar *message;
};
+GLIB_AVAILABLE_IN_ALL
GError* g_error_new (GQuark domain,
gint code,
const gchar *format,
...) G_GNUC_PRINTF (3, 4);
+GLIB_AVAILABLE_IN_ALL
GError* g_error_new_literal (GQuark domain,
gint code,
const gchar *message);
+GLIB_AVAILABLE_IN_ALL
GError* g_error_new_valist (GQuark domain,
gint code,
const gchar *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(3, 0);
+GLIB_AVAILABLE_IN_ALL
void g_error_free (GError *error);
+GLIB_AVAILABLE_IN_ALL
GError* g_error_copy (const GError *error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_error_matches (const GError *error,
GQuark domain,
gint code);
@@ -72,12 +78,14 @@ gboolean g_error_matches (const GError *error,
/* if (err) *err = g_error_new(domain, code, format, ...), also has
* some sanity checks.
*/
+GLIB_AVAILABLE_IN_ALL
void g_set_error (GError **err,
GQuark domain,
gint code,
const gchar *format,
...) G_GNUC_PRINTF (4, 5);
+GLIB_AVAILABLE_IN_ALL
void g_set_error_literal (GError **err,
GQuark domain,
gint code,
@@ -85,18 +93,22 @@ void g_set_error_literal (GError **err,
/* if (dest) *dest = src; also has some sanity checks.
*/
+GLIB_AVAILABLE_IN_ALL
void g_propagate_error (GError **dest,
GError *src);
/* if (err && *err) { g_error_free(*err); *err = NULL; } */
+GLIB_AVAILABLE_IN_ALL
void g_clear_error (GError **err);
/* if (err) prefix the formatted string to the ->message */
+GLIB_AVAILABLE_IN_ALL
void g_prefix_error (GError **err,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
/* g_propagate_error then g_error_prefix on dest */
+GLIB_AVAILABLE_IN_ALL
void g_propagate_prefixed_error (GError **dest,
GError *src,
const gchar *format,
diff --git a/glib/glib/gfileutils.c b/glib/glib/gfileutils.c
index 0df9305..eb5baea 100644
--- a/glib/glib/gfileutils.c
+++ b/glib/glib/gfileutils.c
@@ -135,10 +135,10 @@
* library function.
* @G_FILE_ERROR_PIPE: Broken pipe; there is no process reading from the
* other end of a pipe. Every library function that returns this
- * error code also generates a `SIGPIPE' signal; this signal
+ * error code also generates a 'SIGPIPE' signal; this signal
* terminates the program if not handled or blocked. Thus, your
* program will never actually see this code unless it has handled
- * or blocked `SIGPIPE'.
+ * or blocked 'SIGPIPE'.
* @G_FILE_ERROR_AGAIN: Resource temporarily unavailable; the call might
* work if you try again later.
* @G_FILE_ERROR_INTR: Interrupted function call; an asynchronous signal
@@ -459,11 +459,7 @@ g_file_test (const gchar *filename,
#endif
}
-GQuark
-g_file_error_quark (void)
-{
- return g_quark_from_static_string ("g-file-error-quark");
-}
+G_DEFINE_QUARK (g-file-error-quark, g_file_error)
/**
* g_file_error_from_errno:
@@ -672,7 +668,7 @@ get_contents_stdio (const gchar *display_filename,
g_set_error (error,
G_FILE_ERROR,
G_FILE_ERROR_NOMEM,
- _("Could not allocate %lu bytes to read file \"%s\""),
+ g_dngettext (GETTEXT_PACKAGE, "Could not allocate %lu byte to read file \"%s\"", "Could not allocate %lu bytes to read file \"%s\"", (gulong)total_allocated),
(gulong) total_allocated,
display_filename);
@@ -760,7 +756,7 @@ get_contents_regfile (const gchar *display_filename,
g_set_error (error,
G_FILE_ERROR,
G_FILE_ERROR_NOMEM,
- _("Could not allocate %lu bytes to read file \"%s\""),
+ g_dngettext (GETTEXT_PACKAGE, "Could not allocate %lu byte to read file \"%s\"", "Could not allocate %lu bytes to read file \"%s\"", (gulong)alloc_size),
(gulong) alloc_size,
display_filename);
@@ -1008,6 +1004,49 @@ rename_file (const char *old_name,
return TRUE;
}
+static char *
+format_error_message (const gchar *filename,
+ const gchar *format_string) G_GNUC_FORMAT(2);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
+static char *
+format_error_message (const gchar *filename,
+ const gchar *format_string)
+{
+ gint saved_errno = errno;
+ gchar *display_name;
+ gchar *msg;
+
+ display_name = g_filename_display_name (filename);
+ msg = g_strdup_printf (format_string, display_name, g_strerror (saved_errno));
+ g_free (display_name);
+
+ return msg;
+}
+
+#pragma GCC diagnostic pop
+
+/* format string must have two '%s':
+ *
+ * - the place for the filename
+ * - the place for the strerror
+ */
+static void
+set_file_error (GError **error,
+ const gchar *filename,
+ const gchar *format_string)
+
+{
+ int saved_errno = errno;
+ char *msg = format_error_message (filename, format_string);
+
+ g_set_error_literal (error, G_FILE_ERROR, g_file_error_from_errno (saved_errno),
+ msg);
+ g_free (msg);
+}
+
static gchar *
write_to_temp_file (const gchar *contents,
gssize length,
@@ -1015,93 +1054,53 @@ write_to_temp_file (const gchar *contents,
GError **err)
{
gchar *tmp_name;
- gchar *display_name;
gchar *retval;
- FILE *file;
gint fd;
- int save_errno;
retval = NULL;
-
+
tmp_name = g_strdup_printf ("%s.XXXXXX", dest_file);
errno = 0;
fd = g_mkstemp_full (tmp_name, O_RDWR | O_BINARY, 0666);
- save_errno = errno;
- display_name = g_filename_display_name (tmp_name);
-
if (fd == -1)
{
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to create file '%s': %s"),
- display_name, g_strerror (save_errno));
-
+ set_file_error (err, tmp_name, _("Failed to create file '%s': %s"));
goto out;
}
- errno = 0;
- file = fdopen (fd, "wb");
- if (!file)
+#ifdef HAVE_FALLOCATE
+ if (length > 0)
{
- save_errno = errno;
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to open file '%s' for writing: fdopen() failed: %s"),
- display_name,
- g_strerror (save_errno));
-
- close (fd);
- g_unlink (tmp_name);
-
- goto out;
+ /* We do this on a 'best effort' basis... It may not be supported
+ * on the underlying filesystem.
+ */
+ (void) fallocate (fd, 0, 0, length);
}
-
- if (length > 0)
+#endif
+ while (length > 0)
{
- gsize n_written;
-
- errno = 0;
+ gssize s;
- n_written = fwrite (contents, 1, length, file);
+ s = write (fd, contents, length);
- if (n_written < length)
- {
- save_errno = errno;
-
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to write file '%s': fwrite() failed: %s"),
- display_name,
- g_strerror (save_errno));
+ if (s < 0)
+ {
+ if (errno == EINTR)
+ continue;
- fclose (file);
- g_unlink (tmp_name);
-
- goto out;
- }
- }
+ set_file_error (err, tmp_name, _("Failed to write file '%s': write() failed: %s"));
+ close (fd);
+ g_unlink (tmp_name);
- errno = 0;
- if (fflush (file) != 0)
- {
- save_errno = errno;
-
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to write file '%s': fflush() failed: %s"),
- display_name,
- g_strerror (save_errno));
+ goto out;
+ }
- fclose (file);
- g_unlink (tmp_name);
-
- goto out;
+ g_assert (s <= length);
+
+ contents += s;
+ length -= s;
}
#ifdef BTRFS_SUPER_MAGIC
@@ -1117,7 +1116,7 @@ write_to_temp_file (const gchar *contents,
goto no_fsync;
}
#endif
-
+
#ifdef HAVE_FSYNC
{
struct stat statbuf;
@@ -1129,23 +1128,13 @@ write_to_temp_file (const gchar *contents,
* the new and the old file on some filesystems. (I.E. those that don't
* guarantee the data is written to the disk before the metadata.)
*/
- if (g_lstat (dest_file, &statbuf) == 0 &&
- statbuf.st_size > 0 &&
- fsync (fileno (file)) != 0)
+ if (g_lstat (dest_file, &statbuf) == 0 && statbuf.st_size > 0 && fsync (fd) != 0)
{
- save_errno = errno;
-
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to write file '%s': fsync() failed: %s"),
- display_name,
- g_strerror (save_errno));
+ set_file_error (err, tmp_name, _("Failed to write file '%s': fsync() failed: %s"));
+ close (fd);
+ g_unlink (tmp_name);
- fclose (file);
- g_unlink (tmp_name);
-
- goto out;
+ goto out;
}
}
#endif
@@ -1153,30 +1142,20 @@ write_to_temp_file (const gchar *contents,
#ifdef BTRFS_SUPER_MAGIC
no_fsync:
#endif
-
- errno = 0;
- if (fclose (file) == EOF)
- {
- save_errno = errno;
-
- g_set_error (err,
- G_FILE_ERROR,
- g_file_error_from_errno (save_errno),
- _("Failed to close file '%s': fclose() failed: %s"),
- display_name,
- g_strerror (save_errno));
+ errno = 0;
+ if (!g_close (fd, err))
+ {
g_unlink (tmp_name);
-
+
goto out;
}
retval = g_strdup (tmp_name);
-
+
out:
g_free (tmp_name);
- g_free (display_name);
-
+
return retval;
}
@@ -1314,7 +1293,7 @@ g_file_set_contents (const gchar *filename,
* get_tmp_file based on the mkstemp implementation from the GNU C library.
* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
*/
-typedef gint (*GTmpFileCallback) (gchar *, gint, gint);
+typedef gint (*GTmpFileCallback) (const gchar *, gint, gint);
static gint
get_tmp_file (gchar *tmpl,
@@ -1379,13 +1358,27 @@ get_tmp_file (gchar *tmpl,
return -1;
}
+/* Some GTmpFileCallback implementations.
+ *
+ * Note: we cannot use open() or g_open() directly because even though
+ * they appear compatible, they may be vararg functions and calling
+ * varargs functions through a non-varargs type is undefined.
+ */
static gint
-wrap_mkdir (gchar *tmpl,
- int flags G_GNUC_UNUSED,
- int mode)
+wrap_g_mkdir (const gchar *filename,
+ int flags G_GNUC_UNUSED,
+ int mode)
{
/* tmpl is in UTF-8 on Windows, thus use g_mkdir() */
- return g_mkdir (tmpl, mode);
+ return g_mkdir (filename, mode);
+}
+
+static gint
+wrap_g_open (const gchar *filename,
+ int flags,
+ int mode)
+{
+ return g_open (filename, flags, mode);
}
/**
@@ -1415,7 +1408,7 @@ gchar *
g_mkdtemp_full (gchar *tmpl,
gint mode)
{
- if (get_tmp_file (tmpl, wrap_mkdir, 0, mode) == -1)
+ if (get_tmp_file (tmpl, wrap_g_mkdir, 0, mode) == -1)
return NULL;
else
return tmpl;
@@ -1481,7 +1474,7 @@ g_mkstemp_full (gchar *tmpl,
gint mode)
{
/* tmpl is in UTF-8 on Windows, thus use g_open() */
- return get_tmp_file (tmpl, (GTmpFileCallback) g_open,
+ return get_tmp_file (tmpl, wrap_g_open,
flags | O_CREAT | O_EXCL, mode);
}
@@ -1631,7 +1624,7 @@ g_file_open_tmp (const gchar *tmpl,
gint result;
result = g_get_tmp_name (tmpl, &fulltemplate,
- (GTmpFileCallback) g_open,
+ wrap_g_open,
O_CREAT | O_EXCL | O_RDWR | O_BINARY,
0600,
error);
@@ -1677,7 +1670,7 @@ g_dir_make_tmp (const gchar *tmpl,
{
gchar *fulltemplate;
- if (g_get_tmp_name (tmpl, &fulltemplate, wrap_mkdir, 0, 0700, error) == -1)
+ if (g_get_tmp_name (tmpl, &fulltemplate, wrap_g_mkdir, 0, 0700, error) == -1)
return NULL;
else
return fulltemplate;
@@ -2601,13 +2594,21 @@ g_file_get_contents (const gchar *filename,
#undef g_mkstemp
+static gint
+wrap_libc_open (const gchar *filename,
+ int flags,
+ int mode)
+{
+ return open (filename, flags, mode);
+}
+
gint
g_mkstemp (gchar *tmpl)
{
/* This is the backward compatibility system codepage version,
* thus use normal open().
*/
- return get_tmp_file (tmpl, (GTmpFileCallback) open,
+ return get_tmp_file (tmpl, wrap_libc_open,
O_RDWR | O_CREAT | O_EXCL, 0600);
}
diff --git a/glib/glib/gfileutils.h b/glib/glib/gfileutils.h
index 7c2eb1d..93dbde3 100644
--- a/glib/glib/gfileutils.h
+++ b/glib/glib/gfileutils.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_FILEUTILS_H__
+#define __G_FILEUTILS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_FILEUTILS_H__
-#define __G_FILEUTILS_H__
-
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -73,29 +73,26 @@ typedef enum
G_FILE_TEST_EXISTS = 1 << 4
} GFileTest;
+GLIB_AVAILABLE_IN_ALL
GQuark g_file_error_quark (void);
/* So other code can generate a GFileError */
+GLIB_AVAILABLE_IN_ALL
GFileError g_file_error_from_errno (gint err_no);
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_file_test g_file_test_utf8
-#define g_file_get_contents g_file_get_contents_utf8
-#define g_mkstemp g_mkstemp_utf8
-#define g_file_open_tmp g_file_open_tmp_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
gboolean g_file_test (const gchar *filename,
GFileTest test);
+GLIB_AVAILABLE_IN_ALL
gboolean g_file_get_contents (const gchar *filename,
gchar **contents,
gsize *length,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_file_set_contents (const gchar *filename,
const gchar *contents,
gssize length,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar *g_file_read_link (const gchar *filename,
GError **error);
@@ -107,12 +104,15 @@ gchar *g_mkdtemp_full (gchar *tmpl,
gint mode);
/* Wrapper / workalike for mkstemp() */
+GLIB_AVAILABLE_IN_ALL
gint g_mkstemp (gchar *tmpl);
+GLIB_AVAILABLE_IN_ALL
gint g_mkstemp_full (gchar *tmpl,
gint flags,
gint mode);
/* Wrappers for g_mkstemp and g_mkdtemp() */
+GLIB_AVAILABLE_IN_ALL
gint g_file_open_tmp (const gchar *tmpl,
gchar **name_used,
GError **error);
@@ -120,16 +120,21 @@ GLIB_AVAILABLE_IN_2_30
gchar *g_dir_make_tmp (const gchar *tmpl,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar *g_build_path (const gchar *separator,
const gchar *first_element,
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
gchar *g_build_pathv (const gchar *separator,
gchar **args) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_build_filename (const gchar *first_element,
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
gchar *g_build_filenamev (gchar **args) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gint g_mkdir_with_parents (const gchar *pathname,
gint mode);
@@ -155,7 +160,9 @@ gint g_mkdir_with_parents (const gchar *pathname,
#endif /* !G_OS_WIN32 */
+GLIB_AVAILABLE_IN_ALL
gboolean g_path_is_absolute (const gchar *file_name);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_path_skip_root (const gchar *file_name);
GLIB_DEPRECATED_FOR(g_path_get_basename)
@@ -164,16 +171,38 @@ const gchar *g_basename (const gchar *file_name);
#define g_dirname g_path_get_dirname
#endif
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_get_current_dir g_get_current_dir_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
gchar *g_get_current_dir (void);
+GLIB_AVAILABLE_IN_ALL
gchar *g_path_get_basename (const gchar *file_name) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_path_get_dirname (const gchar *file_name) G_GNUC_MALLOC;
+#ifdef G_OS_WIN32
+#define g_file_test g_file_test_utf8
+#define g_file_get_contents g_file_get_contents_utf8
+#define g_mkstemp g_mkstemp_utf8
+#define g_file_open_tmp g_file_open_tmp_utf8
+#define g_get_current_dir g_get_current_dir_utf8
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_test_utf8 (const gchar *filename,
+ GFileTest test);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_get_contents_utf8 (const gchar *filename,
+ gchar **contents,
+ gsize *length,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+gint g_mkstemp_utf8 (gchar *tmpl);
+GLIB_AVAILABLE_IN_ALL
+gint g_file_open_tmp_utf8 (const gchar *tmpl,
+ gchar **name_used,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+gchar *g_get_current_dir_utf8 (void);
+#endif /* G_OS_WIN32 */
+
G_END_DECLS
#endif /* __G_FILEUTILS_H__ */
diff --git a/glib/glib/ggettext.c b/glib/glib/ggettext.c
index c2d1ad5..56d752a 100644
--- a/glib/glib/ggettext.c
+++ b/glib/glib/ggettext.c
@@ -27,6 +27,8 @@
#include "config.h"
#include "ggettext.h"
+#include "glibintl.h"
+#include "glib-private.h"
#include "galloca.h"
#include "gthread.h"
@@ -333,10 +335,11 @@ _g_dgettext_should_translate (void)
* - If locale is "C", maybe user calls setlocale(LC_ALL,"") later.
* Continue with old behavior of translating.
*/
- if (0 != strcmp (default_domain, "messages") &&
+ if (!default_domain || !translator_comment || !translate_locale ||
+ (0 != strcmp (default_domain, "messages") &&
'\0' == *translator_comment &&
0 != strncmp (translate_locale, "en_", 3) &&
- 0 != strcmp (translate_locale, "C"))
+ 0 != strcmp (translate_locale, "C")))
should_translate = FALSE;
g_once_init_leave (&translate,
@@ -470,16 +473,21 @@ g_dngettext (const gchar *domain,
* easy-to-use form.
*
* In order to use these macros in an application, you must include
- * <filename>glib/gi18n.h</filename>. For use in a library, must include
+ * <filename>glib/gi18n.h</filename>. For use in a library, you must include
* <filename>glib/gi18n-lib.h</filename> <emphasis>after</emphasis> defining
* the GETTEXT_PACKAGE macro suitably for your library:
* |[
* &num;define GETTEXT_PACKAGE "gtk20"
* &num;include &lt;glib/gi18n-lib.h&gt;
* ]|
- * Note that you also have to call setlocale() and textdomain() (as well as
- * bindtextdomain() and bind_textdomain_codeset()) early on in your main()
- * to make gettext() work.
+ * For an application, note that you also have to call bindtextdomain(),
+ * bind_textdomain_codeset(), textdomain() and setlocale() early on in your
+ * main() to make gettext() work.
+ *
+ * For a library, you only have to call bindtextdomain() and
+ * bind_textdomain_codeset() in your initialization function. If your library
+ * doesn't have an initialization function, you can call the functions before
+ * the first translated message.
*
* The gettext manual covers details of how to set up message extraction
* with xgettext.
diff --git a/glib/glib/ggettext.h b/glib/glib/ggettext.h
index 54bbaa8..e1ef576 100644
--- a/glib/glib/ggettext.h
+++ b/glib/glib/ggettext.h
@@ -24,32 +24,38 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_GETTEXT_H__
+#define __G_GETTEXT_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_GETTEXT_H__
-#define __G_GETTEXT_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
const gchar *g_strip_context (const gchar *msgid,
const gchar *msgval) G_GNUC_FORMAT(1);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_dgettext (const gchar *domain,
const gchar *msgid) G_GNUC_FORMAT(2);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_dcgettext (const gchar *domain,
const gchar *msgid,
gint category) G_GNUC_FORMAT(2);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_dngettext (const gchar *domain,
const gchar *msgid,
const gchar *msgid_plural,
gulong n) G_GNUC_FORMAT(3);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_dpgettext (const gchar *domain,
const gchar *msgctxtid,
gsize msgidoffset) G_GNUC_FORMAT(2);
+GLIB_AVAILABLE_IN_ALL
const gchar *g_dpgettext2 (const gchar *domain,
const gchar *context,
const gchar *msgid) G_GNUC_FORMAT(3);
diff --git a/glib/glib/ghash.c b/glib/glib/ghash.c
index 3fc5b5a..9150f32 100644
--- a/glib/glib/ghash.c
+++ b/glib/glib/ghash.c
@@ -82,50 +82,14 @@
*
* To destroy a #GHashTable use g_hash_table_destroy().
*
- * <example>
- * <title>Using a GHashTable as a set</title>
- * <para>
- * A common use-case for hash tables is to store information about
- * a set of keys, without associating any particular value with each
+ * A common use-case for hash tables is to store information about a
+ * set of keys, without associating any particular value with each
* key. GHashTable optimizes one way of doing so: If you store only
* key-value pairs where key == value, then GHashTable does not
* allocate memory to store the values, which can be a considerable
- * space saving, if your set is large.
- * </para>
- * <programlisting>
- * GHashTable *
- * set_new (GHashFunc hash_func,
- * GEqualFunc equal_func,
- * GDestroyNotify destroy)
- * {
- * return g_hash_table_new_full (hash_func, equal_func, destroy, NULL);
- * }
- *
- * void
- * set_add (GHashTable *set,
- * gpointer element)
- * {
- * g_hash_table_replace (set, element, element);
- * }
- *
- * gboolean
- * set_contains (GHashTable *set,
- * gpointer element)
- * {
- * return g_hash_table_lookup_extended (set, element, NULL, NULL);
- * }
- *
- * gboolean
- * set_remove (GHashTable *set,
- * gpointer element)
- * {
- * return g_hash_table_remove (set, element);
- * }
- * </programlisting>
- * </example>
- *
- * As of version 2.32, there is also a g_hash_table_add() function to
- * add a key to a #GHashTable that is being used as a set.
+ * space saving, if your set is large. The functions
+ * g_hash_table_add() and g_hash_table_contains() are designed to be
+ * used when using #GHashTable this way.
*/
/**
@@ -870,34 +834,72 @@ static void
g_hash_table_insert_node (GHashTable *hash_table,
guint node_index,
guint key_hash,
- gpointer key,
- gpointer value,
+ gpointer new_key,
+ gpointer new_value,
gboolean keep_new_key,
gboolean reusing_key)
{
+ gboolean already_exists;
guint old_hash;
- gpointer old_key;
- gpointer old_value;
-
- if (G_UNLIKELY (hash_table->keys == hash_table->values && key != value))
- hash_table->values = g_memdup (hash_table->keys, sizeof (gpointer) * hash_table->size);
+ gpointer key_to_free = NULL;
+ gpointer value_to_free = NULL;
old_hash = hash_table->hashes[node_index];
- old_key = hash_table->keys[node_index];
- old_value = hash_table->values[node_index];
-
- if (HASH_IS_REAL (old_hash))
+ already_exists = HASH_IS_REAL (old_hash);
+
+ /* Proceed in three steps. First, deal with the key because it is the
+ * most complicated. Then consider if we need to split the table in
+ * two (because writing the value will result in the set invariant
+ * becoming broken). Then deal with the value.
+ *
+ * There are three cases for the key:
+ *
+ * - entry already exists in table, reusing key:
+ * free the just-passed-in new_key and use the existing value
+ *
+ * - entry already exists in table, not reusing key:
+ * free the entry in the table, use the new key
+ *
+ * - entry not already in table:
+ * use the new key, free nothing
+ *
+ * We update the hash at the same time...
+ */
+ if (already_exists)
{
+ /* Note: we must record the old value before writing the new key
+ * because we might change the value in the event that the two
+ * arrays are shared.
+ */
+ value_to_free = hash_table->values[node_index];
+
if (keep_new_key)
- hash_table->keys[node_index] = key;
- hash_table->values[node_index] = value;
+ {
+ key_to_free = hash_table->keys[node_index];
+ hash_table->keys[node_index] = new_key;
+ }
+ else
+ key_to_free = new_key;
}
else
{
- hash_table->keys[node_index] = key;
- hash_table->values[node_index] = value;
hash_table->hashes[node_index] = key_hash;
+ hash_table->keys[node_index] = new_key;
+ }
+
+ /* Step two: check if the value that we are about to write to the
+ * table is the same as the key in the same position. If it's not,
+ * split the table.
+ */
+ if (G_UNLIKELY (hash_table->keys == hash_table->values && hash_table->keys[node_index] != new_value))
+ hash_table->values = g_memdup (hash_table->keys, sizeof (gpointer) * hash_table->size);
+ /* Step 3: Actually do the write */
+ hash_table->values[node_index] = new_value;
+
+ /* Now, the bookkeeping... */
+ if (!already_exists)
+ {
hash_table->nnodes++;
if (HASH_IS_UNUSED (old_hash))
@@ -912,12 +914,12 @@ g_hash_table_insert_node (GHashTable *hash_table,
#endif
}
- if (HASH_IS_REAL (old_hash))
+ if (already_exists)
{
if (hash_table->key_destroy_func && !reusing_key)
- hash_table->key_destroy_func (keep_new_key ? old_key : key);
+ (* hash_table->key_destroy_func) (key_to_free);
if (hash_table->value_destroy_func)
- hash_table->value_destroy_func (old_value);
+ (* hash_table->value_destroy_func) (value_to_free);
}
}
@@ -1615,8 +1617,8 @@ g_hash_table_size (GHashTable *hash_table)
* g_hash_table_get_keys:
* @hash_table: a #GHashTable
*
- * Retrieves every key inside @hash_table. The returned data
- * is valid until @hash_table is modified.
+ * Retrieves every key inside @hash_table. The returned data is valid
+ * until changes to the hash release those keys.
*
* Return value: a #GList containing all the keys inside the hash
* table. The content of the list is owned by the hash table and
diff --git a/glib/glib/ghash.h b/glib/glib/ghash.h
index 3eb8912..19054bb 100644
--- a/glib/glib/ghash.h
+++ b/glib/glib/ghash.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_HASH_H__
+#define __G_HASH_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_HASH_H__
-#define __G_HASH_H__
-
#include <glib/gtypes.h>
#include <glib/glist.h>
@@ -55,64 +55,91 @@ struct _GHashTableIter
gpointer dummy6;
};
+GLIB_AVAILABLE_IN_ALL
GHashTable* g_hash_table_new (GHashFunc hash_func,
GEqualFunc key_equal_func);
+GLIB_AVAILABLE_IN_ALL
GHashTable* g_hash_table_new_full (GHashFunc hash_func,
GEqualFunc key_equal_func,
GDestroyNotify key_destroy_func,
GDestroyNotify value_destroy_func);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_destroy (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_insert (GHashTable *hash_table,
gpointer key,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_replace (GHashTable *hash_table,
gpointer key,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_add (GHashTable *hash_table,
gpointer key);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hash_table_remove (GHashTable *hash_table,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_remove_all (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hash_table_steal (GHashTable *hash_table,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_steal_all (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
gpointer g_hash_table_lookup (GHashTable *hash_table,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hash_table_contains (GHashTable *hash_table,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hash_table_lookup_extended (GHashTable *hash_table,
gconstpointer lookup_key,
gpointer *orig_key,
gpointer *value);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_foreach (GHashTable *hash_table,
GHFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gpointer g_hash_table_find (GHashTable *hash_table,
GHRFunc predicate,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
guint g_hash_table_foreach_remove (GHashTable *hash_table,
GHRFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
guint g_hash_table_foreach_steal (GHashTable *hash_table,
GHRFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
guint g_hash_table_size (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
GList * g_hash_table_get_keys (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
GList * g_hash_table_get_values (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_iter_init (GHashTableIter *iter,
GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hash_table_iter_next (GHashTableIter *iter,
gpointer *key,
gpointer *value);
+GLIB_AVAILABLE_IN_ALL
GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_iter_remove (GHashTableIter *iter);
GLIB_AVAILABLE_IN_2_30
void g_hash_table_iter_replace (GHashTableIter *iter,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_iter_steal (GHashTableIter *iter);
+GLIB_AVAILABLE_IN_ALL
GHashTable* g_hash_table_ref (GHashTable *hash_table);
+GLIB_AVAILABLE_IN_ALL
void g_hash_table_unref (GHashTable *hash_table);
#ifndef G_DISABLE_DEPRECATED
@@ -122,23 +149,33 @@ void g_hash_table_unref (GHashTable *hash_table);
/* Hash Functions
*/
+GLIB_AVAILABLE_IN_ALL
gboolean g_str_equal (gconstpointer v1,
gconstpointer v2);
+GLIB_AVAILABLE_IN_ALL
guint g_str_hash (gconstpointer v);
+GLIB_AVAILABLE_IN_ALL
gboolean g_int_equal (gconstpointer v1,
gconstpointer v2);
+GLIB_AVAILABLE_IN_ALL
guint g_int_hash (gconstpointer v);
+GLIB_AVAILABLE_IN_ALL
gboolean g_int64_equal (gconstpointer v1,
gconstpointer v2);
+GLIB_AVAILABLE_IN_ALL
guint g_int64_hash (gconstpointer v);
+GLIB_AVAILABLE_IN_ALL
gboolean g_double_equal (gconstpointer v1,
gconstpointer v2);
+GLIB_AVAILABLE_IN_ALL
guint g_double_hash (gconstpointer v);
+GLIB_AVAILABLE_IN_ALL
guint g_direct_hash (gconstpointer v) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_direct_equal (gconstpointer v1,
gconstpointer v2) G_GNUC_CONST;
diff --git a/glib/glib/ghmac.h b/glib/glib/ghmac.h
index d03d71f..94bc427 100644
--- a/glib/glib/ghmac.h
+++ b/glib/glib/ghmac.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_HMAC_H__
+#define __G_HMAC_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_HMAC_H__
-#define __G_HMAC_H__
-
#include <glib/gtypes.h>
#include "gchecksum.h"
diff --git a/glib/glib/ghook.h b/glib/glib/ghook.h
index e7292ea..45e1e27 100644
--- a/glib/glib/ghook.h
+++ b/glib/glib/ghook.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_HOOK_H__
+#define __G_HOOK_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_HOOK_H__
-#define __G_HOOK_H__
-
#include <glib/gmem.h>
G_BEGIN_DECLS
@@ -103,54 +103,73 @@ struct _GHook
/* --- prototypes --- */
/* callback maintenance functions */
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_init (GHookList *hook_list,
guint hook_size);
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_clear (GHookList *hook_list);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_alloc (GHookList *hook_list);
+GLIB_AVAILABLE_IN_ALL
void g_hook_free (GHookList *hook_list,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
GHook * g_hook_ref (GHookList *hook_list,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
void g_hook_unref (GHookList *hook_list,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hook_destroy (GHookList *hook_list,
gulong hook_id);
+GLIB_AVAILABLE_IN_ALL
void g_hook_destroy_link (GHookList *hook_list,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
void g_hook_prepend (GHookList *hook_list,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
void g_hook_insert_before (GHookList *hook_list,
GHook *sibling,
GHook *hook);
+GLIB_AVAILABLE_IN_ALL
void g_hook_insert_sorted (GHookList *hook_list,
GHook *hook,
GHookCompareFunc func);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_get (GHookList *hook_list,
gulong hook_id);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_find (GHookList *hook_list,
gboolean need_valids,
GHookFindFunc func,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_find_data (GHookList *hook_list,
gboolean need_valids,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_find_func (GHookList *hook_list,
gboolean need_valids,
gpointer func);
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_find_func_data (GHookList *hook_list,
gboolean need_valids,
gpointer func,
gpointer data);
/* return the first valid hook, and increment its reference count */
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_first_valid (GHookList *hook_list,
gboolean may_be_in_call);
/* return the next valid hook with incremented reference count, and
* decrement the reference count of the original hook
*/
+GLIB_AVAILABLE_IN_ALL
GHook* g_hook_next_valid (GHookList *hook_list,
GHook *hook,
gboolean may_be_in_call);
/* GHookCompareFunc implementation to insert hooks sorted by their id */
+GLIB_AVAILABLE_IN_ALL
gint g_hook_compare_ids (GHook *new_hook,
GHook *sibling);
/* convenience macros */
@@ -158,19 +177,23 @@ gint g_hook_compare_ids (GHook *new_hook,
g_hook_insert_before ((hook_list), NULL, (hook))
/* invoke all valid hooks with the (*GHookFunc) signature.
*/
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_invoke (GHookList *hook_list,
gboolean may_recurse);
/* invoke all valid hooks with the (*GHookCheckFunc) signature,
* and destroy the hook if FALSE is returned.
*/
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_invoke_check (GHookList *hook_list,
gboolean may_recurse);
/* invoke a marshaller on all valid hooks.
*/
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_marshal (GHookList *hook_list,
gboolean may_recurse,
GHookMarshaller marshaller,
gpointer marshal_data);
+GLIB_AVAILABLE_IN_ALL
void g_hook_list_marshal_check (GHookList *hook_list,
gboolean may_recurse,
GHookCheckMarshaller marshaller,
diff --git a/glib/glib/ghostutils.h b/glib/glib/ghostutils.h
index 0349da3..dfb64e5 100644
--- a/glib/glib/ghostutils.h
+++ b/glib/glib/ghostutils.h
@@ -17,22 +17,27 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_HOST_UTILS_H__
+#define __G_HOST_UTILS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_HOST_UTILS_H__
-#define __G_HOST_UTILS_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
gboolean g_hostname_is_non_ascii (const gchar *hostname);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hostname_is_ascii_encoded (const gchar *hostname);
+GLIB_AVAILABLE_IN_ALL
gboolean g_hostname_is_ip_address (const gchar *hostname);
+GLIB_AVAILABLE_IN_ALL
gchar *g_hostname_to_ascii (const gchar *hostname);
+GLIB_AVAILABLE_IN_ALL
gchar *g_hostname_to_unicode (const gchar *hostname);
G_END_DECLS
diff --git a/glib/glib/giochannel.c b/glib/glib/giochannel.c
index 32099f7..84e9d76 100644
--- a/glib/glib/giochannel.c
+++ b/glib/glib/giochannel.c
@@ -689,12 +689,13 @@ g_io_add_watch_full (GIOChannel *channel,
* @source: the #GIOChannel event source
* @condition: the condition which has been satisfied
* @data: user data set in g_io_add_watch() or g_io_add_watch_full()
- * @Returns: the function should return %FALSE if the event source
- * should be removed
*
* Specifies the type of function passed to g_io_add_watch() or
* g_io_add_watch_full(), which is called when the requested condition
* on a #GIOChannel is satisfied.
+ *
+ * Returns: the function should return %FALSE if the event source
+ * should be removed
**/
/**
* GIOCondition:
@@ -823,9 +824,11 @@ g_io_channel_error_from_errno (gint en)
#endif
#ifdef EOVERFLOW
+#if EOVERFLOW != EFBIG
case EOVERFLOW:
return G_IO_CHANNEL_ERROR_OVERFLOW;
#endif
+#endif
#ifdef EPIPE
case EPIPE:
@@ -878,10 +881,10 @@ g_io_channel_get_buffer_size (GIOChannel *channel)
/**
* g_io_channel_set_line_term:
* @channel: a #GIOChannel
- * @line_term: The line termination string. Use %NULL for autodetect.
- * Autodetection breaks on "\n", "\r\n", "\r", "\0", and
- * the Unicode paragraph separator. Autodetection should
- * not be used for anything other than file-based channels.
+ * @line_term: (allow-none): The line termination string. Use %NULL for
+ * autodetect. Autodetection breaks on "\n", "\r\n", "\r", "\0",
+ * and the Unicode paragraph separator. Autodetection should not be
+ * used for anything other than file-based channels.
* @length: The length of the termination string. If -1 is passed, the
* string is assumed to be nul-terminated. This option allows
* termination strings with embedded nuls.
@@ -1282,7 +1285,7 @@ g_io_channel_get_buffered (GIOChannel *channel)
/**
* g_io_channel_set_encoding:
* @channel: a #GIOChannel
- * @encoding: the encoding type
+ * @encoding: (allow-none): the encoding type
* @error: location to store an error of type #GConvertError
*
* Sets the encoding for the input/output of the channel.
@@ -1649,12 +1652,12 @@ reencode:
/**
* g_io_channel_read_line:
* @channel: a #GIOChannel
- * @str_return: The line read from the #GIOChannel, including the
+ * @str_return: (out): The line read from the #GIOChannel, including the
* line terminator. This data should be freed with g_free()
* when no longer needed. This is a nul-terminated string.
* If a @length of zero is returned, this will be %NULL instead.
- * @length: (allow-none): location to store length of the read data, or %NULL
- * @terminator_pos: (allow-none): location to store position of line terminator, or %NULL
+ * @length: (allow-none) (out): location to store length of the read data, or %NULL
+ * @terminator_pos: (allow-none) (out): location to store position of line terminator, or %NULL
* @error: A location to return an error of type #GConvertError
* or #GIOChannelError
*
@@ -1913,12 +1916,12 @@ done:
/**
* g_io_channel_read_to_end:
* @channel: a #GIOChannel
- * @str_return: Location to store a pointer to a string holding
- * the remaining data in the #GIOChannel. This data should
- * be freed with g_free() when no longer needed. This
- * data is terminated by an extra nul character, but there
- * may be other nuls in the intervening data.
- * @length: location to store length of the data
+ * @str_return: (out) (array length=length) (element-type guint8): Location to
+ * store a pointer to a string holding the remaining data in the
+ * #GIOChannel. This data should be freed with g_free() when no
+ * longer needed. This data is terminated by an extra nul
+ * character, but there may be other nuls in the intervening data.
+ * @length: (out): location to store length of the data
* @error: location to return an error of type #GConvertError
* or #GIOChannelError
*
@@ -1994,11 +1997,12 @@ g_io_channel_read_to_end (GIOChannel *channel,
/**
* g_io_channel_read_chars:
* @channel: a #GIOChannel
- * @buf: a buffer to read data into
- * @count: the size of the buffer. Note that the buffer may not be
+ * @buf: (out caller-allocates) (array length=count) (element-type guint8):
+ * a buffer to read data into
+ * @count: (in): the size of the buffer. Note that the buffer may not be
* complelely filled even if there is data in the buffer if the
* remaining data is not a complete character.
- * @bytes_read: (allow-none): The number of bytes read. This may be
+ * @bytes_read: (allow-none) (out): The number of bytes read. This may be
* zero even on success if count < 6 and the channel's encoding
* is non-%NULL. This indicates that the next UTF-8 character is
* too wide for the buffer.
@@ -2113,7 +2117,7 @@ g_io_channel_read_chars (GIOChannel *channel,
/**
* g_io_channel_read_unichar:
* @channel: a #GIOChannel
- * @thechar: a location to return a character
+ * @thechar: (out): a location to return a character
* @error: a location to return an error of type #GConvertError
* or #GIOChannelError
*
@@ -2174,10 +2178,10 @@ g_io_channel_read_unichar (GIOChannel *channel,
/**
* g_io_channel_write_chars:
* @channel: a #GIOChannel
- * @buf: a buffer to write data from
+ * @buf: (array) (element-type guint8): a buffer to write data from
* @count: the size of the buffer. If -1, the buffer
* is taken to be a nul-terminated string.
- * @bytes_written: The number of bytes written. This can be nonzero
+ * @bytes_written: (out): The number of bytes written. This can be nonzero
* even if the return value is not %G_IO_STATUS_NORMAL.
* If the return value is %G_IO_STATUS_NORMAL and the
* channel is blocking, this will always be equal
@@ -2580,8 +2584,5 @@ g_io_channel_write_unichar (GIOChannel *channel,
*
* Error codes returned by #GIOChannel operations.
**/
-GQuark
-g_io_channel_error_quark (void)
-{
- return g_quark_from_static_string ("g-io-channel-error-quark");
-}
+
+G_DEFINE_QUARK (g-io-channel-error-quark, g_io_channel_error)
diff --git a/glib/glib/giochannel.h b/glib/glib/giochannel.h
index 8d3f2d7..75fa1ef 100644
--- a/glib/glib/giochannel.h
+++ b/glib/glib/giochannel.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_IOCHANNEL_H__
+#define __G_IOCHANNEL_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_IOCHANNEL_H__
-#define __G_IOCHANNEL_H__
-
#include <glib/gconvert.h>
#include <glib/gmain.h>
#include <glib/gstring.h>
@@ -83,31 +83,19 @@ typedef enum
G_SEEK_END
} GSeekType;
-typedef enum /*< flags >*/
-{
- G_IO_IN GLIB_SYSDEF_POLLIN,
- G_IO_OUT GLIB_SYSDEF_POLLOUT,
- G_IO_PRI GLIB_SYSDEF_POLLPRI,
- G_IO_ERR GLIB_SYSDEF_POLLERR,
- G_IO_HUP GLIB_SYSDEF_POLLHUP,
- G_IO_NVAL GLIB_SYSDEF_POLLNVAL
-} GIOCondition;
-
typedef enum
{
G_IO_FLAG_APPEND = 1 << 0,
G_IO_FLAG_NONBLOCK = 1 << 1,
G_IO_FLAG_IS_READABLE = 1 << 2, /* Read only flag */
G_IO_FLAG_IS_WRITABLE = 1 << 3, /* Read only flag */
+ G_IO_FLAG_IS_WRITEABLE = 1 << 3, /* Misspelling in 2.29.10 and earlier */
G_IO_FLAG_IS_SEEKABLE = 1 << 4, /* Read only flag */
G_IO_FLAG_MASK = (1 << 5) - 1,
G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
} GIOFlags;
-/* Misspelling in enum in 2.29.10 and earlier */
-#define G_IO_FLAG_IS_WRITEABLE (G_IO_FLAG_IS_WRITABLE)
-
struct _GIOChannel
{
/*< private >*/
@@ -169,11 +157,14 @@ struct _GIOFuncs
GIOFlags (*io_get_flags) (GIOChannel *channel);
};
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_init (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_ref (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_unref (GIOChannel *channel);
-GLIB_DEPRECATED_FOR(g_io_channel_read_for)
+GLIB_DEPRECATED_FOR(g_io_channel_read_chars)
GIOError g_io_channel_read (GIOChannel *channel,
gchar *buf,
gsize count,
@@ -193,17 +184,21 @@ GIOError g_io_channel_seek (GIOChannel *channel,
GLIB_DEPRECATED_FOR(g_io_channel_shutdown)
void g_io_channel_close (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_shutdown (GIOChannel *channel,
gboolean flush,
GError **err);
+GLIB_AVAILABLE_IN_ALL
guint g_io_add_watch_full (GIOChannel *channel,
gint priority,
GIOCondition condition,
GIOFunc func,
gpointer user_data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
GSource * g_io_create_watch (GIOChannel *channel,
GIOCondition condition);
+GLIB_AVAILABLE_IN_ALL
guint g_io_add_watch (GIOChannel *channel,
GIOCondition condition,
GIOFunc func,
@@ -212,77 +207,98 @@ guint g_io_add_watch (GIOChannel *channel,
/* character encoding conversion involved functions.
*/
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_buffer_size (GIOChannel *channel,
gsize size);
+GLIB_AVAILABLE_IN_ALL
gsize g_io_channel_get_buffer_size (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOCondition g_io_channel_get_buffer_condition (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_set_flags (GIOChannel *channel,
GIOFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOFlags g_io_channel_get_flags (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_line_term (GIOChannel *channel,
const gchar *line_term,
gint length);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_io_channel_get_line_term (GIOChannel *channel,
gint *length);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_buffered (GIOChannel *channel,
gboolean buffered);
+GLIB_AVAILABLE_IN_ALL
gboolean g_io_channel_get_buffered (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_set_encoding (GIOChannel *channel,
const gchar *encoding,
GError **error);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_io_channel_get_encoding (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_set_close_on_unref (GIOChannel *channel,
gboolean do_close);
+GLIB_AVAILABLE_IN_ALL
gboolean g_io_channel_get_close_on_unref (GIOChannel *channel);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_flush (GIOChannel *channel,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_line (GIOChannel *channel,
gchar **str_return,
gsize *length,
gsize *terminator_pos,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_line_string (GIOChannel *channel,
GString *buffer,
gsize *terminator_pos,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_to_end (GIOChannel *channel,
gchar **str_return,
gsize *length,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_chars (GIOChannel *channel,
gchar *buf,
gsize count,
gsize *bytes_read,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_read_unichar (GIOChannel *channel,
gunichar *thechar,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_write_chars (GIOChannel *channel,
const gchar *buf,
gssize count,
gsize *bytes_written,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_write_unichar (GIOChannel *channel,
gunichar thechar,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GIOStatus g_io_channel_seek_position (GIOChannel *channel,
gint64 offset,
GSeekType type,
GError **error);
-#ifdef G_OS_WIN32
-#define g_io_channel_new_file g_io_channel_new_file_utf8
-#endif
-
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_new_file (const gchar *filename,
const gchar *mode,
GError **error);
/* Error handling */
+GLIB_AVAILABLE_IN_ALL
GQuark g_io_channel_error_quark (void);
+GLIB_AVAILABLE_IN_ALL
GIOChannelError g_io_channel_error_from_errno (gint en);
/* On Unix, IO channels created with this function for any file
@@ -303,7 +319,9 @@ GIOChannelError g_io_channel_error_from_errno (gint en);
* corresponding concept is file HANDLE. There isn't as of yet a way to
* get GIOChannels for Win32 file HANDLEs.
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_unix_new (int fd);
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_unix_get_fd (GIOChannel *channel);
@@ -324,6 +342,7 @@ GLIB_VAR GSourceFuncs g_io_watch_funcs;
* from the underlying file descriptor. For SOCKETs, it is possible to call
* recv().
*/
+GLIB_AVAILABLE_IN_ALL
void g_io_channel_win32_make_pollfd (GIOChannel *channel,
GIOCondition condition,
GPollFD *fd);
@@ -331,6 +350,7 @@ void g_io_channel_win32_make_pollfd (GIOChannel *channel,
/* This can be used to wait a until at least one of the channels is readable.
* On Unix you would do a select() on the file descriptors of the channels.
*/
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_win32_poll (GPollFD *fds,
gint n_fds,
gint timeout_);
@@ -341,8 +361,10 @@ gint g_io_channel_win32_poll (GPollFD *fds,
* pointer, like the guint in the traditional prototype. We can't use
* intptr_t as that is not portable enough.
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_win32_new_messages (gsize hwnd);
#else
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
#endif
@@ -355,9 +377,11 @@ GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
* the file descriptor should be done by this internal GLib
* thread. Your code should call only g_io_channel_read_chars().
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel* g_io_channel_win32_new_fd (gint fd);
/* Get the C runtime file descriptor of a channel. */
+GLIB_AVAILABLE_IN_ALL
gint g_io_channel_win32_get_fd (GIOChannel *channel);
/* Create an IO channel for a winsock socket. The parameter should be
@@ -365,8 +389,25 @@ gint g_io_channel_win32_get_fd (GIOChannel *channel);
* you can use normal recv() or recvfrom() on sockets even if GLib
* is polling them.
*/
+GLIB_AVAILABLE_IN_ALL
GIOChannel *g_io_channel_win32_new_socket (gint socket);
+GLIB_DEPRECATED_FOR(g_io_channel_win32_new_socket)
+GIOChannel *g_io_channel_win32_new_stream_socket (gint socket);
+
+GLIB_AVAILABLE_IN_ALL
+void g_io_channel_win32_set_debug (GIOChannel *channel,
+ gboolean flag);
+
+#endif
+
+#ifdef G_OS_WIN32
+#define g_io_channel_new_file g_io_channel_new_file_utf8
+
+GLIB_AVAILABLE_IN_ALL
+GIOChannel *g_io_channel_new_file_utf8 (const gchar *filename,
+ const gchar *mode,
+ GError **error);
#endif
G_END_DECLS
diff --git a/glib/glib/giounix.c b/glib/glib/giounix.c
index 969c3cc..517e36b 100644
--- a/glib/glib/giounix.c
+++ b/glib/glib/giounix.c
@@ -42,6 +42,7 @@
#include <errno.h>
#include <string.h>
#include <fcntl.h>
+#include <glib/gstdio.h>
#include "giochannel.h"
@@ -525,12 +526,7 @@ g_io_channel_new_file (const gchar *filename,
create_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
- do
- {
- fid = open (filename, flags, create_mode);
- }
- while (fid == -1 && errno == EINTR);
-
+ fid = g_open (filename, flags, create_mode);
if (fid == -1)
{
int err = errno;
@@ -588,7 +584,6 @@ g_io_channel_new_file (const gchar *filename,
/**
* g_io_channel_unix_new:
* @fd: a file descriptor.
- * @Returns: a new #GIOChannel.
*
* Creates a new #GIOChannel given a file descriptor. On UNIX systems
* this works for plain files, pipes, and sockets.
@@ -610,6 +605,8 @@ g_io_channel_new_file (const gchar *filename,
* in case the argument you pass to this function happens to be both a
* valid file descriptor and socket. If that happens a warning is
* issued, and GLib assumes that it is the file descriptor you mean.
+ *
+ * Returns: a new #GIOChannel.
**/
GIOChannel *
g_io_channel_unix_new (gint fd)
@@ -643,12 +640,13 @@ g_io_channel_unix_new (gint fd)
/**
* g_io_channel_unix_get_fd:
* @channel: a #GIOChannel, created with g_io_channel_unix_new().
- * @Returns: the file descriptor of the #GIOChannel.
*
* Returns the file descriptor of the #GIOChannel.
*
* On Windows this function returns the file descriptor or socket of
* the #GIOChannel.
+ *
+ * Returns: the file descriptor of the #GIOChannel.
**/
gint
g_io_channel_unix_get_fd (GIOChannel *channel)
diff --git a/glib/glib/giowin32.c b/glib/glib/giowin32.c
index d39a4b2..72cd84b 100644
--- a/glib/glib/giowin32.c
+++ b/glib/glib/giowin32.c
@@ -1625,7 +1625,8 @@ g_io_channel_new_file (const gchar *filename,
MODE_W = 1 << 1,
MODE_A = 1 << 2,
MODE_PLUS = 1 << 3,
- } mode_num;
+ };
+ int mode_num;
g_return_val_if_fail (filename != NULL, NULL);
g_return_val_if_fail (mode != NULL, NULL);
@@ -1972,12 +1973,13 @@ static GIOFuncs win32_channel_sock_funcs = {
/**
* g_io_channel_win32_new_messages:
* @hwnd: a window handle.
- * @Returns: a new #GIOChannel.
*
* Creates a new #GIOChannel given a window handle on Windows.
*
* This function creates a #GIOChannel that can be used to poll for
* Windows messages for the window in question.
+ *
+ * Returns: a new #GIOChannel.
**/
GIOChannel *
#if GLIB_SIZEOF_VOID_P == 8
@@ -2045,7 +2047,6 @@ g_io_channel_win32_new_fd_internal (gint fd,
/**
* g_io_channel_win32_new_fd:
* @fd: a C library file descriptor.
- * @Returns: a new #GIOChannel.
*
* Creates a new #GIOChannel given a file descriptor on Windows. This
* works for file descriptors from the C runtime.
@@ -2069,6 +2070,8 @@ g_io_channel_win32_new_fd_internal (gint fd,
* thread. Your code should call only g_io_channel_read().
*
* This function is available only in GLib on Windows.
+ *
+ * Returns: a new #GIOChannel.
**/
GIOChannel *
g_io_channel_win32_new_fd (gint fd)
@@ -2095,7 +2098,6 @@ g_io_channel_win32_get_fd (GIOChannel *channel)
/**
* g_io_channel_win32_new_socket:
* @socket: a Winsock socket
- * @Returns: a new #GIOChannel
*
* Creates a new #GIOChannel given a socket on Windows.
*
@@ -2105,6 +2107,8 @@ g_io_channel_win32_get_fd (GIOChannel *channel)
* Polling a #GSource created to watch a channel for a socket puts the
* socket in non-blocking mode. This is a side-effect of the
* implementation and unavoidable.
+ *
+ * Returns: a new #GIOChannel
**/
GIOChannel *
g_io_channel_win32_new_socket (int socket)
diff --git a/glib/glib/gkeyfile.c b/glib/glib/gkeyfile.c
index 98adf99..ae20689 100644
--- a/glib/glib/gkeyfile.c
+++ b/glib/glib/gkeyfile.c
@@ -42,7 +42,9 @@
#ifdef G_OS_WIN32
#include <io.h>
+#undef fstat
#define fstat(a,b) _fstati64(a,b)
+#undef stat
#define stat _stati64
#ifndef S_ISREG
@@ -554,12 +556,7 @@ static void g_key_file_parse_data (GKeyFile
static void g_key_file_flush_parse_buffer (GKeyFile *key_file,
GError **error);
-
-GQuark
-g_key_file_error_quark (void)
-{
- return g_quark_from_static_string ("g-key-file-error-quark");
-}
+G_DEFINE_QUARK (g-key-file-error-quark, g_key_file_error)
static void
g_key_file_init (GKeyFile *key_file)
@@ -861,7 +858,7 @@ g_key_file_load_from_file (GKeyFile *key_file,
/**
* g_key_file_load_from_data:
* @key_file: an empty #GKeyFile struct
- * @data: (length length): key file loaded in memory
+ * @data: key file loaded in memory
* @length: the length of @data in bytes (or -1 if data is nul-terminated)
* @flags: flags from #GKeyFileFlags
* @error: return location for a #GError, or %NULL
diff --git a/glib/glib/gkeyfile.h b/glib/glib/gkeyfile.h
index 998bb7a..b37070e 100644
--- a/glib/glib/gkeyfile.h
+++ b/glib/glib/gkeyfile.h
@@ -20,13 +20,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_KEY_FILE_H__
+#define __G_KEY_FILE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_KEY_FILE_H__
-#define __G_KEY_FILE_H__
-
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -43,6 +43,7 @@ typedef enum
#define G_KEY_FILE_ERROR g_key_file_error_quark()
+GLIB_AVAILABLE_IN_ALL
GQuark g_key_file_error_quark (void);
typedef struct _GKeyFile GKeyFile;
@@ -54,184 +55,230 @@ typedef enum
G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
} GKeyFileFlags;
+GLIB_AVAILABLE_IN_ALL
GKeyFile *g_key_file_new (void);
+GLIB_AVAILABLE_IN_ALL
GKeyFile *g_key_file_ref (GKeyFile *key_file);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_unref (GKeyFile *key_file);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_free (GKeyFile *key_file);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_list_separator (GKeyFile *key_file,
gchar separator);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_load_from_file (GKeyFile *key_file,
const gchar *file,
GKeyFileFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_load_from_data (GKeyFile *key_file,
const gchar *data,
gsize length,
GKeyFileFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
const gchar *file,
const gchar **search_dirs,
gchar **full_path,
GKeyFileFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
const gchar *file,
gchar **full_path,
GKeyFileFlags flags,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_to_data (GKeyFile *key_file,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_get_start_group (GKeyFile *key_file) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar **g_key_file_get_groups (GKeyFile *key_file,
gsize *length) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar **g_key_file_get_keys (GKeyFile *key_file,
const gchar *group_name,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_has_group (GKeyFile *key_file,
const gchar *group_name);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_has_key (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_get_value (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_value (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *value);
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_get_string (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_string (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *string);
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_get_locale_string (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *locale,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_locale_string (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *locale,
const gchar *string);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_get_boolean (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_boolean (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gboolean value);
+GLIB_AVAILABLE_IN_ALL
gint g_key_file_get_integer (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_integer (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gint value);
+GLIB_AVAILABLE_IN_ALL
gint64 g_key_file_get_int64 (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_int64 (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gint64 value);
+GLIB_AVAILABLE_IN_ALL
guint64 g_key_file_get_uint64 (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_uint64 (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
guint64 value);
+GLIB_AVAILABLE_IN_ALL
gdouble g_key_file_get_double (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_double (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gdouble value);
+GLIB_AVAILABLE_IN_ALL
gchar **g_key_file_get_string_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_string_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar * const list[],
gsize length);
+GLIB_AVAILABLE_IN_ALL
gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *locale,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_locale_string_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *locale,
const gchar * const list[],
gsize length);
+GLIB_AVAILABLE_IN_ALL
gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_boolean_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gboolean list[],
gsize length);
+GLIB_AVAILABLE_IN_ALL
gint *g_key_file_get_integer_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_double_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gdouble list[],
gsize length);
+GLIB_AVAILABLE_IN_ALL
gdouble *g_key_file_get_double_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gsize *length,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_key_file_set_integer_list (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
gint list[],
gsize length);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_set_comment (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
const gchar *comment,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gchar *g_key_file_get_comment (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_remove_comment (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_remove_key (GKeyFile *key_file,
const gchar *group_name,
const gchar *key,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_key_file_remove_group (GKeyFile *key_file,
const gchar *group_name,
GError **error);
@@ -258,6 +305,8 @@ gboolean g_key_file_remove_group (GKeyFile *key_file,
#define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify"
#define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
#define G_KEY_FILE_DESKTOP_KEY_URL "URL"
+#define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
+#define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions"
#define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application"
#define G_KEY_FILE_DESKTOP_TYPE_LINK "Link"
diff --git a/glib/glib/glib-init.c b/glib/glib/glib-init.c
index 3ec89a0..8f45306 100644
--- a/glib/glib/glib-init.c
+++ b/glib/glib/glib-init.c
@@ -223,6 +223,10 @@ glib_init (void)
#if defined (G_OS_WIN32)
+BOOL WINAPI DllMain (HINSTANCE hinstDLL,
+ DWORD fdwReason,
+ LPVOID lpvReserved);
+
HMODULE glib_dll;
#endif
@@ -239,12 +243,16 @@ DllMain (HINSTANCE hinstDLL,
case DLL_PROCESS_ATTACH:
glib_dll = hinstDLL;
g_clock_win32_init ();
+#ifdef THREADS_WIN32
g_thread_win32_init ();
+#endif
glib_init ();
break;
case DLL_THREAD_DETACH:
+#ifdef THREADS_WIN32
g_thread_win32_thread_detach ();
+#endif
break;
default:
diff --git a/glib/glib/glib-init.h b/glib/glib/glib-init.h
index bf1ecd0..016465f 100644
--- a/glib/glib/glib-init.h
+++ b/glib/glib/glib-init.h
@@ -24,17 +24,17 @@
#include "gmessages.h"
-G_GNUC_INTERNAL extern GLogLevelFlags g_log_always_fatal;
-G_GNUC_INTERNAL extern GLogLevelFlags g_log_msg_prefix;
+extern GLogLevelFlags g_log_always_fatal;
+extern GLogLevelFlags g_log_msg_prefix;
GLIB_VAR gboolean g_mem_gc_friendly;
#ifdef G_OS_WIN32
#include <windows.h>
-G_GNUC_INTERNAL void g_thread_win32_thread_detach (void);
-G_GNUC_INTERNAL void g_thread_win32_init (void);
-G_GNUC_INTERNAL void g_clock_win32_init (void);
-G_GNUC_INTERNAL extern HMODULE glib_dll;
+void g_thread_win32_thread_detach (void);
+void g_thread_win32_init (void);
+void g_clock_win32_init (void);
+extern HMODULE glib_dll;
#endif
#endif /* __GLIB_INIT_H__ */
diff --git a/glib/glib/glib-mirroring-tab/gen-mirroring-tab.c b/glib/glib/glib-mirroring-tab/gen-mirroring-tab.c
index 6b16376..253d143 100644
--- a/glib/glib/glib-mirroring-tab/gen-mirroring-tab.c
+++ b/glib/glib/glib-mirroring-tab/gen-mirroring-tab.c
@@ -157,9 +157,9 @@ read_data (
{
FILE *f;
- fprintf (stderr, "Reading `%s'\n", data_file_name);
+ fprintf (stderr, "Reading '%s'\n", data_file_name);
if (!(f = fopen (data_file_name, "rt")))
- die2 ("error: cannot open `%s' for reading", data_file_name);
+ die2 ("error: cannot open '%s' for reading", data_file_name);
if (!strcmp (data_file_type, "BidiMirroring.txt"))
read_bidi_mirroring_txt (f);
@@ -179,7 +179,7 @@ gen_mirroring_tab (
const char *key_type;
fprintf (stderr,
- "Generating `" outputname "', it may take up to a few minutes\n");
+ "Generating '" outputname "', it may take up to a few minutes\n");
printf ("/* " outputname "\n * generated by " appname " "
"\n" " * from the file %s of */\n\n", data_file_type);
diff --git a/glib/glib/glib-private.c b/glib/glib/glib-private.c
index 3946e77..c357502 100644
--- a/glib/glib/glib-private.c
+++ b/glib/glib/glib-private.c
@@ -19,6 +19,8 @@
* Author: Colin Walters <walters@verbum.org>
*/
+#include "config.h"
+
#include "glib-private.h"
/**
@@ -38,7 +40,13 @@ glib__private__ (void)
g_wakeup_signal,
g_wakeup_acknowledge,
- g_get_worker_context
+ g_get_worker_context,
+
+ g_check_setuid,
+ g_main_context_new_with_next_id,
+
+ g_dir_open_with_errno,
+ g_dir_new_from_dirp
};
return &table;
diff --git a/glib/glib/glib-private.h b/glib/glib/glib-private.h
index fde0be8..44cbf3d 100644
--- a/glib/glib/glib-private.h
+++ b/glib/glib/glib-private.h
@@ -23,8 +23,18 @@
#include <glib.h>
#include "gwakeup.h"
-G_GNUC_INTERNAL
GMainContext * g_get_worker_context (void);
+gboolean g_check_setuid (void);
+GMainContext * g_main_context_new_with_next_id (guint next_id);
+
+#ifdef G_OS_WIN32
+gchar *_glib_get_dll_directory (void);
+GLIB_AVAILABLE_IN_ALL
+gchar *_glib_get_locale_dir (void);
+#endif
+
+GDir * g_dir_open_with_errno (const gchar *path, guint flags);
+GDir * g_dir_new_from_dirp (gpointer dirp);
#define GLIB_PRIVATE_CALL(symbol) (glib__private__()->symbol)
@@ -39,9 +49,18 @@ typedef struct {
/* See gmain.c */
GMainContext * (* g_get_worker_context) (void);
+
+ gboolean (* g_check_setuid) (void);
+ GMainContext * (* g_main_context_new_with_next_id) (guint next_id);
+
+ GDir * (* g_dir_open_with_errno) (const gchar *path,
+ guint flags);
+ GDir * (* g_dir_new_from_dirp) (gpointer dirp);
+
/* Add other private functions here, initialize them in glib-private.c */
} GLibPrivateVTable;
+GLIB_AVAILABLE_IN_ALL
GLibPrivateVTable *glib__private__ (void);
#endif /* __G_MAIN_H__ */
diff --git a/glib/glib/glib-unix.c b/glib/glib/glib-unix.c
index b26609a..8f1fe1c 100644
--- a/glib/glib/glib-unix.c
+++ b/glib/glib/glib-unix.c
@@ -23,6 +23,11 @@
#include "config.h"
+/* To make bionic export pipe2() */
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
#include "glib-unix.h"
#include "gmain-internal.h"
@@ -43,11 +48,7 @@
* "glib-unix.h" header.
*/
-GQuark
-g_unix_error_quark (void)
-{
- return g_quark_from_static_string ("g-unix-error-quark");
-}
+G_DEFINE_QUARK (g-unix-error-quark, g_unix_error)
static gboolean
g_unix_set_error_from_errno (GError **error,
@@ -109,7 +110,11 @@ g_unix_open_pipe (int *fds,
ecode = pipe (fds);
if (ecode == -1)
return g_unix_set_error_from_errno (error, errno);
- ecode = fcntl (fds[0], flags);
+
+ if (flags == 0)
+ return TRUE;
+
+ ecode = fcntl (fds[0], F_SETFD, flags);
if (ecode == -1)
{
int saved_errno = errno;
@@ -117,7 +122,7 @@ g_unix_open_pipe (int *fds,
close (fds[1]);
return g_unix_set_error_from_errno (error, saved_errno);
}
- ecode = fcntl (fds[1], flags);
+ ecode = fcntl (fds[1], F_SETFD, flags);
if (ecode == -1)
{
int saved_errno = errno;
@@ -179,17 +184,20 @@ g_unix_set_fd_nonblocking (gint fd,
#endif
}
-
/**
* g_unix_signal_source_new:
* @signum: A signal number
*
* Create a #GSource that will be dispatched upon delivery of the UNIX
- * signal @signum. Currently only <literal>SIGHUP</literal>,
- * <literal>SIGINT</literal>, and <literal>SIGTERM</literal> can
- * be monitored. Note that unlike the UNIX default, all sources which
- * have created a watch will be dispatched, regardless of which
- * underlying thread invoked g_unix_signal_source_new().
+ * signal @signum. In GLib versions before 2.36, only
+ * <literal>SIGHUP</literal>, <literal>SIGINT</literal>,
+ * <literal>SIGTERM</literal> can be monitored. In GLib 2.36,
+ * <literal>SIGUSR1</literal> and <literal>SIGUSR2</literal> were
+ * added.
+ *
+ * Note that unlike the UNIX default, all sources which have created a
+ * watch will be dispatched, regardless of which underlying thread
+ * invoked g_unix_signal_source_new().
*
* For example, an effective use of this function is to handle <literal>SIGTERM</literal>
* cleanly; flushing any outstanding files, and then calling
@@ -213,7 +221,8 @@ g_unix_set_fd_nonblocking (gint fd,
GSource *
g_unix_signal_source_new (int signum)
{
- g_return_val_if_fail (signum == SIGHUP || signum == SIGINT || signum == SIGTERM, NULL);
+ g_return_val_if_fail (signum == SIGHUP || signum == SIGINT || signum == SIGTERM ||
+ signum == SIGUSR1 || signum == SIGUSR2, NULL);
return _g_main_create_unix_signal_watch (signum);
}
@@ -233,6 +242,7 @@ g_unix_signal_source_new (int signum)
*
* Returns: An ID (greater than 0) for the event source
*
+ * Rename to: g_unix_signal_add
* Since: 2.30
*/
guint
@@ -278,3 +288,142 @@ g_unix_signal_add (int signum,
{
return g_unix_signal_add_full (G_PRIORITY_DEFAULT, signum, handler, user_data, NULL);
}
+
+typedef struct
+{
+ GSource source;
+
+ gint fd;
+ gpointer tag;
+} GUnixFDSource;
+
+static gboolean
+g_unix_fd_source_dispatch (GSource *source,
+ GSourceFunc callback,
+ gpointer user_data)
+{
+ GUnixFDSource *fd_source = (GUnixFDSource *) source;
+ GUnixFDSourceFunc func = (GUnixFDSourceFunc) callback;
+
+ if (!callback)
+ {
+ g_warning ("GUnixFDSource dispatched without callback\n"
+ "You must call g_source_set_callback().");
+ return FALSE;
+ }
+
+ return (* func) (fd_source->fd, g_source_query_unix_fd (source, fd_source->tag), user_data);
+}
+
+GSourceFuncs g_unix_fd_source_funcs = {
+ NULL, NULL, g_unix_fd_source_dispatch, NULL
+};
+
+/**
+ * g_unix_fd_source_new:
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ *
+ * Creates a #GSource to watch for a particular IO condition on a file
+ * descriptor.
+ *
+ * The source will never close the fd -- you must do it yourself.
+ *
+ * Returns: the newly created #GSource
+ *
+ * Since: 2.36
+ **/
+GSource *
+g_unix_fd_source_new (gint fd,
+ GIOCondition condition)
+{
+ GUnixFDSource *fd_source;
+ GSource *source;
+
+ source = g_source_new (&g_unix_fd_source_funcs, sizeof (GUnixFDSource));
+ fd_source = (GUnixFDSource *) source;
+
+ fd_source->fd = fd;
+ fd_source->tag = g_source_add_unix_fd (source, fd, condition);
+
+ return source;
+}
+
+/**
+ * g_unix_fd_add_full:
+ * @priority: the priority of the source
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ * @function: a #GUnixFDSourceFunc
+ * @user_data: data to pass to @function
+ * @notify: function to call when the idle is removed, or %NULL
+ *
+ * Sets a function to be called when the IO condition, as specified by
+ * @condition becomes true for @fd.
+ *
+ * This is the same as g_unix_fd_add(), except that it allows you to
+ * specify a non-default priority and a provide a #GDestroyNotify for
+ * @user_data.
+ *
+ * Returns: the ID (greater than 0) of the event source
+ *
+ * Since: 2.36
+ **/
+guint
+g_unix_fd_add_full (gint priority,
+ gint fd,
+ GIOCondition condition,
+ GUnixFDSourceFunc function,
+ gpointer user_data,
+ GDestroyNotify notify)
+{
+ GSource *source;
+ guint id;
+
+ g_return_val_if_fail (function != NULL, 0);
+
+ source = g_unix_fd_source_new (fd, condition);
+
+ if (priority != G_PRIORITY_DEFAULT)
+ g_source_set_priority (source, priority);
+
+ g_source_set_callback (source, (GSourceFunc) function, user_data, notify);
+ id = g_source_attach (source, NULL);
+ g_source_unref (source);
+
+ return id;
+}
+
+/**
+ * g_unix_fd_add:
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ * @function: a #GPollFDFunc
+ * @user_data: data to pass to @function
+ *
+ * Sets a function to be called when the IO condition, as specified by
+ * @condition becomes true for @fd.
+ *
+ * @function will be called when the specified IO condition becomes
+ * %TRUE. The function is expected to clear whatever event caused the
+ * IO condition to become true and return %TRUE in order to be notified
+ * when it happens again. If @function returns %FALSE then the watch
+ * will be cancelled.
+ *
+ * The return value of this function can be passed to g_source_remove()
+ * to cancel the watch at any time that it exists.
+ *
+ * The source will never close the fd -- you must do it yourself.
+ *
+ * Returns: the ID (greater than 0) of the event source
+ *
+ * Since: 2.36
+ **/
+guint
+g_unix_fd_add (gint fd,
+ GIOCondition condition,
+ GUnixFDSourceFunc function,
+ gpointer user_data)
+{
+ return g_unix_fd_add_full (G_PRIORITY_DEFAULT, fd, condition, function, user_data, NULL);
+}
diff --git a/glib/glib/glib-unix.h b/glib/glib/glib-unix.h
index c04f66f..66ccf74 100644
--- a/glib/glib/glib-unix.h
+++ b/glib/glib/glib-unix.h
@@ -85,6 +85,39 @@ guint g_unix_signal_add (gint signum,
GSourceFunc handler,
gpointer user_data);
+/**
+ * GUnixFDSourceFunc:
+ * @fd: the fd that triggered the event
+ * @condition: the IO conditions reported on @fd
+ * @user_data: user data passed to g_unix_fd_add()
+ *
+ * The type of functions to be called when a UNIX fd watch source
+ * triggers.
+ *
+ * Returns: %FALSE if the source should be removed
+ **/
+typedef gboolean (*GUnixFDSourceFunc) (gint fd,
+ GIOCondition condition,
+ gpointer user_data);
+
+GLIB_AVAILABLE_IN_2_36
+GSource *g_unix_fd_source_new (gint fd,
+ GIOCondition condition);
+
+GLIB_AVAILABLE_IN_2_36
+guint g_unix_fd_add_full (gint priority,
+ gint fd,
+ GIOCondition condition,
+ GUnixFDSourceFunc function,
+ gpointer user_data,
+ GDestroyNotify notify);
+
+GLIB_AVAILABLE_IN_2_36
+guint g_unix_fd_add (gint fd,
+ GIOCondition condition,
+ GUnixFDSourceFunc function,
+ gpointer user_data);
+
G_END_DECLS
#endif /* __G_UNIX_H__ */
diff --git a/glib/glib/glib.h b/glib/glib/glib.h
index 1ba1f47..6f53fcd 100644
--- a/glib/glib/glib.h
+++ b/glib/glib/glib.h
@@ -99,12 +99,14 @@
#include <glib/gwin32.h>
#endif
+#ifndef G_DISABLE_DEPRECATED
#include <glib/deprecated/gallocator.h>
#include <glib/deprecated/gcache.h>
#include <glib/deprecated/gcompletion.h>
#include <glib/deprecated/gmain.h>
#include <glib/deprecated/grel.h>
#include <glib/deprecated/gthread.h>
+#endif /* G_DISABLE_DEPRECATED */
#undef __GLIB_H_INSIDE__
diff --git a/glib/glib/glib.rc b/glib/glib/glib.rc
index f7f589a..3bcfd9c 100644
--- a/glib/glib/glib.rc
+++ b/glib/glib/glib.rc
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,32,4,0
- PRODUCTVERSION 2,32,4,0
+ FILEVERSION 2,38,2,0
+ PRODUCTVERSION 2,38,2,0
FILEFLAGSMASK 0
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
BEGIN
VALUE "CompanyName", "The GLib developer community"
VALUE "FileDescription", "GLib"
- VALUE "FileVersion", "2.32.4.0"
+ VALUE "FileVersion", "2.38.2.0"
VALUE "InternalName", "libglib-2.0-0"
VALUE "LegalCopyright", "Copyright 1995-2011 Peter Mattis, Spencer Kimball, Josh MacDonald and others."
VALUE "OriginalFilename", "libglib-2.0-0.dll"
VALUE "ProductName", "GLib"
- VALUE "ProductVersion", "2.32.4"
+ VALUE "ProductVersion", "2.38.2"
END
END
BLOCK "VarFileInfo"
diff --git a/glib/glib/glib.symbols b/glib/glib/glib.symbols
deleted file mode 100644
index 6c2db0d..0000000
--- a/glib/glib/glib.symbols
+++ /dev/null
@@ -1,1665 +0,0 @@
-/* This file lists all exported symbols. It is used to generate
- * the glib.def file used to control exports on Windows.
- */
-g_array_append_vals
-g_array_free
-g_array_insert_vals
-g_array_new
-g_array_ref
-g_array_unref
-g_array_get_element_size
-g_array_prepend_vals
-g_array_remove_index
-g_array_remove_index_fast
-g_array_remove_range
-g_array_set_clear_func
-g_array_set_size
-g_array_sized_new
-g_array_sort
-g_array_sort_with_data
-g_byte_array_append
-g_byte_array_free
-g_byte_array_free_to_bytes
-g_byte_array_unref
-g_byte_array_ref
-g_byte_array_new
-g_byte_array_new_take
-g_byte_array_prepend
-g_byte_array_remove_index
-g_byte_array_remove_index_fast
-g_byte_array_remove_range
-g_byte_array_set_size
-g_byte_array_sized_new
-g_byte_array_sort
-g_byte_array_sort_with_data
-g_bytes_compare
-g_bytes_equal
-g_bytes_get_data
-g_bytes_get_size
-g_bytes_hash
-g_bytes_new
-g_bytes_new_from_bytes
-g_bytes_new_static
-g_bytes_new_take
-g_bytes_new_with_free_func
-g_bytes_ref
-g_bytes_unref
-g_bytes_unref_to_array
-g_bytes_unref_to_data
-g_ptr_array_add
-g_ptr_array_foreach
-g_ptr_array_free
-g_ptr_array_unref
-g_ptr_array_ref
-g_ptr_array_new
-g_ptr_array_new_full
-g_ptr_array_new_with_free_func
-g_ptr_array_set_free_func
-g_ptr_array_remove
-g_ptr_array_remove_fast
-g_ptr_array_remove_index
-g_ptr_array_remove_index_fast
-g_ptr_array_remove_range
-g_ptr_array_set_size
-g_ptr_array_sized_new
-g_ptr_array_sort
-g_ptr_array_sort_with_data
-g_async_queue_length
-g_async_queue_length_unlocked
-g_async_queue_lock
-g_async_queue_new
-g_async_queue_new_full
-g_async_queue_pop
-g_async_queue_pop_unlocked
-g_async_queue_push
-g_async_queue_push_unlocked
-g_async_queue_push_sorted
-g_async_queue_push_sorted_unlocked
-g_async_queue_ref
-g_async_queue_sort
-g_async_queue_sort_unlocked
-g_async_queue_timed_pop
-g_async_queue_timed_pop_unlocked
-g_async_queue_timeout_pop
-g_async_queue_timeout_pop_unlocked
-g_async_queue_try_pop
-g_async_queue_try_pop_unlocked
-g_async_queue_unlock
-g_async_queue_unref
-g_async_queue_ref_unlocked
-g_async_queue_unref_and_unlock
-g_atomic_int_add
-g_atomic_int_and
-g_atomic_int_compare_and_exchange
-g_atomic_int_dec_and_test
-g_atomic_int_exchange_and_add
-g_atomic_int_get
-g_atomic_int_inc
-g_atomic_int_or
-g_atomic_int_set
-g_atomic_int_xor
-g_atomic_pointer_add
-g_atomic_pointer_and
-g_atomic_pointer_compare_and_exchange
-g_atomic_pointer_get
-g_atomic_pointer_or
-g_atomic_pointer_set
-g_atomic_pointer_xor
-g_on_error_query
-g_on_error_stack_trace
-g_base64_encode_step
-g_base64_encode_close
-g_base64_encode
-g_base64_decode_step
-g_base64_decode
-g_base64_decode_inplace
-g_bookmark_file_error_quark
-g_bookmark_file_new
-g_bookmark_file_free
-g_bookmark_file_load_from_file
-g_bookmark_file_load_from_data
-g_bookmark_file_load_from_data_dirs
-g_bookmark_file_to_data
-g_bookmark_file_to_file
-g_bookmark_file_set_title
-g_bookmark_file_get_title
-g_bookmark_file_set_description
-g_bookmark_file_get_description
-g_bookmark_file_set_mime_type
-g_bookmark_file_get_mime_type
-g_bookmark_file_set_groups
-g_bookmark_file_add_group
-g_bookmark_file_has_group
-g_bookmark_file_get_groups
-g_bookmark_file_add_application
-g_bookmark_file_has_application
-g_bookmark_file_get_applications
-g_bookmark_file_set_app_info
-g_bookmark_file_get_app_info
-g_bookmark_file_set_is_private
-g_bookmark_file_get_is_private
-g_bookmark_file_set_icon
-g_bookmark_file_get_icon
-g_bookmark_file_set_added
-g_bookmark_file_get_added
-g_bookmark_file_set_modified
-g_bookmark_file_get_modified
-g_bookmark_file_set_visited
-g_bookmark_file_get_visited
-g_bookmark_file_has_item
-g_bookmark_file_get_size
-g_bookmark_file_get_uris
-g_bookmark_file_remove_group
-g_bookmark_file_remove_application
-g_bookmark_file_remove_item
-g_bookmark_file_move_item
-g_cache_destroy
-g_cache_insert
-g_cache_key_foreach
-g_cache_new
-g_cache_remove
-g_cache_value_foreach
-g_checksum_type_get_length
-g_checksum_new
-g_checksum_copy
-g_checksum_free
-g_checksum_update
-g_checksum_reset
-g_checksum_get_string
-g_checksum_get_digest
-g_compute_checksum_for_data
-g_compute_checksum_for_string
-g_completion_add_items
-g_completion_clear_items
-g_completion_complete
-g_completion_complete_utf8
-g_completion_free
-g_completion_new
-g_completion_remove_items
-g_completion_set_compare
-g_get_filename_charsets
-g_convert
-g_convert_error_quark
-g_convert_with_fallback
-g_convert_with_iconv
-g_iconv
-g_iconv_close
-g_iconv_open
-g_locale_from_utf8
-g_locale_to_utf8
-g_filename_display_name
-g_filename_display_basename
-#ifndef _WIN64
-g_filename_from_uri PRIVATE
-g_filename_from_utf8 PRIVATE
-g_filename_to_uri PRIVATE
-g_filename_to_utf8 PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_filename_from_uri_utf8
-g_filename_from_utf8_utf8
-g_filename_to_uri_utf8
-g_filename_to_utf8_utf8
-#endif
-g_uri_list_extract_uris
-g_datalist_clear
-g_datalist_foreach
-g_datalist_get_data
-g_datalist_get_flags
-g_datalist_id_get_data
-g_datalist_id_remove_no_notify
-g_datalist_id_set_data_full
-g_datalist_set_flags
-g_datalist_unset_flags
-g_datalist_init
-g_dataset_destroy
-g_dataset_foreach
-g_dataset_id_get_data
-g_dataset_id_remove_no_notify
-g_dataset_id_set_data_full
-g_quark_from_static_string
-g_quark_from_string
-g_quark_to_string
-g_quark_try_string
-g_intern_string
-g_intern_static_string
-g_date_add_days
-g_date_add_months
-g_date_add_years
-g_date_clamp
-g_date_clear
-g_date_compare
-g_date_days_between
-g_date_free
-g_date_get_day
-g_date_get_day_of_year
-g_date_get_days_in_month
-g_date_get_iso8601_week_of_year
-g_date_get_julian
-g_date_get_monday_week_of_year
-g_date_get_monday_weeks_in_year
-g_date_get_month
-g_date_get_sunday_week_of_year
-g_date_get_sunday_weeks_in_year
-g_date_get_weekday
-g_date_get_year
-g_date_is_first_of_month
-g_date_is_last_of_month
-g_date_is_leap_year
-g_date_new
-g_date_new_dmy
-g_date_new_julian
-g_date_order
-g_date_set_day
-g_date_set_dmy
-g_date_set_julian
-g_date_set_month
-g_date_set_parse
-g_date_set_time
-g_date_set_time_t
-g_date_set_time_val
-g_date_set_year
-g_date_strftime
-g_date_subtract_days
-g_date_subtract_months
-g_date_subtract_years
-g_date_to_struct_tm
-g_date_valid
-g_date_valid_day
-g_date_valid_dmy
-g_date_valid_julian
-g_date_valid_month
-g_date_valid_weekday
-g_date_valid_year
-g_date_time_add
-g_date_time_add_days
-g_date_time_add_full
-g_date_time_add_hours
-g_date_time_add_minutes
-g_date_time_add_months
-g_date_time_add_seconds
-g_date_time_add_weeks
-g_date_time_add_years
-g_date_time_compare
-g_date_time_difference
-g_date_time_equal
-g_date_time_format
-g_date_time_get_day_of_month
-g_date_time_get_day_of_week
-g_date_time_get_day_of_year
-g_date_time_get_hour
-g_date_time_get_microsecond
-g_date_time_get_minute
-g_date_time_get_month
-g_date_time_get_second
-g_date_time_get_seconds
-g_date_time_get_timezone_abbreviation
-g_date_time_get_utc_offset
-g_date_time_get_week_numbering_year
-g_date_time_get_week_of_year
-g_date_time_get_year
-g_date_time_get_ymd
-g_date_time_hash
-g_date_time_is_daylight_savings
-g_date_time_new
-g_date_time_new_from_timeval_local
-g_date_time_new_from_timeval_utc
-g_date_time_new_from_unix_local
-g_date_time_new_from_unix_utc
-g_date_time_new_local
-g_date_time_new_now
-g_date_time_new_now_local
-g_date_time_new_now_utc
-g_date_time_new_utc
-g_date_time_ref
-g_date_time_to_local
-g_date_time_to_timeval
-g_date_time_to_timezone
-g_date_time_to_unix
-g_date_time_to_utc
-g_date_time_unref
-g_time_zone_new
-g_time_zone_new_local
-g_time_zone_new_utc
-g_time_zone_ref
-g_time_zone_unref
-g_time_zone_adjust_time
-g_time_zone_find_interval
-g_time_zone_get_abbreviation
-g_time_zone_get_offset
-g_time_zone_is_dst
-g_dir_close
-#ifndef _WIN64
-g_dir_open PRIVATE
-g_dir_read_name PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_dir_open_utf8
-g_dir_read_name_utf8
-#endif
-g_dir_rewind
-g_clear_error
-g_error_copy
-g_error_free
-g_error_matches
-g_error_new
-g_error_new_literal
-g_error_new_valist
-g_propagate_error
-g_set_error
-g_set_error_literal
-g_prefix_error
-g_propagate_prefixed_error
-g_build_filename
-g_build_filenamev
-g_build_path
-g_build_pathv
-g_file_error_from_errno
-g_file_error_quark
-#ifndef _WIN64
-g_file_get_contents PRIVATE
-#endif
-g_file_set_contents
-g_dir_make_tmp
-#ifndef _WIN64
-g_file_open_tmp PRIVATE
-g_file_test PRIVATE
-#endif
-g_file_read_link
-g_format_size
-g_format_size_full
-g_format_size_for_display
-#ifndef _WIN64
-g_mkstemp PRIVATE
-#endif
-g_mkdtemp
-g_mkdtemp_full
-g_mkstemp_full
-g_mkdir_with_parents
-#ifdef G_OS_WIN32
-g_file_get_contents_utf8
-g_file_open_tmp_utf8
-g_file_test_utf8
-g_mkstemp_utf8
-#endif
-g_hash_table_add
-g_hash_table_contains
-g_hash_table_destroy
-g_hash_table_unref
-g_hash_table_ref
-g_hash_table_find
-g_hash_table_foreach
-g_hash_table_foreach_remove
-g_hash_table_foreach_steal
-g_hash_table_get_keys
-g_hash_table_get_values
-g_hash_table_insert
-g_hash_table_lookup
-g_hash_table_lookup_extended
-g_hash_table_new
-g_hash_table_new_full
-g_hash_table_remove
-g_hash_table_remove_all
-g_hash_table_replace
-g_hash_table_size
-g_hash_table_steal
-g_hash_table_steal_all
-g_hash_table_iter_init
-g_hash_table_iter_next
-g_hash_table_iter_get_hash_table
-g_hash_table_iter_remove
-g_hash_table_iter_replace
-g_hash_table_iter_steal
-g_hmac_new
-g_hmac_copy
-g_hmac_ref
-g_hmac_unref
-g_hmac_update
-g_hmac_get_string
-g_hmac_get_digest
-g_compute_hmac_for_data
-g_compute_hmac_for_string
-g_hook_alloc
-g_hook_compare_ids
-g_hook_destroy
-g_hook_destroy_link
-g_hook_find
-g_hook_find_data
-g_hook_find_func
-g_hook_find_func_data
-g_hook_first_valid
-g_hook_free
-g_hook_get
-g_hook_insert_before
-g_hook_insert_sorted
-g_hook_list_clear
-g_hook_list_init
-g_hook_list_invoke
-g_hook_list_invoke_check
-g_hook_list_marshal
-g_hook_list_marshal_check
-g_hook_next_valid
-g_hook_prepend
-g_hook_ref
-g_hook_unref
-g_io_add_watch
-g_io_add_watch_full
-g_io_create_watch
-g_io_channel_error_from_errno
-g_io_channel_error_quark
-g_io_channel_flush
-g_io_channel_get_buffer_condition
-g_io_channel_get_buffered
-g_io_channel_get_buffer_size
-g_io_channel_get_close_on_unref
-g_io_channel_get_encoding
-g_io_channel_get_flags
-g_io_channel_get_line_term
-g_io_channel_init
-g_io_channel_read_chars
-g_io_channel_read_line
-g_io_channel_read_line_string
-g_io_channel_read_to_end
-g_io_channel_read_unichar
-g_io_channel_ref
-g_io_channel_seek_position
-g_io_channel_set_buffered
-g_io_channel_set_buffer_size
-g_io_channel_set_close_on_unref
-g_io_channel_set_encoding
-g_io_channel_set_flags
-g_io_channel_set_line_term
-g_io_channel_shutdown
-g_io_channel_unref
-g_io_channel_close
-g_io_channel_read
-g_io_channel_seek
-g_io_channel_write
-g_io_channel_write_chars
-g_io_channel_write_unichar
-#ifdef G_OS_UNIX
-g_io_channel_unix_get_fd
-g_io_channel_unix_new
-g_io_channel_new_file
-#endif
-#ifdef G_OS_WIN32
-g_io_channel_unix_get_fd
-g_io_channel_unix_new
-#ifndef _WIN64
-g_io_channel_new_file PRIVATE
-#endif
-g_io_channel_new_file_utf8
-g_io_channel_win32_get_fd
-g_io_channel_win32_make_pollfd
-g_io_channel_win32_new_fd
-g_io_channel_win32_new_messages
-g_io_channel_win32_new_socket
-#ifndef _WIN64
-g_io_channel_win32_new_stream_socket PRIVATE
-#endif
-g_io_channel_win32_poll
-g_io_channel_win32_set_debug
-#endif
-g_key_file_error_quark
-g_key_file_ref
-g_key_file_unref
-g_key_file_free
-g_key_file_get_boolean
-g_key_file_get_boolean_list
-g_key_file_get_comment
-g_key_file_get_groups
-g_key_file_get_double
-g_key_file_get_double_list
-g_key_file_get_integer
-g_key_file_get_int64
-g_key_file_get_uint64
-g_key_file_get_integer_list
-g_key_file_get_keys
-g_key_file_get_locale_string
-g_key_file_get_locale_string_list
-g_key_file_get_start_group
-g_key_file_get_string
-g_key_file_get_string_list
-g_key_file_get_value
-g_key_file_has_group
-g_key_file_has_key
-g_key_file_load_from_dirs
-g_key_file_load_from_data
-g_key_file_load_from_data_dirs
-g_key_file_load_from_file
-g_key_file_new
-g_key_file_remove_comment
-g_key_file_remove_group
-g_key_file_remove_key
-g_key_file_set_boolean
-g_key_file_set_boolean_list
-g_key_file_set_comment
-g_key_file_set_double
-g_key_file_set_double_list
-g_key_file_set_integer
-g_key_file_set_int64
-g_key_file_set_uint64
-g_key_file_set_integer_list
-g_key_file_set_list_separator
-g_key_file_set_locale_string
-g_key_file_set_locale_string_list
-g_key_file_set_string
-g_key_file_set_string_list
-g_key_file_set_value
-g_key_file_to_data
-g_list_alloc
-g_list_append
-g_list_concat
-g_list_copy
-g_list_delete_link
-g_list_find
-g_list_find_custom
-g_list_first
-g_list_foreach
-g_list_free
-g_list_free_full
-g_list_free_1
-g_list_index
-g_list_insert
-g_list_insert_before
-g_list_insert_sorted
-g_list_insert_sorted_with_data
-g_list_last
-g_list_length
-g_list_nth
-g_list_nth_data
-g_list_nth_prev
-g_list_pop_allocator
-g_list_position
-g_list_prepend
-g_list_push_allocator
-g_list_remove
-g_list_remove_all
-g_list_remove_link
-g_list_reverse
-g_list_sort
-g_list_sort_with_data
-g_child_watch_add
-g_child_watch_add_full
-g_child_watch_source_new
-g_get_current_time
-g_get_monotonic_time
-g_get_real_time
-g_main_context_acquire
-g_main_context_add_poll
-g_main_context_check
-g_main_context_default
-g_main_context_dispatch
-g_main_context_find_source_by_funcs_user_data
-g_main_context_find_source_by_id
-g_main_context_find_source_by_user_data
-g_main_context_get_poll_func
-g_main_context_get_thread_default
-g_main_context_is_owner
-g_main_context_iteration
-g_main_context_new
-g_main_context_pending
-g_main_context_pop_thread_default
-g_main_context_prepare
-g_main_context_push_thread_default
-g_main_context_query
-g_main_context_ref
-g_main_context_ref_thread_default
-g_main_context_release
-g_main_context_remove_poll
-g_main_context_set_poll_func
-g_main_context_unref
-g_main_context_wait
-g_main_context_wakeup
-g_main_context_invoke
-g_main_context_invoke_full
-g_main_depth
-g_main_current_source
-g_main_loop_get_context
-g_main_loop_is_running
-g_main_loop_new
-g_main_loop_quit
-g_main_loop_ref
-g_main_loop_run
-g_main_loop_unref
-g_source_add_child_source
-g_source_add_poll
-g_source_attach
-g_source_destroy
-g_source_get_can_recurse
-g_source_get_context
-g_source_get_time
-g_source_get_current_time
-g_source_get_id
-g_source_get_name
-g_source_get_priority
-g_source_new
-g_source_ref
-g_source_remove
-g_source_remove_by_funcs_user_data
-g_source_remove_by_user_data
-g_source_remove_child_source
-g_source_remove_poll
-g_source_set_callback
-g_source_set_callback_indirect
-g_source_set_can_recurse
-g_source_set_funcs
-g_source_set_name
-g_source_set_name_by_id
-g_source_is_destroyed
-g_source_set_priority
-g_source_unref
-g_idle_add
-g_idle_add_full
-g_idle_remove_by_data
-g_idle_source_new
-g_timeout_add
-g_timeout_add_seconds
-g_timeout_add_full
-g_timeout_add_seconds_full
-g_timeout_source_new
-g_timeout_source_new_seconds
-g_mapped_file_new
-g_mapped_file_new_from_fd
-g_mapped_file_get_length
-g_mapped_file_get_contents
-g_mapped_file_ref
-g_mapped_file_unref
-g_mapped_file_free
-g_markup_error_quark
-g_markup_escape_text
-g_markup_parse_context_end_parse
-g_markup_parse_context_free
-g_markup_parse_context_get_element
-g_markup_parse_context_get_element_stack
-g_markup_parse_context_get_position
-g_markup_parse_context_get_user_data
-g_markup_parse_context_new
-g_markup_parse_context_parse
-g_markup_parse_context_push
-g_markup_parse_context_pop
-g_markup_printf_escaped
-g_markup_vprintf_escaped
-g_markup_collect_attributes
-g_free
-g_malloc
-g_malloc0
-g_malloc_n
-g_malloc0_n
-g_mem_is_system_malloc
-g_mem_profile
-g_mem_set_vtable
-g_realloc
-g_realloc_n
-g_try_malloc
-g_try_malloc0
-g_try_malloc_n
-g_try_malloc0_n
-g_try_realloc
-g_try_realloc_n
-g_allocator_free
-g_allocator_new
-g_mem_chunk_alloc
-g_mem_chunk_alloc0
-g_mem_chunk_clean
-g_mem_chunk_destroy
-g_mem_chunk_free
-g_mem_chunk_info
-g_mem_chunk_new
-g_mem_chunk_print
-g_mem_chunk_reset
-g_blow_chunks
-g_slice_alloc
-g_slice_alloc0
-g_slice_copy
-g_slice_free1
-g_slice_free_chain_with_offset
-g_slice_set_config
-g_slice_get_config
-g_slice_get_config_state
-#ifdef G_ENABLE_DEBUG
-g_slice_debug_tree_statistics
-#endif
-g_printf_string_upper_bound
-g_log
-g_log_default_handler
-g_log_remove_handler
-g_log_set_always_fatal
-g_log_set_default_handler
-g_log_set_fatal_mask
-g_log_set_handler
-g_logv
-g_return_if_fail_warning
-g_warn_message
-g_assert_warning
-g_print
-g_printerr
-g_set_printerr_handler
-g_set_print_handler
-g_node_child_index
-g_node_child_position
-g_node_children_foreach
-g_node_copy
-g_node_copy_deep
-g_node_depth
-g_node_destroy
-g_node_find
-g_node_find_child
-g_node_first_sibling
-g_node_get_root
-g_node_insert
-g_node_insert_after
-g_node_insert_before
-g_node_is_ancestor
-g_node_last_child
-g_node_last_sibling
-g_node_max_height
-g_node_n_children
-g_node_new
-g_node_n_nodes
-g_node_nth_child
-g_node_pop_allocator
-g_node_prepend
-g_node_push_allocator
-g_node_reverse_children
-g_node_traverse
-g_node_unlink
-g_option_context_add_group
-g_option_context_add_main_entries
-g_option_error_quark
-g_option_context_free
-g_option_context_get_description
-g_option_context_get_help_enabled
-g_option_context_get_ignore_unknown_options
-g_option_context_get_main_group
-g_option_context_get_summary
-g_option_context_new
-g_option_context_parse
-g_option_context_set_description
-g_option_context_set_help_enabled
-g_option_context_set_ignore_unknown_options
-g_option_context_set_main_group
-g_option_context_set_summary
-g_option_context_set_translate_func
-g_option_context_set_translation_domain
-g_option_context_get_help
-g_option_group_add_entries
-g_option_group_free
-g_option_group_new
-g_option_group_set_error_hook
-g_option_group_set_parse_hooks
-g_option_group_set_translate_func
-g_option_group_set_translation_domain
-g_pattern_match
-g_pattern_match_simple
-g_pattern_match_string
-g_pattern_spec_equal
-g_pattern_spec_free
-g_pattern_spec_new
-g_poll
-g_spaced_primes_closest
-g_fprintf
-g_printf
-g_sprintf
-g_vasprintf
-g_vfprintf
-g_vprintf
-g_vsprintf
-g_snprintf
-g_vsnprintf
-g_qsort_with_data
-g_queue_clear
-g_queue_copy
-g_queue_delete_link
-g_queue_find
-g_queue_find_custom
-g_queue_foreach
-g_queue_free
-g_queue_free_full
-g_queue_get_length
-g_queue_index
-g_queue_init
-g_queue_insert_after
-g_queue_insert_before
-g_queue_insert_sorted
-g_queue_is_empty
-g_queue_link_index
-g_queue_new
-g_queue_peek_head
-g_queue_peek_head_link
-g_queue_peek_nth
-g_queue_peek_nth_link
-g_queue_peek_tail
-g_queue_peek_tail_link
-g_queue_pop_head
-g_queue_pop_head_link
-g_queue_pop_nth
-g_queue_pop_nth_link
-g_queue_pop_tail
-g_queue_pop_tail_link
-g_queue_push_head
-g_queue_push_head_link
-g_queue_push_nth
-g_queue_push_nth_link
-g_queue_push_tail
-g_queue_push_tail_link
-g_queue_remove
-g_queue_remove_all
-g_queue_reverse
-g_queue_sort
-g_queue_unlink
-g_rand_copy
-g_rand_double
-g_rand_double_range
-g_rand_free
-g_rand_int
-g_rand_int_range
-g_rand_new
-g_rand_new_with_seed
-g_rand_new_with_seed_array
-g_random_double
-g_random_double_range
-g_random_int
-g_random_int_range
-g_random_set_seed
-g_rand_set_seed
-g_rand_set_seed_array
-g_relation_count
-g_relation_delete
-g_relation_destroy
-g_relation_exists
-g_relation_index
-g_relation_insert
-g_relation_new
-g_relation_print
-g_relation_select
-g_tuples_destroy
-g_tuples_index
-g_scanner_cur_line
-g_scanner_cur_position
-g_scanner_cur_token
-g_scanner_cur_value
-g_scanner_destroy
-g_scanner_eof
-g_scanner_error
-g_scanner_get_next_token
-g_scanner_input_file
-g_scanner_input_text
-g_scanner_lookup_symbol
-g_scanner_new
-g_scanner_peek_next_token
-g_scanner_scope_add_symbol
-g_scanner_scope_foreach_symbol
-g_scanner_scope_lookup_symbol
-g_scanner_scope_remove_symbol
-g_scanner_set_scope
-g_scanner_sync_file_offset
-g_scanner_unexp_token
-g_scanner_warn
-g_sequence_new
-g_sequence_free
-g_sequence_get_length
-g_sequence_foreach
-g_sequence_foreach_range
-g_sequence_sort
-g_sequence_sort_iter
-g_sequence_get_begin_iter
-g_sequence_get_end_iter
-g_sequence_get_iter_at_pos
-g_sequence_append
-g_sequence_prepend
-g_sequence_insert_before
-g_sequence_move
-g_sequence_swap
-g_sequence_insert_sorted
-g_sequence_insert_sorted_iter
-g_sequence_sort_changed
-g_sequence_sort_changed_iter
-g_sequence_remove
-g_sequence_remove_range
-g_sequence_move_range
-g_sequence_search
-g_sequence_search_iter
-g_sequence_lookup
-g_sequence_lookup_iter
-g_sequence_get
-g_sequence_set
-g_sequence_iter_is_begin
-g_sequence_iter_is_end
-g_sequence_iter_next
-g_sequence_iter_prev
-g_sequence_iter_get_position
-g_sequence_iter_move
-g_sequence_iter_get_sequence
-g_sequence_iter_compare
-g_sequence_range_get_midpoint
-g_shell_error_quark
-g_shell_parse_argv
-g_shell_quote
-g_shell_unquote
-g_slist_alloc
-g_slist_append
-g_slist_concat
-g_slist_copy
-g_slist_delete_link
-g_slist_find
-g_slist_find_custom
-g_slist_foreach
-g_slist_free
-g_slist_free_full
-g_slist_free_1
-g_slist_index
-g_slist_insert
-g_slist_insert_before
-g_slist_insert_sorted
-g_slist_insert_sorted_with_data
-g_slist_last
-g_slist_length
-g_slist_nth
-g_slist_nth_data
-g_slist_pop_allocator
-g_slist_position
-g_slist_prepend
-g_slist_push_allocator
-g_slist_remove
-g_slist_remove_all
-g_slist_remove_link
-g_slist_reverse
-g_slist_sort
-g_slist_sort_with_data
-#ifndef _WIN64
-g_spawn_async PRIVATE
-g_spawn_async_with_pipes PRIVATE
-#endif
-g_spawn_close_pid
-#ifndef _WIN64
-g_spawn_command_line_async PRIVATE
-g_spawn_command_line_sync PRIVATE
-#endif
-g_spawn_error_quark
-#ifndef _WIN64
-g_spawn_sync PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_spawn_async_utf8
-g_spawn_async_with_pipes_utf8
-g_spawn_command_line_async_utf8
-g_spawn_command_line_sync_utf8
-g_spawn_sync_utf8
-#endif
-#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
-/* gstdio wrappers */
-g_chmod
-g_open
-g_creat
-g_rename
-g_mkdir
-g_stat
-g_lstat
-g_remove
-g_fopen
-g_freopen
-g_utime
-#endif
-g_access
-g_chdir
-g_unlink
-g_rmdir
-g_ascii_digit_value
-g_ascii_dtostr
-g_ascii_formatd
-g_ascii_strdown
-g_ascii_strtod
-g_ascii_strtoull
-g_ascii_strtoll
-g_ascii_strup
-g_ascii_tolower
-g_ascii_toupper
-g_ascii_xdigit_value
-g_ascii_strcasecmp
-g_ascii_strncasecmp
-g_memdup
-g_stpcpy
-g_strcanon
-g_strchomp
-g_strchug
-g_strcompress
-g_strconcat
-g_strdelimit
-g_strdup
-g_strdup_printf
-g_strdupv
-g_strdup_vprintf
-g_strerror
-g_strescape
-g_strfreev
-g_str_has_prefix
-g_str_has_suffix
-g_strjoin
-g_strjoinv
-g_strlcat
-g_strlcpy
-g_strndup
-g_strnfill
-g_strreverse
-g_strrstr
-g_strrstr_len
-g_strsignal
-g_strsplit
-g_strsplit_set
-g_strstr_len
-g_strtod
-g_strcasecmp
-g_strncasecmp
-g_strup
-g_strdown
-g_strv_length
-g_strip_context
-g_dgettext
-g_dcgettext
-g_dngettext
-g_dpgettext
-g_dpgettext2
-g_uri_unescape_string
-g_uri_unescape_segment
-g_uri_parse_scheme
-g_uri_escape_string
-g_string_append
-g_string_append_len
-g_string_append_printf
-g_string_append_unichar
-g_string_append_vprintf
-g_string_ascii_down
-g_string_ascii_up
-g_string_assign
-g_string_chunk_free
-g_string_chunk_clear
-g_string_chunk_insert
-g_string_chunk_insert_const
-g_string_chunk_insert_len
-g_string_chunk_new
-g_string_equal
-g_string_erase
-g_string_free
-g_string_hash
-g_string_insert
-g_string_insert_c
-g_string_insert_len
-g_string_insert_unichar
-g_string_new
-g_string_new_len
-g_string_overwrite
-g_string_overwrite_len
-g_string_prepend
-g_string_prepend_c
-g_string_prepend_len
-g_string_prepend_unichar
-g_string_printf
-g_string_set_size
-g_string_sized_new
-g_string_truncate
-g_string_append_uri_escaped
-g_string_down
-g_string_up
-g_string_vprintf
-g_string_append_c
-g_bit_lock
-g_bit_trylock
-g_bit_unlock
-g_pointer_bit_lock
-g_pointer_bit_trylock
-g_pointer_bit_unlock
-g_once_impl
-g_once_init_enter_impl
-g_once_init_leave
-g_once_init_enter
-g_threads_got_initialized
-g_thread_gettime
-g_thread_create
-g_thread_create_full
-g_thread_error_quark
-g_thread_exit
-g_thread_functions_for_glib_use
-g_thread_init_glib
-g_thread_join
-g_thread_new
-g_thread_ref
-g_thread_self
-g_thread_set_priority
-g_thread_try_new
-g_thread_use_default_impl
-g_thread_unref
-g_thread_yield
-g_static_mutex_free
-g_static_mutex_get_mutex_impl
-g_static_mutex_init
-g_static_private_free
-g_static_private_get
-g_static_private_init
-g_static_private_set
-g_static_rec_mutex_free
-g_static_rec_mutex_init
-g_static_rec_mutex_lock
-g_static_rec_mutex_lock_full
-g_static_rec_mutex_trylock
-g_static_rec_mutex_unlock
-g_static_rec_mutex_unlock_full
-g_static_rw_lock_free
-g_static_rw_lock_init
-g_static_rw_lock_reader_lock
-g_static_rw_lock_reader_trylock
-g_static_rw_lock_reader_unlock
-g_static_rw_lock_writer_lock
-g_static_rw_lock_writer_trylock
-g_static_rw_lock_writer_unlock
-g_thread_foreach
-g_thread_get_initialized
-g_thread_pool_free
-g_thread_pool_get_max_threads
-g_thread_pool_get_max_unused_threads
-g_thread_pool_get_max_idle_time
-g_thread_pool_get_num_threads
-g_thread_pool_get_num_unused_threads
-g_thread_pool_new
-g_thread_pool_push
-g_thread_pool_set_max_threads
-g_thread_pool_set_max_unused_threads
-g_thread_pool_set_max_idle_time
-g_thread_pool_stop_unused_threads
-g_thread_pool_unprocessed
-g_thread_pool_set_sort_function
-g_test_log_set_fatal_handler
-g_assertion_message
-g_assertion_message_cmpnum
-g_assertion_message_cmpstr
-g_assertion_message_expr
-g_assertion_message_error
-g_strcmp0
-g_test_add_data_func
-g_test_add_func
-g_test_add_vtable
-g_test_bug
-g_test_bug_base
-g_test_config_vars
-g_test_create_case
-g_test_create_suite
-g_test_fail
-g_test_get_root
-g_test_init
-g_test_log_buffer_free
-g_test_log_buffer_new
-g_test_log_buffer_pop
-g_test_log_buffer_push
-g_test_log_msg_free
-g_test_log_type_name
-g_test_maximized_result
-g_test_message
-g_test_minimized_result
-g_test_queue_destroy
-g_test_queue_free
-g_test_rand_double
-g_test_rand_double_range
-g_test_rand_int
-g_test_rand_int_range
-g_test_run
-g_test_run_suite
-g_test_suite_add
-g_test_suite_add_suite
-g_test_timer_elapsed
-g_test_timer_last
-g_test_timer_start
-g_test_trap_assertions
-g_test_trap_fork
-g_test_trap_has_passed
-g_test_trap_reached_timeout
-g_timer_continue
-g_timer_destroy
-g_timer_elapsed
-g_timer_new
-g_timer_reset
-g_timer_start
-g_timer_stop
-g_time_val_add
-g_time_val_from_iso8601
-g_time_val_to_iso8601
-g_usleep
-g_tree_destroy
-g_tree_foreach
-g_tree_height
-g_tree_insert
-g_tree_lookup
-g_tree_lookup_extended
-g_tree_new
-g_tree_ref
-g_tree_unref
-g_tree_new_full
-g_tree_new_with_data
-g_tree_nnodes
-g_tree_remove
-g_tree_replace
-g_tree_search
-g_tree_steal
-g_tree_traverse
-g_unichar_break_type
-g_unichar_combining_class
-g_unichar_compose
-g_unichar_decompose
-g_unichar_isalnum
-g_unichar_isalpha
-g_unichar_iscntrl
-g_unichar_isdefined
-g_unichar_isdigit
-g_unichar_isgraph
-g_unichar_islower
-g_unichar_isprint
-g_unichar_ispunct
-g_unichar_isspace
-g_unichar_istitle
-g_unichar_isupper
-g_unichar_iswide
-g_unichar_iswide_cjk
-g_unichar_isxdigit
-g_unichar_iszerowidth
-g_unichar_fully_decompose
-g_unichar_tolower
-g_unichar_totitle
-g_unichar_toupper
-g_unichar_ismark
-g_unichar_get_mirror_char
-g_unichar_get_script
-g_unichar_digit_value
-g_unichar_xdigit_value
-g_unichar_type
-g_unicode_canonical_decomposition
-g_unicode_canonical_ordering
-g_unicode_script_from_iso15924
-g_unicode_script_to_iso15924
-g_utf8_casefold
-g_utf8_collate
-g_utf8_collate_key
-g_utf8_collate_key_for_filename
-g_utf8_find_next_char
-g_utf8_find_prev_char
-g_utf8_get_char
-g_utf8_get_char_validated
-g_utf8_normalize
-g_utf8_offset_to_pointer
-g_utf8_pointer_to_offset
-g_utf8_prev_char
-g_utf8_strup
-g_utf8_strdown
-g_utf8_strchr
-g_utf8_strlen
-g_utf8_strncpy
-g_utf8_strrchr
-g_utf8_strreverse
-g_utf8_substring
-g_utf8_to_ucs4
-g_utf8_to_ucs4_fast
-g_utf8_to_utf16
-g_utf8_validate
-g_get_charset
-g_ucs4_to_utf16
-g_ucs4_to_utf8
-g_utf16_to_ucs4
-g_utf16_to_utf8
-g_unichar_to_utf8
-g_unichar_validate
-glib_pgettext
-glib_gettext
-#ifdef G_OS_WIN32
-_glib_get_locale_dir
-#endif
-g_int_equal
-g_int_hash
-g_int64_equal
-g_int64_hash
-g_double_equal
-g_double_hash
-g_direct_equal
-g_direct_hash
-g_str_equal
-g_str_hash
-g_atexit
-g_basename
-g_get_application_name
-#ifndef _WIN64
-g_find_program_in_path PRIVATE
-g_get_current_dir PRIVATE
-g_getenv PRIVATE
-g_unsetenv PRIVATE
-g_get_home_dir PRIVATE
-g_setenv PRIVATE
-#endif
-g_get_host_name
-g_listenv
-g_get_environ
-g_environ_getenv
-g_environ_setenv
-g_environ_unsetenv
-#ifdef G_OS_WIN32
-g_find_program_in_path_utf8
-g_get_current_dir_utf8
-g_getenv_utf8
-g_unsetenv_utf8
-g_setenv_utf8
-g_get_home_dir_utf8
-#endif
-g_get_language_names
-g_get_locale_variants
-g_get_prgname
-#ifndef _WIN64
-g_get_real_name PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_get_real_name_utf8
-#endif
-g_get_system_config_dirs
-g_get_system_data_dirs
-#ifdef G_OS_WIN32
-g_win32_get_system_data_dirs_for_module
-#endif
-#ifndef _WIN64
-g_get_tmp_dir PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_get_tmp_dir_utf8
-#endif
-g_get_user_cache_dir
-g_get_user_config_dir
-g_get_user_data_dir
-g_reload_user_special_dirs_cache
-g_get_user_runtime_dir
-g_get_user_special_dir
-#ifndef _WIN64
-g_get_user_name PRIVATE
-#endif
-#ifdef G_OS_WIN32
-g_get_user_name_utf8
-#endif
-glib_check_version
-glib__private__
-g_nullify_pointer
-g_parse_debug_string
-g_path_get_basename
-g_path_get_dirname
-g_path_is_absolute
-g_path_skip_root
-g_set_application_name
-g_set_prgname
-g_bit_nth_lsf
-g_bit_nth_msf
-g_bit_storage
-g_trash_stack_height
-g_trash_stack_peek
-g_trash_stack_pop
-g_trash_stack_push
-g_get_codeset
-g_regex_error_quark
-g_regex_new
-g_regex_ref
-g_regex_unref
-g_regex_get_pattern
-g_regex_get_max_backref
-g_regex_get_capture_count
-g_regex_get_string_number
-g_regex_get_compile_flags
-g_regex_get_match_flags
-g_regex_escape_string
-g_regex_escape_nul
-g_regex_match_simple
-g_regex_match
-g_regex_match_full
-g_regex_match_all
-g_regex_match_all_full
-g_regex_split_simple
-g_regex_split
-g_regex_split_full
-g_regex_replace
-g_regex_replace_literal
-g_regex_replace_eval
-g_regex_check_replacement
-g_match_info_get_regex
-g_match_info_get_string
-g_match_info_ref
-g_match_info_unref
-g_match_info_free
-g_match_info_next
-g_match_info_matches
-g_match_info_get_match_count
-g_match_info_is_partial_match
-g_match_info_expand_references
-g_match_info_fetch
-g_match_info_fetch_pos
-g_match_info_fetch_named
-g_match_info_fetch_named_pos
-g_match_info_fetch_all
-g_variant_type_string_is_valid
-g_variant_type_string_scan
-g_variant_type_free
-g_variant_type_copy
-g_variant_type_new
-g_variant_type_get_string_length
-g_variant_type_peek_string
-g_variant_type_dup_string
-g_variant_type_is_definite
-g_variant_type_is_container
-g_variant_type_is_basic
-g_variant_type_is_maybe
-g_variant_type_is_array
-g_variant_type_is_tuple
-g_variant_type_is_dict_entry
-g_variant_type_is_variant
-g_variant_type_hash
-g_variant_type_equal
-g_variant_type_is_subtype_of
-g_variant_type_element
-g_variant_type_first
-g_variant_type_next
-g_variant_type_n_items
-g_variant_type_key
-g_variant_type_value
-g_variant_type_new_array
-g_variant_type_new_maybe
-g_variant_type_new_tuple
-g_variant_type_new_dict_entry
-g_variant_type_checked_
-g_variant_unref
-g_variant_ref
-g_variant_ref_sink
-g_variant_is_floating
-g_variant_take_ref
-g_variant_n_children
-g_variant_get_child_value
-g_variant_get_size
-g_variant_get_data
-g_variant_store
-g_variant_is_normal_form
-g_variant_get_type
-g_variant_get_type_string
-g_variant_is_of_type
-g_variant_is_container
-g_variant_classify
-g_variant_compare
-g_variant_new_boolean
-g_variant_new_byte
-g_variant_new_int16
-g_variant_new_uint16
-g_variant_new_int32
-g_variant_new_uint32
-g_variant_new_int64
-g_variant_new_uint64
-g_variant_new_handle
-g_variant_new_double
-g_variant_new_fixed_array
-g_variant_new_string
-g_variant_new_object_path
-g_variant_is_object_path
-g_variant_new_signature
-g_variant_is_signature
-g_variant_new_variant
-g_variant_new_strv
-g_variant_new_objv
-g_variant_new_bytestring
-g_variant_new_bytestring_array
-g_variant_get_boolean
-g_variant_get_byte
-g_variant_get_int16
-g_variant_get_uint16
-g_variant_get_int32
-g_variant_get_uint32
-g_variant_get_int64
-g_variant_get_uint64
-g_variant_get_handle
-g_variant_get_double
-g_variant_get_string
-g_variant_dup_string
-g_variant_get_variant
-g_variant_get_strv
-g_variant_dup_strv
-g_variant_get_objv
-g_variant_dup_objv
-g_variant_get_bytestring
-g_variant_dup_bytestring
-g_variant_get_bytestring_array
-g_variant_dup_bytestring_array
-g_variant_new_maybe
-g_variant_new_array
-g_variant_new_tuple
-g_variant_new_dict_entry
-g_variant_get_maybe
-g_variant_get_fixed_array
-g_variant_print
-g_variant_print_string
-g_variant_hash
-g_variant_equal
-g_variant_iter_copy
-g_variant_iter_free
-g_variant_iter_init
-g_variant_iter_n_children
-g_variant_iter_new
-g_variant_iter_next_value
-g_variant_builder_add_value
-g_variant_builder_init
-g_variant_builder_clear
-g_variant_builder_open
-g_variant_builder_close
-g_variant_builder_end
-g_variant_builder_new
-g_variant_builder_unref
-g_variant_builder_ref
-g_variant_new_va
-g_variant_get_va
-g_variant_new
-g_variant_get
-g_variant_builder_add
-g_variant_get_child
-g_variant_lookup_value
-g_variant_lookup
-g_variant_iter_next
-g_variant_iter_loop
-g_variant_new_from_data
-g_variant_get_normal_form
-g_variant_byteswap
-g_variant_new_parsed
-g_variant_new_parsed_va
-g_variant_builder_add_parsed
-g_variant_parse
-g_variant_parser_get_error_quark
-g_variant_type_info_get_type_string
-g_variant_type_info_query
-g_variant_type_info_element
-g_variant_type_info_query_element
-g_variant_type_info_n_members
-g_variant_type_info_member_info
-g_variant_type_info_get
-g_variant_type_info_ref
-g_variant_type_info_unref
-g_variant_type_info_assert_no_infos
-g_variant_serialised_byteswap
-g_variant_serialised_get_child
-g_variant_serialised_is_normal
-g_variant_serialised_n_children
-g_variant_serialiser_is_object_path
-g_variant_serialiser_is_signature
-g_variant_serialiser_is_string
-g_variant_serialiser_needed_size
-g_variant_serialiser_serialise
-g_variant_format_string_scan_type
-g_variant_format_string_scan
-#ifdef G_OS_WIN32
-g_win32_error_message
-g_win32_ftruncate
-g_win32_get_package_installation_directory_of_module
-#ifndef _WIN64
-g_win32_get_package_installation_directory PRIVATE
-#endif
-g_win32_get_package_installation_directory_utf8
-#ifndef _WIN64
-g_win32_get_package_installation_subdirectory PRIVATE
-#endif
-g_win32_get_package_installation_subdirectory_utf8
-g_win32_get_windows_version
-g_win32_getlocale
-g_win32_locale_filename_from_utf8
-#endif
-g_hostname_is_non_ascii
-g_hostname_is_ascii_encoded
-g_hostname_is_ip_address
-g_hostname_to_ascii
-g_hostname_to_unicode
-#ifdef G_OS_UNIX
-g_unix_error_quark
-g_unix_open_pipe
-g_unix_set_fd_nonblocking
-g_unix_signal_add
-g_unix_signal_add_full
-g_unix_signal_source_new
-#endif
-g_ascii_table
-g_utf8_skip
-g_idle_funcs
-g_timeout_funcs
-g_io_watch_funcs
-g_child_watch_funcs
-glib_binary_age
-glib_interface_age
-glib_major_version
-glib_mem_profiler_table
-glib_micro_version
-glib_minor_version
-glib_on_error_halt
-g_mem_gc_friendly
-g_cond_broadcast
-g_cond_clear
-g_cond_free
-g_cond_init
-g_cond_new
-g_cond_signal
-g_cond_timed_wait
-g_cond_wait
-g_cond_wait_until
-g_mutex_clear
-g_mutex_free
-g_mutex_init
-g_mutex_lock
-g_mutex_new
-g_mutex_trylock
-g_mutex_unlock
-g_private_new
-g_private_get
-g_private_replace
-g_private_set
-g_rw_lock_clear
-g_rw_lock_init
-g_rw_lock_reader_lock
-g_rw_lock_reader_trylock
-g_rw_lock_reader_unlock
-g_rw_lock_writer_lock
-g_rw_lock_writer_trylock
-g_rw_lock_writer_unlock
-g_rec_mutex_clear
-g_rec_mutex_init
-g_rec_mutex_lock
-g_rec_mutex_trylock
-g_rec_mutex_unlock
diff --git a/glib/glib/glibintl.h b/glib/glib/glibintl.h
index 507e1c3..4f2e58b 100644
--- a/glib/glib/glibintl.h
+++ b/glib/glib/glibintl.h
@@ -5,7 +5,9 @@
#error "config.h must be included prior to glibintl.h"
#endif
+GLIB_AVAILABLE_IN_ALL
const gchar * glib_gettext (const gchar *str) G_GNUC_FORMAT(1);
+GLIB_AVAILABLE_IN_ALL
const gchar * glib_pgettext (const gchar *msgctxtid,
gsize msgidoffset) G_GNUC_FORMAT(1);
diff --git a/glib/glib/glist.c b/glib/glib/glist.c
index dac7dc8..073bcaa 100644
--- a/glib/glib/glist.c
+++ b/glib/glib/glist.c
@@ -32,6 +32,7 @@
#include "glist.h"
#include "gslice.h"
+#include "gmessages.h"
#include "gtestutils.h"
@@ -97,18 +98,20 @@
/**
* g_list_previous:
* @list: an element in a #GList.
- * @Returns: the previous element, or %NULL if there are no previous
- * elements.
*
* A convenience macro to get the previous element in a #GList.
+ *
+ * Returns: the previous element, or %NULL if there are no previous
+ * elements.
**/
/**
* g_list_next:
* @list: an element in a #GList.
- * @Returns: the next element, or %NULL if there are no more elements.
*
* A convenience macro to get the next element in a #GList.
+ *
+ * Returns: the next element, or %NULL if there are no more elements.
**/
#define _g_list_alloc() g_slice_new (GList)
@@ -117,11 +120,12 @@
/**
* g_list_alloc:
- * @Returns: a pointer to the newly-allocated #GList element.
*
* Allocates space for one #GList element. It is called by
* g_list_append(), g_list_prepend(), g_list_insert() and
* g_list_insert_sorted() and so is rarely used on its own.
+ *
+ * Returns: a pointer to the newly-allocated #GList element.
**/
GList*
g_list_alloc (void)
@@ -417,6 +421,37 @@ g_list_concat (GList *list1, GList *list2)
return list1;
}
+static inline GList*
+_g_list_remove_link (GList *list,
+ GList *link)
+{
+ if (link == NULL)
+ return list;
+
+ if (link->prev)
+ {
+ if (link->prev->next == link)
+ link->prev->next = link->next;
+ else
+ g_warning ("corrupted double-linked list detected");
+ }
+ if (link->next)
+ {
+ if (link->next->prev == link)
+ link->next->prev = link->prev;
+ else
+ g_warning ("corrupted double-linked list detected");
+ }
+
+ if (link == list)
+ list = list->next;
+
+ link->next = NULL;
+ link->prev = NULL;
+
+ return list;
+}
+
/**
* g_list_remove:
* @list: a #GList
@@ -433,7 +468,7 @@ g_list_remove (GList *list,
gconstpointer data)
{
GList *tmp;
-
+
tmp = list;
while (tmp)
{
@@ -441,16 +476,9 @@ g_list_remove (GList *list,
tmp = tmp->next;
else
{
- if (tmp->prev)
- tmp->prev->next = tmp->next;
- if (tmp->next)
- tmp->next->prev = tmp->prev;
-
- if (list == tmp)
- list = list->next;
-
+ list = _g_list_remove_link (list, tmp);
_g_list_free1 (tmp);
-
+
break;
}
}
@@ -462,9 +490,9 @@ g_list_remove (GList *list,
* @list: a #GList
* @data: data to remove
*
- * Removes all list nodes with data equal to @data.
- * Returns the new head of the list. Contrast with
- * g_list_remove() which removes only the first node
+ * Removes all list nodes with data equal to @data.
+ * Returns the new head of the list. Contrast with
+ * g_list_remove() which removes only the first node
* matching the given data.
*
* Returns: new head of @list
@@ -497,27 +525,6 @@ g_list_remove_all (GList *list,
return list;
}
-static inline GList*
-_g_list_remove_link (GList *list,
- GList *link)
-{
- if (link)
- {
- if (link->prev)
- link->prev->next = link->next;
- if (link->next)
- link->next->prev = link->prev;
-
- if (link == list)
- list = list->next;
-
- link->next = NULL;
- link->prev = NULL;
- }
-
- return list;
-}
-
/**
* g_list_remove_link:
* @list: a #GList
@@ -566,7 +573,8 @@ g_list_delete_link (GList *list,
* <note><para>
* Note that this is a "shallow" copy. If the list elements
* consist of pointers to data, the pointers are copied but
- * the actual data is not.
+ * the actual data is not. See g_list_copy_deep() if you need
+ * to copy the data as well.
* </para></note>
*
* Returns: a copy of @list
@@ -574,6 +582,41 @@ g_list_delete_link (GList *list,
GList*
g_list_copy (GList *list)
{
+ return g_list_copy_deep (list, NULL, NULL);
+}
+
+/**
+ * g_list_copy_deep:
+ * @list: a #GList
+ * @func: a copy function used to copy every element in the list
+ * @user_data: user data passed to the copy function @func, or #NULL
+ *
+ * Makes a full (deep) copy of a #GList.
+ *
+ * In contrast with g_list_copy(), this function uses @func to make a copy of
+ * each list element, in addition to copying the list container itself.
+ *
+ * @func, as a #GCopyFunc, takes two arguments, the data to be copied and a user
+ * pointer. It's safe to pass #NULL as user_data, if the copy function takes only
+ * one argument.
+ *
+ * For instance, if @list holds a list of GObjects, you can do:
+ * |[
+ * another_list = g_list_copy_deep (list, (GCopyFunc) g_object_ref, NULL);
+ * ]|
+ *
+ * And, to entirely free the new list, you could do:
+ * |[
+ * g_list_free_full (another_list, g_object_unref);
+ * ]|
+ *
+ * Returns: a full copy of @list, use #g_list_free_full to free it
+ *
+ * Since: 2.34
+ */
+GList*
+g_list_copy_deep (GList *list, GCopyFunc func, gpointer user_data)
+{
GList *new_list = NULL;
if (list)
@@ -581,7 +624,10 @@ g_list_copy (GList *list)
GList *last;
new_list = _g_list_alloc ();
- new_list->data = list->data;
+ if (func)
+ new_list->data = func (list->data, user_data);
+ else
+ new_list->data = list->data;
new_list->prev = NULL;
last = new_list;
list = list->next;
@@ -590,7 +636,10 @@ g_list_copy (GList *list)
last->next = _g_list_alloc ();
last->next->prev = last;
last = last->next;
- last->data = list->data;
+ if (func)
+ last->data = func (list->data, user_data);
+ else
+ last->data = list->data;
list = list->next;
}
last->next = NULL;
@@ -1084,13 +1133,14 @@ g_list_sort_real (GList *list,
* GCompareFunc:
* @a: a value.
* @b: a value to compare with.
- * @Returns: negative value if @a &lt; @b; zero if @a = @b; positive
- * value if @a > @b.
*
* Specifies the type of a comparison function used to compare two
* values. The function should return a negative integer if the first
* value comes before the second, 0 if they are equal, or a positive
* integer if the first value comes after the second.
+ *
+ * Returns: negative value if @a &lt; @b; zero if @a = @b; positive
+ * value if @a > @b.
**/
GList *
g_list_sort (GList *list,
@@ -1116,13 +1166,14 @@ g_list_sort (GList *list,
* @a: a value.
* @b: a value to compare with.
* @user_data: user data to pass to comparison function.
- * @Returns: negative value if @a &lt; @b; zero if @a = @b; positive
- * value if @a > @b.
*
* Specifies the type of a comparison function used to compare two
* values. The function should return a negative integer if the first
* value comes before the second, 0 if they are equal, or a positive
* integer if the first value comes after the second.
+ *
+ * Returns: negative value if @a &lt; @b; zero if @a = @b; positive
+ * value if @a > @b.
**/
GList *
g_list_sort_with_data (GList *list,
diff --git a/glib/glib/glist.h b/glib/glib/glist.h
index aaa11f2..120e788 100644
--- a/glib/glib/glist.h
+++ b/glib/glib/glist.h
@@ -24,14 +24,15 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_LIST_H__
+#define __G_LIST_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_LIST_H__
-#define __G_LIST_H__
-
#include <glib/gmem.h>
+#include <glib/gnode.h>
G_BEGIN_DECLS
@@ -46,65 +47,101 @@ struct _GList
/* Doubly linked lists
*/
+GLIB_AVAILABLE_IN_ALL
GList* g_list_alloc (void) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
void g_list_free (GList *list);
+GLIB_AVAILABLE_IN_ALL
void g_list_free_1 (GList *list);
#define g_list_free1 g_list_free_1
+GLIB_AVAILABLE_IN_ALL
void g_list_free_full (GList *list,
GDestroyNotify free_func);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_append (GList *list,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_prepend (GList *list,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_insert (GList *list,
gpointer data,
gint position) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_insert_sorted (GList *list,
gpointer data,
GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_insert_sorted_with_data (GList *list,
gpointer data,
GCompareDataFunc func,
gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_insert_before (GList *list,
GList *sibling,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_concat (GList *list1,
GList *list2) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_remove (GList *list,
gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_remove_all (GList *list,
gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_remove_link (GList *list,
GList *llink) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_delete_link (GList *list,
GList *link_) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_reverse (GList *list) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_copy (GList *list) G_GNUC_WARN_UNUSED_RESULT;
+
+GLIB_AVAILABLE_IN_2_34
+GList* g_list_copy_deep (GList *list,
+ GCopyFunc func,
+ gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+
+GLIB_AVAILABLE_IN_ALL
GList* g_list_nth (GList *list,
guint n);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_nth_prev (GList *list,
guint n);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_find (GList *list,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_find_custom (GList *list,
gconstpointer data,
GCompareFunc func);
+GLIB_AVAILABLE_IN_ALL
gint g_list_position (GList *list,
GList *llink);
+GLIB_AVAILABLE_IN_ALL
gint g_list_index (GList *list,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_last (GList *list);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_first (GList *list);
+GLIB_AVAILABLE_IN_ALL
guint g_list_length (GList *list);
+GLIB_AVAILABLE_IN_ALL
void g_list_foreach (GList *list,
GFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
GList* g_list_sort (GList *list,
GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GList* g_list_sort_with_data (GList *list,
GCompareDataFunc compare_func,
gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gpointer g_list_nth_data (GList *list,
guint n);
diff --git a/glib/glib/gmacros.h b/glib/glib/gmacros.h
index 4ad57da..f3f542b 100644
--- a/glib/glib/gmacros.h
+++ b/glib/glib/gmacros.h
@@ -28,13 +28,13 @@
* not refer to variables from glibconfig.h
*/
+#ifndef __G_MACROS_H__
+#define __G_MACROS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MACROS_H__
-#define __G_MACROS_H__
-
/* We include stddef.h to get the system's definition of NULL
*/
#include <stddef.h>
@@ -120,6 +120,12 @@
_Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
#define G_GNUC_END_IGNORE_DEPRECATIONS \
_Pragma ("GCC diagnostic pop")
+#elif defined (_MSC_VER) && (_MSC_VER >= 1500)
+#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
+ __pragma (warning (push)) \
+ __pragma (warning (disable : 4996))
+#define G_GNUC_END_IGNORE_DEPRECATIONS \
+ __pragma (warning (pop))
#else
#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
#define G_GNUC_END_IGNORE_DEPRECATIONS
@@ -152,6 +158,19 @@
#endif /* !__GNUC__ */
#endif /* !G_DISABLE_DEPRECATED */
+/* Clang feature detection: http://clang.llvm.org/docs/LanguageExtensions.html */
+#ifndef __has_feature
+#define __has_feature(x) 0
+#endif
+
+#if __has_feature(attribute_analyzer_noreturn)
+#define G_ANALYZER_ANALYZING 1
+#define G_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
+#else
+#define G_ANALYZER_ANALYZING 0
+#define G_ANALYZER_NORETURN
+#endif
+
#define G_STRINGIFY(macro_or_string) G_STRINGIFY_ARG (macro_or_string)
#define G_STRINGIFY_ARG(contents) #contents
@@ -159,9 +178,9 @@
#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2
#define G_PASTE(identifier1,identifier2) G_PASTE_ARGS (identifier1, identifier2)
#ifdef __COUNTER__
-#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1]
+#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
#else
-#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __LINE__)[(expr) ? 1 : -1]
+#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __LINE__)[(expr) ? 1 : -1] G_GNUC_UNUSED
#endif
#define G_STATIC_ASSERT_EXPR(expr) ((void) sizeof (char[(expr) ? 1 : -1]))
#endif
@@ -174,11 +193,11 @@
#endif
/* Provide a string identifying the current function, non-concatenatable */
-#if defined (__GNUC__)
+#if defined (__GNUC__) && defined (__cplusplus)
# define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 19901L
# define G_STRFUNC ((const char*) (__func__))
-#elif defined(_MSC_VER) && (_MSC_VER > 1300)
+#elif defined (__GNUC__) || (defined(_MSC_VER) && (_MSC_VER > 1300))
# define G_STRFUNC ((const char*) (__FUNCTION__))
#else
# define G_STRFUNC ((const char*) ("???"))
@@ -321,7 +340,11 @@
#elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320)
#define G_UNAVAILABLE(maj,min) __declspec(deprecated("is not available before " #maj "." #min))
#else
-#define G_UNAVAILABLE(maj,min)
+#define G_UNAVAILABLE(maj,min) G_DEPRECATED
+#endif
+
+#ifndef _GLIB_EXTERN
+#define _GLIB_EXTERN extern
#endif
/* These macros are used to mark deprecated functions in GLib headers,
@@ -331,13 +354,13 @@
*/
#ifdef GLIB_DISABLE_DEPRECATION_WARNINGS
-#define GLIB_DEPRECATED
-#define GLIB_DEPRECATED_FOR(f)
-#define GLIB_UNAVAILABLE(maj,min)
+#define GLIB_DEPRECATED _GLIB_EXTERN
+#define GLIB_DEPRECATED_FOR(f) _GLIB_EXTERN
+#define GLIB_UNAVAILABLE(maj,min) _GLIB_EXTERN
#else
-#define GLIB_DEPRECATED G_DEPRECATED
-#define GLIB_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f)
-#define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min)
+#define GLIB_DEPRECATED G_DEPRECATED _GLIB_EXTERN
+#define GLIB_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GLIB_EXTERN
+#define GLIB_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _GLIB_EXTERN
#endif
#endif /* __G_MACROS_H__ */
diff --git a/glib/glib/gmain-internal.h b/glib/glib/gmain-internal.h
index 648aff3..97775ca 100644
--- a/glib/glib/gmain-internal.h
+++ b/glib/glib/gmain-internal.h
@@ -17,13 +17,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_MAIN_INTERNAL_H__
+#define __G_MAIN_INTERNAL_H__
+
#if !defined (GLIB_COMPILATION)
#error "This is a private header"
#endif
-#ifndef __G_MAIN_INTERNAL_H__
-#define __G_MAIN_INTERNAL_H__
-
#include "gmain.h"
G_BEGIN_DECLS
diff --git a/glib/glib/gmain.c b/glib/glib/gmain.c
index 60c80c7..ed7a9e8 100644
--- a/glib/glib/gmain.c
+++ b/glib/glib/gmain.c
@@ -98,6 +98,7 @@
#include "gwakeup.h"
#include "gmain-internal.h"
+#include "glib-init.h"
#include "glib-private.h"
/**
@@ -195,6 +196,14 @@ typedef enum
G_SOURCE_BLOCKED = 1 << (G_HOOK_FLAG_USER_SHIFT + 2)
} GSourceFlags;
+typedef struct _GSourceList GSourceList;
+
+struct _GSourceList
+{
+ GSource *head, *tail;
+ gint priority;
+};
+
typedef struct _GMainWaiter GMainWaiter;
struct _GMainWaiter
@@ -232,7 +241,8 @@ struct _GMainContext
gint timeout; /* Timeout for current iteration */
guint next_id;
- GSource *source_list;
+ GHashTable *overflow_used_source_ids; /* set<guint> */
+ GList *source_lists;
gint in_check_or_prepare;
GPollRec *poll_records, *poll_records_tail;
@@ -271,7 +281,6 @@ struct _GMainLoop
struct _GTimeoutSource
{
GSource source;
- gint64 expiration;
guint interval;
gboolean seconds;
};
@@ -307,8 +316,23 @@ struct _GSourcePrivate
{
GSList *child_sources;
GSource *parent_source;
+
+ gint64 ready_time;
+
+ /* This is currently only used on UNIX, but we always declare it (and
+ * let it remain empty on Windows) to avoid #ifdef all over the place.
+ */
+ GSList *fds;
};
+typedef struct _GSourceIter
+{
+ GMainContext *context;
+ gboolean may_modify;
+ GList *current_list;
+ GSource *source;
+} GSourceIter;
+
#define LOCK_CONTEXT(context) g_mutex_lock (&context->mutex)
#define UNLOCK_CONTEXT(context) g_mutex_unlock (&context->mutex)
#define G_THREAD_SELF g_thread_self ()
@@ -336,6 +360,9 @@ static void g_source_destroy_internal (GSource *source,
static void g_source_set_priority_unlocked (GSource *source,
GMainContext *context,
gint priority);
+static void g_child_source_remove_internal (GSource *child_source,
+ GMainContext *context);
+
static void g_main_context_poll (GMainContext *context,
gint timeout,
gint priority,
@@ -347,9 +374,13 @@ static void g_main_context_add_poll_unlocked (GMainContext *context,
static void g_main_context_remove_poll_unlocked (GMainContext *context,
GPollFD *fd);
-static gboolean g_timeout_prepare (GSource *source,
- gint *timeout);
-static gboolean g_timeout_check (GSource *source);
+static void g_source_iter_init (GSourceIter *iter,
+ GMainContext *context,
+ gboolean may_modify);
+static gboolean g_source_iter_next (GSourceIter *iter,
+ GSource **source);
+static void g_source_iter_clear (GSourceIter *iter);
+
static gboolean g_timeout_dispatch (GSource *source,
GSourceFunc callback,
gpointer user_data);
@@ -377,6 +408,8 @@ static gboolean g_idle_dispatch (GSource *source,
GSourceFunc callback,
gpointer user_data);
+static void block_source (GSource *source);
+
static GMainContext *glib_worker_context;
G_LOCK_DEFINE_STATIC (main_loop);
@@ -395,13 +428,14 @@ static volatile sig_atomic_t any_unix_signal_pending;
static volatile int unix_signal_pending[NSIG];
static volatile int any_unix_signal_pending;
#endif
+static volatile guint unix_signal_refcount[NSIG];
/* Guards all the data below */
G_LOCK_DEFINE_STATIC (unix_signal_lock);
static GSList *unix_signal_watches;
static GSList *unix_child_watches;
-static GSourceFuncs g_unix_signal_funcs =
+GSourceFuncs g_unix_signal_funcs =
{
g_unix_signal_watch_prepare,
g_unix_signal_watch_check,
@@ -414,8 +448,8 @@ static GSList *main_context_list = NULL;
GSourceFuncs g_timeout_funcs =
{
- g_timeout_prepare,
- g_timeout_check,
+ NULL, /* prepare */
+ NULL, /* check */
g_timeout_dispatch,
NULL
};
@@ -472,7 +506,11 @@ poll_rec_list_free (GMainContext *context,
void
g_main_context_unref (GMainContext *context)
{
+ GSourceIter iter;
GSource *source;
+ GList *sl_iter;
+ GSourceList *list;
+
g_return_if_fail (context != NULL);
g_return_if_fail (g_atomic_int_get (&context->ref_count) > 0);
@@ -483,13 +521,25 @@ g_main_context_unref (GMainContext *context)
main_context_list = g_slist_remove (main_context_list, context);
G_UNLOCK (main_context_list);
- source = context->source_list;
- while (source)
+ /* g_source_iter_next() assumes the context is locked. */
+ LOCK_CONTEXT (context);
+ g_source_iter_init (&iter, context, TRUE);
+ while (g_source_iter_next (&iter, &source))
+ {
+ source->context = NULL;
+ g_source_destroy_internal (source, context, TRUE);
+ }
+ UNLOCK_CONTEXT (context);
+
+ for (sl_iter = context->source_lists; sl_iter; sl_iter = sl_iter->next)
{
- GSource *next = source->next;
- g_source_destroy_internal (source, context, FALSE);
- source = next;
+ list = sl_iter->data;
+ g_slice_free (GSourceList, list);
}
+ g_list_free (context->source_lists);
+
+ if (context->overflow_used_source_ids)
+ g_hash_table_destroy (context->overflow_used_source_ids);
g_mutex_clear (&context->mutex);
@@ -504,6 +554,18 @@ g_main_context_unref (GMainContext *context)
g_free (context);
}
+/* Helper function used by mainloop/overflow test.
+ */
+GMainContext *
+g_main_context_new_with_next_id (guint next_id)
+{
+ GMainContext *ret = g_main_context_new ();
+
+ ret->next_id = next_id;
+
+ return ret;
+}
+
/**
* g_main_context_new:
*
@@ -539,7 +601,7 @@ g_main_context_new (void)
context->next_id = 1;
- context->source_list = NULL;
+ context->source_lists = NULL;
context->poll_func = g_poll;
@@ -791,7 +853,7 @@ g_source_new (GSourceFuncs *source_funcs,
g_return_val_if_fail (struct_size >= sizeof (GSource), NULL);
source = (GSource*) g_malloc0 (struct_size);
-
+ source->priv = g_slice_new0 (GSourcePrivate);
source->source_funcs = source_funcs;
source->ref_count = 1;
@@ -799,96 +861,292 @@ g_source_new (GSourceFuncs *source_funcs,
source->flags = G_HOOK_FLAG_ACTIVE;
+ source->priv->ready_time = -1;
+
/* NULL/0 initialization for all other fields */
return source;
}
+/* Holds context's lock */
+static void
+g_source_iter_init (GSourceIter *iter,
+ GMainContext *context,
+ gboolean may_modify)
+{
+ iter->context = context;
+ iter->current_list = NULL;
+ iter->source = NULL;
+ iter->may_modify = may_modify;
+}
+
+/* Holds context's lock */
+static gboolean
+g_source_iter_next (GSourceIter *iter, GSource **source)
+{
+ GSource *next_source;
+
+ if (iter->source)
+ next_source = iter->source->next;
+ else
+ next_source = NULL;
+
+ if (!next_source)
+ {
+ if (iter->current_list)
+ iter->current_list = iter->current_list->next;
+ else
+ iter->current_list = iter->context->source_lists;
+
+ if (iter->current_list)
+ {
+ GSourceList *source_list = iter->current_list->data;
+
+ next_source = source_list->head;
+ }
+ }
+
+ /* Note: unreffing iter->source could potentially cause its
+ * GSourceList to be removed from source_lists (if iter->source is
+ * the only source in its list, and it is destroyed), so we have to
+ * keep it reffed until after we advance iter->current_list, above.
+ */
+
+ if (iter->source && iter->may_modify)
+ SOURCE_UNREF (iter->source, iter->context);
+ iter->source = next_source;
+ if (iter->source && iter->may_modify)
+ iter->source->ref_count++;
+
+ *source = iter->source;
+ return *source != NULL;
+}
+
+/* Holds context's lock. Only necessary to call if you broke out of
+ * the g_source_iter_next() loop early.
+ */
+static void
+g_source_iter_clear (GSourceIter *iter)
+{
+ if (iter->source && iter->may_modify)
+ {
+ SOURCE_UNREF (iter->source, iter->context);
+ iter->source = NULL;
+ }
+}
+
+/* Holds context's lock
+ */
+static GSourceList *
+find_source_list_for_priority (GMainContext *context,
+ gint priority,
+ gboolean create)
+{
+ GList *iter, *last;
+ GSourceList *source_list;
+
+ last = NULL;
+ for (iter = context->source_lists; iter != NULL; last = iter, iter = iter->next)
+ {
+ source_list = iter->data;
+
+ if (source_list->priority == priority)
+ return source_list;
+
+ if (source_list->priority > priority)
+ {
+ if (!create)
+ return NULL;
+
+ source_list = g_slice_new0 (GSourceList);
+ source_list->priority = priority;
+ context->source_lists = g_list_insert_before (context->source_lists,
+ iter,
+ source_list);
+ return source_list;
+ }
+ }
+
+ if (!create)
+ return NULL;
+
+ source_list = g_slice_new0 (GSourceList);
+ source_list->priority = priority;
+
+ if (!last)
+ context->source_lists = g_list_append (NULL, source_list);
+ else
+ {
+ /* This just appends source_list to the end of
+ * context->source_lists without having to walk the list again.
+ */
+ last = g_list_append (last, source_list);
+ }
+ return source_list;
+}
+
/* Holds context's lock
*/
static void
-g_source_list_add (GSource *source,
- GMainContext *context)
+source_add_to_context (GSource *source,
+ GMainContext *context)
{
- GSource *tmp_source, *last_source;
-
- if (source->priv && source->priv->parent_source)
+ GSourceList *source_list;
+ GSource *prev, *next;
+
+ source_list = find_source_list_for_priority (context, source->priority, TRUE);
+
+ if (source->priv->parent_source)
{
+ g_assert (source_list->head != NULL);
+
/* Put the source immediately before its parent */
- tmp_source = source->priv->parent_source;
- last_source = source->priv->parent_source->prev;
+ prev = source->priv->parent_source->prev;
+ next = source->priv->parent_source;
}
else
{
- last_source = NULL;
- tmp_source = context->source_list;
- while (tmp_source && tmp_source->priority <= source->priority)
- {
- last_source = tmp_source;
- tmp_source = tmp_source->next;
- }
+ prev = source_list->tail;
+ next = NULL;
}
- source->next = tmp_source;
- if (tmp_source)
- tmp_source->prev = source;
+ source->next = next;
+ if (next)
+ next->prev = source;
+ else
+ source_list->tail = source;
- source->prev = last_source;
- if (last_source)
- last_source->next = source;
+ source->prev = prev;
+ if (prev)
+ prev->next = source;
else
- context->source_list = source;
+ source_list->head = source;
}
/* Holds context's lock
*/
static void
-g_source_list_remove (GSource *source,
- GMainContext *context)
+source_remove_from_context (GSource *source,
+ GMainContext *context)
{
+ GSourceList *source_list;
+
+ source_list = find_source_list_for_priority (context, source->priority, FALSE);
+ g_return_if_fail (source_list != NULL);
+
if (source->prev)
source->prev->next = source->next;
else
- context->source_list = source->next;
+ source_list->head = source->next;
if (source->next)
source->next->prev = source->prev;
+ else
+ source_list->tail = source->prev;
source->prev = NULL;
source->next = NULL;
+
+ if (source_list->head == NULL)
+ {
+ context->source_lists = g_list_remove (context->source_lists, source_list);
+ g_slice_free (GSourceList, source_list);
+ }
+
+ if (context->overflow_used_source_ids)
+ g_hash_table_remove (context->overflow_used_source_ids,
+ GUINT_TO_POINTER (source->source_id));
+
+}
+
+static void
+assign_source_id_unlocked (GMainContext *context,
+ GSource *source)
+{
+ guint id;
+
+ /* Are we about to overflow back to 0?
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=687098
+ */
+ if (G_UNLIKELY (context->next_id == G_MAXUINT &&
+ context->overflow_used_source_ids == NULL))
+ {
+ GSourceIter iter;
+ GSource *source;
+
+ context->overflow_used_source_ids = g_hash_table_new (NULL, NULL);
+
+ g_source_iter_init (&iter, context, FALSE);
+ while (g_source_iter_next (&iter, &source))
+ {
+ g_hash_table_add (context->overflow_used_source_ids,
+ GUINT_TO_POINTER (source->source_id));
+ }
+ id = G_MAXUINT;
+ }
+ else if (context->overflow_used_source_ids == NULL)
+ {
+ id = context->next_id++;
+ }
+ else
+ {
+ /*
+ * If we overran G_MAXUINT, we fall back to randomly probing the
+ * source ids for the current context. This will be slower the more
+ * sources there are, but we're mainly concerned right now about
+ * correctness and code size. There's time for a more clever solution
+ * later.
+ */
+ do
+ id = g_random_int ();
+ while (id == 0 ||
+ g_hash_table_contains (context->overflow_used_source_ids,
+ GUINT_TO_POINTER (id)));
+ g_hash_table_add (context->overflow_used_source_ids, GUINT_TO_POINTER (id));
+ }
+
+ source->source_id = id;
}
static guint
g_source_attach_unlocked (GSource *source,
- GMainContext *context)
+ GMainContext *context,
+ gboolean do_wakeup)
{
- guint result = 0;
GSList *tmp_list;
source->context = context;
- result = source->source_id = context->next_id++;
-
+ assign_source_id_unlocked (context, source);
source->ref_count++;
- g_source_list_add (source, context);
+ source_add_to_context (source, context);
- tmp_list = source->poll_fds;
- while (tmp_list)
+ if (!SOURCE_BLOCKED (source))
{
- g_main_context_add_poll_unlocked (context, source->priority, tmp_list->data);
- tmp_list = tmp_list->next;
+ tmp_list = source->poll_fds;
+ while (tmp_list)
+ {
+ g_main_context_add_poll_unlocked (context, source->priority, tmp_list->data);
+ tmp_list = tmp_list->next;
+ }
+
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ g_main_context_add_poll_unlocked (context, source->priority, tmp_list->data);
}
- if (source->priv)
+ tmp_list = source->priv->child_sources;
+ while (tmp_list)
{
- tmp_list = source->priv->child_sources;
- while (tmp_list)
- {
- g_source_attach_unlocked (tmp_list->data, context);
- tmp_list = tmp_list->next;
- }
+ g_source_attach_unlocked (tmp_list->data, context, FALSE);
+ tmp_list = tmp_list->next;
}
- return result;
+ /* If another thread has acquired the context, wake it up since it
+ * might be in poll() right now.
+ */
+ if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
+ g_wakeup_signal (context->wakeup);
+
+ return source->source_id;
}
/**
@@ -916,13 +1174,7 @@ g_source_attach (GSource *source,
LOCK_CONTEXT (context);
- result = g_source_attach_unlocked (source, context);
-
- /* If another thread has acquired the context, wake it up since it
- * might be in poll() right now.
- */
- if (context->owner && context->owner != G_THREAD_SELF)
- g_wakeup_signal (context->wakeup);
+ result = g_source_attach_unlocked (source, context, TRUE);
UNLOCK_CONTEXT (context);
@@ -966,25 +1218,16 @@ g_source_destroy_internal (GSource *source,
g_main_context_remove_poll_unlocked (context, tmp_list->data);
tmp_list = tmp_list->next;
}
- }
- if (source->priv && source->priv->child_sources)
- {
- /* This is safe because even if a child_source finalizer or
- * closure notify tried to modify source->priv->child_sources
- * from outside the lock, it would fail since
- * SOURCE_DESTROYED(source) is now TRUE.
- */
- tmp_list = source->priv->child_sources;
- while (tmp_list)
- {
- g_source_destroy_internal (tmp_list->data, context, TRUE);
- g_source_unref_internal (tmp_list->data, context, TRUE);
- tmp_list = tmp_list->next;
- }
- g_slist_free (source->priv->child_sources);
- source->priv->child_sources = NULL;
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ g_main_context_remove_poll_unlocked (context, tmp_list->data);
}
+
+ while (source->priv->child_sources)
+ g_child_source_remove_internal (source->priv->child_sources->data, context);
+
+ if (source->priv->parent_source)
+ g_child_source_remove_internal (source, context);
g_source_unref_internal (source, context, TRUE);
}
@@ -1047,7 +1290,13 @@ g_source_get_id (GSource *source)
* @source: a #GSource
*
* Gets the #GMainContext with which the source is associated.
- * Calling this function on a destroyed source is an error.
+ *
+ * You can call this on a source that has been destroyed, provided
+ * that the #GMainContext it was attached to still exists (in which
+ * case it will return that #GMainContext). In particular, you can
+ * always call this function on the source returned from
+ * g_main_current_source(). But calling this function on a source
+ * whose #GMainContext has been destroyed is an error.
*
* Return value: (transfer none) (allow-none): the #GMainContext with which the
* source is associated, or %NULL if the context has not
@@ -1056,7 +1305,7 @@ g_source_get_id (GSource *source)
GMainContext *
g_source_get_context (GSource *source)
{
- g_return_val_if_fail (!SOURCE_DESTROYED (source), NULL);
+ g_return_val_if_fail (source->context != NULL || !SOURCE_DESTROYED (source), NULL);
return source->context;
}
@@ -1066,12 +1315,16 @@ g_source_get_context (GSource *source)
* @source:a #GSource
* @fd: a #GPollFD structure holding information about a file
* descriptor to watch.
- *
+ *
* Adds a file descriptor to the set of file descriptors polled for
* this source. This is usually combined with g_source_new() to add an
* event source. The event source's check function will typically test
* the @revents field in the #GPollFD struct and return %TRUE if events need
* to be processed.
+ *
+ * Using this API forces the linear scanning of event sources on each
+ * main loop iteration. Newly-written event sources should try to use
+ * g_source_add_unix_fd() instead of this API.
**/
void
g_source_add_poll (GSource *source,
@@ -1164,30 +1417,41 @@ g_source_add_child_source (GSource *source,
g_return_if_fail (!SOURCE_DESTROYED (source));
g_return_if_fail (!SOURCE_DESTROYED (child_source));
g_return_if_fail (child_source->context == NULL);
- g_return_if_fail (child_source->priv == NULL || child_source->priv->parent_source == NULL);
+ g_return_if_fail (child_source->priv->parent_source == NULL);
context = source->context;
if (context)
LOCK_CONTEXT (context);
- if (!source->priv)
- source->priv = g_slice_new0 (GSourcePrivate);
- if (!child_source->priv)
- child_source->priv = g_slice_new0 (GSourcePrivate);
-
source->priv->child_sources = g_slist_prepend (source->priv->child_sources,
g_source_ref (child_source));
child_source->priv->parent_source = source;
g_source_set_priority_unlocked (child_source, NULL, source->priority);
+ if (SOURCE_BLOCKED (source))
+ block_source (child_source);
if (context)
{
+ g_source_attach_unlocked (child_source, context, TRUE);
UNLOCK_CONTEXT (context);
- g_source_attach (child_source, context);
}
}
+static void
+g_child_source_remove_internal (GSource *child_source,
+ GMainContext *context)
+{
+ GSource *parent_source = child_source->priv->parent_source;
+
+ parent_source->priv->child_sources =
+ g_slist_remove (parent_source->priv->child_sources, child_source);
+ child_source->priv->parent_source = NULL;
+
+ g_source_destroy_internal (child_source, context, TRUE);
+ g_source_unref_internal (child_source, context, TRUE);
+}
+
/**
* g_source_remove_child_source:
* @source:a #GSource
@@ -1206,7 +1470,7 @@ g_source_remove_child_source (GSource *source,
g_return_if_fail (source != NULL);
g_return_if_fail (child_source != NULL);
- g_return_if_fail (child_source->priv != NULL && child_source->priv->parent_source == source);
+ g_return_if_fail (child_source->priv->parent_source == source);
g_return_if_fail (!SOURCE_DESTROYED (source));
g_return_if_fail (!SOURCE_DESTROYED (child_source));
@@ -1215,9 +1479,7 @@ g_source_remove_child_source (GSource *source,
if (context)
LOCK_CONTEXT (context);
- source->priv->child_sources = g_slist_remove (source->priv->child_sources, child_source);
- g_source_destroy_internal (child_source, context, TRUE);
- g_source_unref_internal (child_source, context, TRUE);
+ g_child_source_remove_internal (child_source, context);
if (context)
UNLOCK_CONTEXT (context);
@@ -1375,15 +1637,22 @@ g_source_set_priority_unlocked (GSource *source,
{
GSList *tmp_list;
- source->priority = priority;
+ g_return_if_fail (source->priv->parent_source == NULL ||
+ source->priv->parent_source->priority == priority);
if (context)
{
/* Remove the source from the context's source and then
- * add it back so it is sorted in the correct place
+ * add it back after so it is sorted in the correct place
*/
- g_source_list_remove (source, source->context);
- g_source_list_add (source, source->context);
+ source_remove_from_context (source, source->context);
+ }
+
+ source->priority = priority;
+
+ if (context)
+ {
+ source_add_to_context (source, source->context);
if (!SOURCE_BLOCKED (source))
{
@@ -1395,10 +1664,16 @@ g_source_set_priority_unlocked (GSource *source,
tmp_list = tmp_list->next;
}
+
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ {
+ g_main_context_remove_poll_unlocked (context, tmp_list->data);
+ g_main_context_add_poll_unlocked (context, priority, tmp_list->data);
+ }
}
}
- if (source->priv && source->priv->child_sources)
+ if (source->priv->child_sources)
{
tmp_list = source->priv->child_sources;
while (tmp_list)
@@ -1453,6 +1728,79 @@ g_source_get_priority (GSource *source)
}
/**
+ * g_source_set_ready_time:
+ * @source: a #GSource
+ * @ready_time: the monotonic time at which the source will be ready,
+ * 0 for "immediately", -1 for "never"
+ *
+ * Sets a #GSource to be dispatched when the given monotonic time is
+ * reached (or passed). If the monotonic time is in the past (as it
+ * always will be if @ready_time is 0) then the source will be
+ * dispatched immediately.
+ *
+ * If @ready_time is -1 then the source is never woken up on the basis
+ * of the passage of time.
+ *
+ * Dispatching the source does not reset the ready time. You should do
+ * so yourself, from the source dispatch function.
+ *
+ * Note that if you have a pair of sources where the ready time of one
+ * suggests that it will be delivered first but the priority for the
+ * other suggests that it would be delivered first, and the ready time
+ * for both sources is reached during the same main context iteration
+ * then the order of dispatch is undefined.
+ *
+ * Since: 2.36
+ **/
+void
+g_source_set_ready_time (GSource *source,
+ gint64 ready_time)
+{
+ GMainContext *context;
+
+ g_return_if_fail (source != NULL);
+ g_return_if_fail (source->ref_count > 0);
+
+ if (source->priv->ready_time == ready_time)
+ return;
+
+ context = source->context;
+
+ if (context)
+ LOCK_CONTEXT (context);
+
+ source->priv->ready_time = ready_time;
+
+ if (context)
+ {
+ /* Quite likely that we need to change the timeout on the poll */
+ if (!SOURCE_BLOCKED (source))
+ g_wakeup_signal (context->wakeup);
+ UNLOCK_CONTEXT (context);
+ }
+}
+
+/**
+ * g_source_get_ready_time:
+ * @source: a #GSource
+ *
+ * Gets the "ready time" of @source, as set by
+ * g_source_set_ready_time().
+ *
+ * Any time before the current monotonic time (including 0) is an
+ * indication that the source will fire immediately.
+ *
+ * Returns: the monotonic ready time, -1 for "never"
+ **/
+gint64
+g_source_get_ready_time (GSource *source)
+{
+ g_return_val_if_fail (source != NULL, -1);
+
+ return source->priv->ready_time;
+}
+
+/**
* g_source_set_can_recurse:
* @source: a #GSource
* @can_recurse: whether recursion is allowed for this source
@@ -1639,7 +1987,7 @@ g_source_unref_internal (GSource *source,
{
if (!SOURCE_DESTROYED (source))
g_warning (G_STRLOC ": ref_count == 0, but source was still attached to a context!");
- g_source_list_remove (source, context);
+ source_remove_from_context (source, context);
}
if (source->source_funcs->finalize)
@@ -1657,11 +2005,10 @@ g_source_unref_internal (GSource *source,
g_slist_free (source->poll_fds);
source->poll_fds = NULL;
- if (source->priv)
- {
- g_slice_free (GSourcePrivate, source->priv);
- source->priv = NULL;
- }
+ g_slist_free_full (source->priv->fds, g_free);
+
+ g_slice_free (GSourcePrivate, source->priv);
+ source->priv = NULL;
g_free (source);
}
@@ -1710,6 +2057,7 @@ GSource *
g_main_context_find_source_by_id (GMainContext *context,
guint source_id)
{
+ GSourceIter iter;
GSource *source;
g_return_val_if_fail (source_id > 0, NULL);
@@ -1719,14 +2067,14 @@ g_main_context_find_source_by_id (GMainContext *context,
LOCK_CONTEXT (context);
- source = context->source_list;
- while (source)
+ g_source_iter_init (&iter, context, FALSE);
+ while (g_source_iter_next (&iter, &source))
{
if (!SOURCE_DESTROYED (source) &&
source->source_id == source_id)
break;
- source = source->next;
}
+ g_source_iter_clear (&iter);
UNLOCK_CONTEXT (context);
@@ -1750,6 +2098,7 @@ g_main_context_find_source_by_funcs_user_data (GMainContext *context,
GSourceFuncs *funcs,
gpointer user_data)
{
+ GSourceIter iter;
GSource *source;
g_return_val_if_fail (funcs != NULL, NULL);
@@ -1759,8 +2108,8 @@ g_main_context_find_source_by_funcs_user_data (GMainContext *context,
LOCK_CONTEXT (context);
- source = context->source_list;
- while (source)
+ g_source_iter_init (&iter, context, FALSE);
+ while (g_source_iter_next (&iter, &source))
{
if (!SOURCE_DESTROYED (source) &&
source->source_funcs == funcs &&
@@ -1774,8 +2123,8 @@ g_main_context_find_source_by_funcs_user_data (GMainContext *context,
if (callback_data == user_data)
break;
}
- source = source->next;
}
+ g_source_iter_clear (&iter);
UNLOCK_CONTEXT (context);
@@ -1797,6 +2146,7 @@ GSource *
g_main_context_find_source_by_user_data (GMainContext *context,
gpointer user_data)
{
+ GSourceIter iter;
GSource *source;
if (context == NULL)
@@ -1804,8 +2154,8 @@ g_main_context_find_source_by_user_data (GMainContext *context,
LOCK_CONTEXT (context);
- source = context->source_list;
- while (source)
+ g_source_iter_init (&iter, context, FALSE);
+ while (g_source_iter_next (&iter, &source))
{
if (!SOURCE_DESTROYED (source) &&
source->callback_funcs)
@@ -1818,8 +2168,8 @@ g_main_context_find_source_by_user_data (GMainContext *context,
if (callback_data == user_data)
break;
}
- source = source->next;
}
+ g_source_iter_clear (&iter);
UNLOCK_CONTEXT (context);
@@ -1910,6 +2260,174 @@ g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
return FALSE;
}
+#ifdef G_OS_UNIX
+/**
+ * g_source_add_unix_fd:
+ * @source: a #GSource
+ * @fd: the fd to monitor
+ * @events: an event mask
+ *
+ * Monitors @fd for the IO events in @events.
+ *
+ * The tag returned by this function can be used to remove or modify the
+ * monitoring of the fd using g_source_remove_unix_fd() or
+ * g_source_modify_unix_fd().
+ *
+ * It is not necessary to remove the fd before destroying the source; it
+ * will be cleaned up automatically.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Returns: an opaque tag
+ *
+ * Since: 2.36
+ **/
+gpointer
+g_source_add_unix_fd (GSource *source,
+ gint fd,
+ GIOCondition events)
+{
+ GMainContext *context;
+ GPollFD *poll_fd;
+
+ g_return_val_if_fail (source != NULL, NULL);
+ g_return_val_if_fail (!SOURCE_DESTROYED (source), NULL);
+
+ poll_fd = g_new (GPollFD, 1);
+ poll_fd->fd = fd;
+ poll_fd->events = events;
+ poll_fd->revents = 0;
+
+ context = source->context;
+
+ if (context)
+ LOCK_CONTEXT (context);
+
+ source->priv->fds = g_slist_prepend (source->priv->fds, poll_fd);
+
+ if (context)
+ {
+ if (!SOURCE_BLOCKED (source))
+ g_main_context_add_poll_unlocked (context, source->priority, poll_fd);
+ UNLOCK_CONTEXT (context);
+ }
+
+ return poll_fd;
+}
+
+/**
+ * g_source_modify_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ * @new_events: the new event mask to watch
+ *
+ * Updates the event mask to watch for the fd identified by @tag.
+ *
+ * @tag is the tag returned from g_source_add_unix_fd().
+ *
+ * If you want to remove a fd, don't set its event mask to zero.
+ * Instead, call g_source_remove_unix_fd().
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Since: 2.36
+ **/
+void
+g_source_modify_unix_fd (GSource *source,
+ gpointer tag,
+ GIOCondition new_events)
+{
+ GMainContext *context;
+ GPollFD *poll_fd;
+
+ g_return_if_fail (source != NULL);
+ g_return_if_fail (g_slist_find (source->priv->fds, tag));
+
+ context = source->context;
+ poll_fd = tag;
+
+ poll_fd->events = new_events;
+
+ if (context)
+ g_main_context_wakeup (context);
+}
+
+/**
+ * g_source_remove_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ *
+ * Reverses the effect of a previous call to g_source_add_unix_fd().
+ *
+ * You only need to call this if you want to remove an fd from being
+ * watched while keeping the same source around. In the normal case you
+ * will just want to destroy the source.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Since: 2.36
+ **/
+void
+g_source_remove_unix_fd (GSource *source,
+ gpointer tag)
+{
+ GMainContext *context;
+ GPollFD *poll_fd;
+
+ g_return_if_fail (source != NULL);
+ g_return_if_fail (g_slist_find (source->priv->fds, tag));
+
+ context = source->context;
+ poll_fd = tag;
+
+ if (context)
+ LOCK_CONTEXT (context);
+
+ source->priv->fds = g_slist_remove (source->priv->fds, poll_fd);
+
+ if (context)
+ {
+ if (!SOURCE_BLOCKED (source))
+ g_main_context_remove_poll_unlocked (context, poll_fd);
+
+ UNLOCK_CONTEXT (context);
+ }
+
+ g_free (poll_fd);
+}
+
+/**
+ * g_source_query_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ *
+ * Queries the events reported for the fd corresponding to @tag on
+ * @source during the last poll.
+ *
+ * The return value of this function is only defined when the function
+ * is called from the check or dispatch functions for @source.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Returns: the conditions reported on the fd
+ *
+ * Since: 2.36
+ **/
+GIOCondition
+g_source_query_unix_fd (GSource *source,
+ gpointer tag)
+{
+ GPollFD *poll_fd;
+
+ g_return_val_if_fail (source != NULL, 0);
+ g_return_val_if_fail (g_slist_find (source->priv->fds, tag), 0);
+
+ poll_fd = tag;
+
+ return poll_fd->revents;
+}
+#endif /* G_OS_UNIX */
+
/**
* g_get_current_time:
* @result: #GTimeVal structure in which to store current time.
@@ -1982,7 +2500,7 @@ g_get_real_time (void)
static ULONGLONG (*g_GetTickCount64) (void) = NULL;
static guint32 g_win32_tick_epoch = 0;
-G_GNUC_INTERNAL void
+void
g_clock_win32_init (void)
{
HMODULE kernel32;
@@ -2428,11 +2946,17 @@ block_source (GSource *source)
source->flags |= G_SOURCE_BLOCKED;
- tmp_list = source->poll_fds;
- while (tmp_list)
+ if (source->context)
{
- g_main_context_remove_poll_unlocked (source->context, tmp_list->data);
- tmp_list = tmp_list->next;
+ tmp_list = source->poll_fds;
+ while (tmp_list)
+ {
+ g_main_context_remove_poll_unlocked (source->context, tmp_list->data);
+ tmp_list = tmp_list->next;
+ }
+
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ g_main_context_remove_poll_unlocked (source->context, tmp_list->data);
}
if (source->priv && source->priv->child_sources)
@@ -2451,7 +2975,7 @@ static void
unblock_source (GSource *source)
{
GSList *tmp_list;
-
+
g_return_if_fail (SOURCE_BLOCKED (source)); /* Source already unblocked */
g_return_if_fail (!SOURCE_DESTROYED (source));
@@ -2464,6 +2988,9 @@ unblock_source (GSource *source)
tmp_list = tmp_list->next;
}
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ g_main_context_add_poll_unlocked (source->context, source->priority, tmp_list->data);
+
if (source->priv && source->priv->child_sources)
{
tmp_list = source->priv->child_sources;
@@ -2570,30 +3097,6 @@ g_main_dispatch (GMainContext *context)
g_ptr_array_set_size (context->pending_dispatches, 0);
}
-/* Holds context's lock */
-static inline GSource *
-next_valid_source (GMainContext *context,
- GSource *source)
-{
- GSource *new_source = source ? source->next : context->source_list;
-
- while (new_source)
- {
- if (!SOURCE_DESTROYED (new_source))
- {
- new_source->ref_count++;
- break;
- }
-
- new_source = new_source->next;
- }
-
- if (source)
- SOURCE_UNREF (source, context);
-
- return new_source;
-}
-
/**
* g_main_context_acquire:
* @context: a #GMainContext
@@ -2769,6 +3272,7 @@ g_main_context_prepare (GMainContext *context,
gint n_ready = 0;
gint current_priority = G_MAXINT;
GSource *source;
+ GSourceIter iter;
if (context == NULL)
context = g_main_context_default ();
@@ -2810,33 +3314,64 @@ g_main_context_prepare (GMainContext *context,
context->timeout = -1;
- source = next_valid_source (context, NULL);
- while (source)
+ g_source_iter_init (&iter, context, TRUE);
+ while (g_source_iter_next (&iter, &source))
{
gint source_timeout = -1;
+ if (SOURCE_DESTROYED (source) || SOURCE_BLOCKED (source))
+ continue;
if ((n_ready > 0) && (source->priority > current_priority))
- {
- SOURCE_UNREF (source, context);
- break;
- }
- if (SOURCE_BLOCKED (source))
- goto next;
+ break;
if (!(source->flags & G_SOURCE_READY))
{
gboolean result;
- gboolean (*prepare) (GSource *source,
- gint *timeout);
+ gboolean (* prepare) (GSource *source,
+ gint *timeout);
- prepare = source->source_funcs->prepare;
- context->in_check_or_prepare++;
- UNLOCK_CONTEXT (context);
+ prepare = source->source_funcs->prepare;
- result = (*prepare) (source, &source_timeout);
+ if (prepare)
+ {
+ context->in_check_or_prepare++;
+ UNLOCK_CONTEXT (context);
- LOCK_CONTEXT (context);
- context->in_check_or_prepare--;
+ result = (* prepare) (source, &source_timeout);
+
+ LOCK_CONTEXT (context);
+ context->in_check_or_prepare--;
+ }
+ else
+ {
+ source_timeout = -1;
+ result = FALSE;
+ }
+
+ if (result == FALSE && source->priv->ready_time != -1)
+ {
+ if (!context->time_is_fresh)
+ {
+ context->time = g_get_monotonic_time ();
+ context->time_is_fresh = TRUE;
+ }
+
+ if (source->priv->ready_time <= context->time)
+ {
+ source_timeout = 0;
+ result = TRUE;
+ }
+ else
+ {
+ gint timeout;
+
+ /* rounding down will lead to spinning, so always round up */
+ timeout = (source->priv->ready_time - context->time + 999) / 1000;
+
+ if (source_timeout < 0 || timeout < source_timeout)
+ source_timeout = timeout;
+ }
+ }
if (result)
{
@@ -2845,7 +3380,7 @@ g_main_context_prepare (GMainContext *context,
while (ready_source)
{
ready_source->flags |= G_SOURCE_READY;
- ready_source = ready_source->priv ? ready_source->priv->parent_source : NULL;
+ ready_source = ready_source->priv->parent_source;
}
}
}
@@ -2864,10 +3399,8 @@ g_main_context_prepare (GMainContext *context,
else
context->timeout = MIN (context->timeout, source_timeout);
}
-
- next:
- source = next_valid_source (context, source);
}
+ g_source_iter_clear (&iter);
UNLOCK_CONTEXT (context);
@@ -2962,6 +3495,7 @@ g_main_context_check (GMainContext *context,
gint n_fds)
{
GSource *source;
+ GSourceIter iter;
GPollRec *pollrec;
gint n_ready = 0;
gint i;
@@ -2999,32 +3533,67 @@ g_main_context_check (GMainContext *context,
i++;
}
- source = next_valid_source (context, NULL);
- while (source)
+ g_source_iter_init (&iter, context, TRUE);
+ while (g_source_iter_next (&iter, &source))
{
+ if (SOURCE_DESTROYED (source) || SOURCE_BLOCKED (source))
+ continue;
if ((n_ready > 0) && (source->priority > max_priority))
- {
- SOURCE_UNREF (source, context);
- break;
- }
- if (SOURCE_BLOCKED (source))
- goto next;
+ break;
if (!(source->flags & G_SOURCE_READY))
{
- gboolean result;
- gboolean (*check) (GSource *source);
+ gboolean result;
+ gboolean (* check) (GSource *source);
+
+ check = source->source_funcs->check;
+
+ if (check)
+ {
+ /* If the check function is set, call it. */
+ context->in_check_or_prepare++;
+ UNLOCK_CONTEXT (context);
+
+ result = (* check) (source);
+
+ LOCK_CONTEXT (context);
+ context->in_check_or_prepare--;
+ }
+ else
+ result = FALSE;
+
+ if (result == FALSE)
+ {
+ GSList *tmp_list;
+
+ /* If not already explicitly flagged ready by ->check()
+ * (or if we have no check) then we can still be ready if
+ * any of our fds poll as ready.
+ */
+ for (tmp_list = source->priv->fds; tmp_list; tmp_list = tmp_list->next)
+ {
+ GPollFD *pollfd = tmp_list->data;
+
+ if (pollfd->revents)
+ {
+ result = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (result == FALSE && source->priv->ready_time != -1)
+ {
+ if (!context->time_is_fresh)
+ {
+ context->time = g_get_monotonic_time ();
+ context->time_is_fresh = TRUE;
+ }
+
+ if (source->priv->ready_time <= context->time)
+ result = TRUE;
+ }
- check = source->source_funcs->check;
-
- context->in_check_or_prepare++;
- UNLOCK_CONTEXT (context);
-
- result = (*check) (source);
-
- LOCK_CONTEXT (context);
- context->in_check_or_prepare--;
-
if (result)
{
GSource *ready_source = source;
@@ -3032,7 +3601,7 @@ g_main_context_check (GMainContext *context,
while (ready_source)
{
ready_source->flags |= G_SOURCE_READY;
- ready_source = ready_source->priv ? ready_source->priv->parent_source : NULL;
+ ready_source = ready_source->priv->parent_source;
}
}
}
@@ -3049,10 +3618,8 @@ g_main_context_check (GMainContext *context,
*/
max_priority = source->priority;
}
-
- next:
- source = next_valid_source (context, source);
}
+ g_source_iter_clear (&iter);
UNLOCK_CONTEXT (context);
@@ -3179,20 +3746,20 @@ g_main_context_pending (GMainContext *context)
* g_main_context_iteration:
* @context: (allow-none): a #GMainContext (if %NULL, the default context will be used)
* @may_block: whether the call may block.
- *
+ *
* Runs a single iteration for the given main loop. This involves
* checking to see if any event sources are ready to be processed,
* then if no events sources are ready and @may_block is %TRUE, waiting
* for a source to become ready, then dispatching the highest priority
- * events sources that are ready. Otherwise, if @may_block is %FALSE
- * sources are not waited to become ready, only those highest priority
- * events sources will be dispatched (if any), that are ready at this
+ * events sources that are ready. Otherwise, if @may_block is %FALSE
+ * sources are not waited to become ready, only those highest priority
+ * events sources will be dispatched (if any), that are ready at this
* given moment without further waiting.
*
- * Note that even when @may_block is %TRUE, it is still possible for
- * g_main_context_iteration() to return %FALSE, since the the wait may
+ * Note that even when @may_block is %TRUE, it is still possible for
+ * g_main_context_iteration() to return %FALSE, since the wait may
* be interrupted for other reasons than an event source becoming ready.
- *
+ *
* Return value: %TRUE if events were dispatched.
**/
gboolean
@@ -3503,10 +4070,10 @@ g_main_context_poll (GMainContext *context,
* @priority: the priority for this file descriptor which should be
* the same as the priority used for g_source_attach() to ensure that the
* file descriptor is polled whenever the results may be needed.
- *
+ *
* Adds a file descriptor to the set of file descriptors polled for
* this context. This will very seldom be used directly. Instead
- * a typical event source will use g_source_add_poll() instead.
+ * a typical event source will use g_source_add_unix_fd() instead.
**/
void
g_main_context_add_poll (GMainContext *context,
@@ -3748,8 +4315,34 @@ g_main_context_get_poll_func (GMainContext *context)
* g_main_context_wakeup:
* @context: a #GMainContext
*
- * If @context is currently waiting in a poll(), interrupt
- * the poll(), and continue the iteration process.
+ * If @context is currently blocking in g_main_context_iteration()
+ * waiting for a source to become ready, cause it to stop blocking
+ * and return. Otherwise, cause the next invocation of
+ * g_main_context_iteration() to return without blocking.
+ *
+ * This API is useful for low-level control over #GMainContext; for
+ * example, integrating it with main loop implementations such as
+ * #GMainLoop.
+ *
+ * Another related use for this function is when implementing a main
+ * loop with a termination condition, computed from multiple threads:
+ *
+ * |[
+ * #define NUM_TASKS 10
+ * static volatile gint tasks_remaining = NUM_TASKS;
+ * ...
+ *
+ * while (g_atomic_int_get (&tasks_remaining) != 0)
+ * g_main_context_iteration (NULL, TRUE);
+ * ]|
+ *
+ * Then in a thread:
+ * |[
+ * perform_work();
+ *
+ * if (g_atomic_int_dec_and_test (&tasks_remaining))
+ * g_main_context_wakeup (NULL);
+ * ]|
**/
void
g_main_context_wakeup (GMainContext *context)
@@ -3796,8 +4389,9 @@ static void
g_timeout_set_expiration (GTimeoutSource *timeout_source,
gint64 current_time)
{
- timeout_source->expiration = current_time +
- (guint64) timeout_source->interval * 1000;
+ gint64 expiration;
+
+ expiration = current_time + (guint64) timeout_source->interval * 1000;
if (timeout_source->seconds)
{
@@ -3826,42 +4420,17 @@ g_timeout_set_expiration (GTimeoutSource *timeout_source,
* always only *increase* the expiration time by adding a full
* second in the case that the microsecond portion decreases.
*/
- timeout_source->expiration -= timer_perturb;
+ expiration -= timer_perturb;
- remainder = timeout_source->expiration % 1000000;
+ remainder = expiration % 1000000;
if (remainder >= 1000000/4)
- timeout_source->expiration += 1000000;
-
- timeout_source->expiration -= remainder;
- timeout_source->expiration += timer_perturb;
- }
-}
-
-static gboolean
-g_timeout_prepare (GSource *source,
- gint *timeout)
-{
- GTimeoutSource *timeout_source = (GTimeoutSource *) source;
- gint64 now = g_source_get_time (source);
+ expiration += 1000000;
- if (now < timeout_source->expiration)
- {
- /* Round up to ensure that we don't try again too early */
- *timeout = (timeout_source->expiration - now + 999) / 1000;
- return FALSE;
+ expiration -= remainder;
+ expiration += timer_perturb;
}
- *timeout = 0;
- return TRUE;
-}
-
-static gboolean
-g_timeout_check (GSource *source)
-{
- GTimeoutSource *timeout_source = (GTimeoutSource *) source;
- gint64 now = g_source_get_time (source);
-
- return timeout_source->expiration <= now;
+ g_source_set_ready_time ((GSource *) timeout_source, expiration);
}
static gboolean
@@ -4261,8 +4830,6 @@ dispatch_unix_signals (void)
/* handle GChildWatchSource instances */
if (unix_signal_pending[SIGCHLD])
{
- unix_signal_pending[SIGCHLD] = FALSE;
-
/* The only way we can do this is to scan all of the children.
*
* The docs promise that we will not reap children that we are not
@@ -4277,12 +4844,24 @@ dispatch_unix_signals (void)
if (!source->child_exited)
{
- if (waitpid (source->pid, &source->child_status, WNOHANG) > 0)
+ pid_t pid;
+ do
{
- source->child_exited = TRUE;
-
- wake_source ((GSource *) source);
+ pid = waitpid (source->pid, &source->child_status, WNOHANG);
+ if (pid > 0)
+ {
+ source->child_exited = TRUE;
+ wake_source ((GSource *) source);
+ }
+ else if (pid == -1 && errno == ECHILD)
+ {
+ g_warning ("GChildWatchSource: Exit status of a child process was requested but ECHILD was received by waitpid(). Most likely the process is ignoring SIGCHLD, or some other thread is invoking waitpid() with a nonpositive first argument; either behavior can break applications that use g_child_watch_add()/g_spawn_sync() either directly or indirectly.");
+ source->child_exited = TRUE;
+ source->child_status = 0;
+ wake_source ((GSource *) source);
+ }
}
+ while (pid == -1 && errno == EINTR);
}
}
}
@@ -4296,7 +4875,6 @@ dispatch_unix_signals (void)
{
if (unix_signal_pending[source->signum])
{
- unix_signal_pending[source->signum] = FALSE;
source->pending = TRUE;
wake_source ((GSource *) source);
@@ -4304,6 +4882,8 @@ dispatch_unix_signals (void)
}
}
+ memset ((void*)unix_signal_pending, 0, sizeof (unix_signal_pending));
+
G_UNLOCK(unix_signal_lock);
}
@@ -4355,6 +4935,7 @@ g_unix_signal_watch_dispatch (GSource *source,
gpointer user_data)
{
GUnixSignalWatchSource *unix_signal_source;
+ gboolean again;
unix_signal_source = (GUnixSignalWatchSource *) source;
@@ -4365,36 +4946,40 @@ g_unix_signal_watch_dispatch (GSource *source,
return FALSE;
}
- (callback) (user_data);
+ again = (callback) (user_data);
unix_signal_source->pending = FALSE;
- return TRUE;
+ return again;
}
static void
-ensure_unix_signal_handler_installed_unlocked (int signum)
+ref_unix_signal_handler_unlocked (int signum)
{
- static sigset_t installed_signal_mask;
- static gboolean initialized;
- struct sigaction action;
-
- if (!initialized)
+ /* Ensure we have the worker context */
+ g_get_worker_context ();
+ unix_signal_refcount[signum]++;
+ if (unix_signal_refcount[signum] == 1)
{
- sigemptyset (&installed_signal_mask);
- g_get_worker_context ();
- initialized = TRUE;
+ struct sigaction action;
+ action.sa_handler = g_unix_signal_handler;
+ sigemptyset (&action.sa_mask);
+ action.sa_flags = SA_RESTART | SA_NOCLDSTOP;
+ sigaction (signum, &action, NULL);
}
+}
- if (sigismember (&installed_signal_mask, signum))
- return;
-
- sigaddset (&installed_signal_mask, signum);
-
- action.sa_handler = g_unix_signal_handler;
- sigemptyset (&action.sa_mask);
- action.sa_flags = SA_RESTART | SA_NOCLDSTOP;
- sigaction (signum, &action, NULL);
+static void
+unref_unix_signal_handler_unlocked (int signum)
+{
+ unix_signal_refcount[signum]--;
+ if (unix_signal_refcount[signum] == 0)
+ {
+ struct sigaction action;
+ action.sa_handler = SIG_DFL;
+ sigemptyset (&action.sa_mask);
+ sigaction (signum, &action, NULL);
+ }
}
GSource *
@@ -4410,11 +4995,10 @@ _g_main_create_unix_signal_watch (int signum)
unix_signal_source->pending = FALSE;
G_LOCK (unix_signal_lock);
- ensure_unix_signal_handler_installed_unlocked (signum);
+ ref_unix_signal_handler_unlocked (signum);
unix_signal_watches = g_slist_prepend (unix_signal_watches, unix_signal_source);
if (unix_signal_pending[signum])
unix_signal_source->pending = TRUE;
- unix_signal_pending[signum] = FALSE;
G_UNLOCK (unix_signal_lock);
return source;
@@ -4423,7 +5007,12 @@ _g_main_create_unix_signal_watch (int signum)
static void
g_unix_signal_watch_finalize (GSource *source)
{
+ GUnixSignalWatchSource *unix_signal_source;
+
+ unix_signal_source = (GUnixSignalWatchSource *) source;
+
G_LOCK (unix_signal_lock);
+ unref_unix_signal_handler_unlocked (unix_signal_source->signum);
unix_signal_watches = g_slist_remove (unix_signal_watches, source);
G_UNLOCK (unix_signal_lock);
}
@@ -4433,6 +5022,7 @@ g_child_watch_finalize (GSource *source)
{
G_LOCK (unix_signal_lock);
unix_child_watches = g_slist_remove (unix_child_watches, source);
+ unref_unix_signal_handler_unlocked (SIGCHLD);
G_UNLOCK (unix_signal_lock);
}
@@ -4494,10 +5084,10 @@ g_unix_signal_handler (int signum)
* source is still active. Typically, you will want to call
* g_spawn_close_pid() in the callback function for the source.
*
- * Note further that using g_child_watch_source_new() is not
- * compatible with calling <literal>waitpid(-1)</literal> in
- * the application. Calling waitpid() for individual pids will
- * still work fine.
+ * Note further that using g_child_watch_source_new() is not
+ * compatible with calling <literal>waitpid</literal> with a
+ * nonpositive first argument in the application. Calling waitpid()
+ * for individual pids will still work fine.
*
* Return value: the newly-created child watch source
*
@@ -4518,7 +5108,7 @@ g_child_watch_source_new (GPid pid)
g_source_add_poll (source, &child_watch_source->poll);
#else /* G_OS_WIN32 */
G_LOCK (unix_signal_lock);
- ensure_unix_signal_handler_installed_unlocked (SIGCHLD);
+ ref_unix_signal_handler_unlocked (SIGCHLD);
unix_child_watches = g_slist_prepend (unix_child_watches, child_watch_source);
if (waitpid (pid, &child_watch_source->child_status, WNOHANG) > 0)
child_watch_source->child_exited = TRUE;
@@ -4544,11 +5134,15 @@ g_child_watch_source_new (GPid pid)
* If you obtain @pid from g_spawn_async() or g_spawn_async_with_pipes()
* you will need to pass #G_SPAWN_DO_NOT_REAP_CHILD as flag to
* the spawn function for the child watching to work.
+ *
+ * In many programs, you will want to call g_spawn_check_exit_status()
+ * in the callback to determine whether or not the child exited
+ * successfully.
*
- * Note that on platforms where #GPid must be explicitly closed
- * (see g_spawn_close_pid()) @pid must not be closed while the
- * source is still active. Typically, you will want to call
- * g_spawn_close_pid() in the callback function for the source.
+ * Also, note that on platforms where #GPid must be explicitly closed
+ * (see g_spawn_close_pid()) @pid must not be closed while the source
+ * is still active. Typically, you should invoke g_spawn_close_pid()
+ * in the callback function for the source.
*
* GLib supports only a single callback per process id.
*
diff --git a/glib/glib/gmain.h b/glib/glib/gmain.h
index fadf7fc..c455353 100644
--- a/glib/glib/gmain.h
+++ b/glib/glib/gmain.h
@@ -17,19 +17,30 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_MAIN_H__
+#define __G_MAIN_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MAIN_H__
-#define __G_MAIN_H__
-
#include <glib/gpoll.h>
#include <glib/gslist.h>
#include <glib/gthread.h>
G_BEGIN_DECLS
+typedef enum /*< flags >*/
+{
+ G_IO_IN GLIB_SYSDEF_POLLIN,
+ G_IO_OUT GLIB_SYSDEF_POLLOUT,
+ G_IO_PRI GLIB_SYSDEF_POLLPRI,
+ G_IO_ERR GLIB_SYSDEF_POLLERR,
+ G_IO_HUP GLIB_SYSDEF_POLLHUP,
+ G_IO_NVAL GLIB_SYSDEF_POLLNVAL
+} GIOCondition;
+
+
/**
* GMainContext:
*
@@ -74,12 +85,18 @@ typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs;
* results of the poll() call) it should return %TRUE. It can also return
* a @timeout_ value which should be the maximum timeout (in milliseconds)
* which should be passed to the poll() call. The actual timeout used will
- * be -1 if all sources returned -1, or it will be the minimum of all the
- * @timeout_ values returned which were >= 0.
+ * be -1 if all sources returned -1, or it will be the minimum of all
+ * the @timeout_ values returned which were >= 0. Since 2.36 this may
+ * be %NULL, in which case the effect is as if the function always returns
+ * %FALSE with a timeout of -1. If @prepare returns a
+ * timeout and the source also has a 'ready time' set then the
+ * nearer of the two will be used.
* @check: Called after all the file descriptors are polled. The source
* should return %TRUE if it is ready to be dispatched. Note that some
* time may have passed since the previous prepare function was called,
- * so the source should be checked again here.
+ * so the source should be checked again here. Since 2.36 this may
+ * be %NULL, in which case the effect is as if the function always returns
+ * %FALSE.
* @dispatch: Called to dispatch the event source, after it has returned
* %TRUE in either its @prepare or its @check function. The @dispatch
* function is passed in a callback function and data. The callback
@@ -132,18 +149,21 @@ typedef struct _GSourceFuncs GSourceFuncs;
* Specifies the type of function passed to g_timeout_add(),
* g_timeout_add_full(), g_idle_add(), and g_idle_add_full().
*
- * Returns: %FALSE if the source should be removed
+ * Returns: %FALSE if the source should be removed. #G_SOURCE_CONTINUE and
+ * #G_SOURCE_REMOVE are more memorable names for the return value.
*/
typedef gboolean (*GSourceFunc) (gpointer user_data);
/**
* GChildWatchFunc:
* @pid: the process id of the child process
- * @status: Status information about the child process,
- * see waitpid(2) for more information about this field
+ * @status: Status information about the child process, encoded
+ * in a platform-specific manner
* @user_data: user data passed to g_child_watch_add()
*
- * The type of functions to be called when a child exists.
+ * Prototype of a #GChildWatchSource callback, called when a child
+ * process has exited. To interpret @status, see the documentation
+ * for g_spawn_check_exit_status().
*/
typedef void (*GChildWatchFunc) (GPid pid,
gint status,
@@ -154,7 +174,7 @@ struct _GSource
gpointer callback_data;
GSourceCallbackFuncs *callback_funcs;
- GSourceFuncs *source_funcs;
+ const GSourceFuncs *source_funcs;
guint ref_count;
GMainContext *context;
@@ -282,130 +302,209 @@ struct _GSourceFuncs
/* GMainContext: */
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_context_new (void);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_context_ref (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_unref (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_context_default (void);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_iteration (GMainContext *context,
gboolean may_block);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_pending (GMainContext *context);
/* For implementation of legacy interfaces
*/
+GLIB_AVAILABLE_IN_ALL
GSource *g_main_context_find_source_by_id (GMainContext *context,
guint source_id);
+GLIB_AVAILABLE_IN_ALL
GSource *g_main_context_find_source_by_user_data (GMainContext *context,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
GSource *g_main_context_find_source_by_funcs_user_data (GMainContext *context,
GSourceFuncs *funcs,
gpointer user_data);
/* Low level functions for implementing custom main loops.
*/
+GLIB_AVAILABLE_IN_ALL
void g_main_context_wakeup (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_acquire (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_release (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_is_owner (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_wait (GMainContext *context,
GCond *cond,
GMutex *mutex);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_context_prepare (GMainContext *context,
gint *priority);
+GLIB_AVAILABLE_IN_ALL
gint g_main_context_query (GMainContext *context,
gint max_priority,
gint *timeout_,
GPollFD *fds,
gint n_fds);
+GLIB_AVAILABLE_IN_ALL
gint g_main_context_check (GMainContext *context,
gint max_priority,
GPollFD *fds,
gint n_fds);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_dispatch (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_set_poll_func (GMainContext *context,
GPollFunc func);
+GLIB_AVAILABLE_IN_ALL
GPollFunc g_main_context_get_poll_func (GMainContext *context);
/* Low level functions for use by source implementations
*/
+GLIB_AVAILABLE_IN_ALL
void g_main_context_add_poll (GMainContext *context,
GPollFD *fd,
gint priority);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_remove_poll (GMainContext *context,
GPollFD *fd);
+GLIB_AVAILABLE_IN_ALL
gint g_main_depth (void);
+GLIB_AVAILABLE_IN_ALL
GSource *g_main_current_source (void);
/* GMainContexts for other threads
*/
+GLIB_AVAILABLE_IN_ALL
void g_main_context_push_thread_default (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_pop_thread_default (GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_context_get_thread_default (void);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_context_ref_thread_default (void);
/* GMainLoop: */
+GLIB_AVAILABLE_IN_ALL
GMainLoop *g_main_loop_new (GMainContext *context,
gboolean is_running);
+GLIB_AVAILABLE_IN_ALL
void g_main_loop_run (GMainLoop *loop);
+GLIB_AVAILABLE_IN_ALL
void g_main_loop_quit (GMainLoop *loop);
+GLIB_AVAILABLE_IN_ALL
GMainLoop *g_main_loop_ref (GMainLoop *loop);
+GLIB_AVAILABLE_IN_ALL
void g_main_loop_unref (GMainLoop *loop);
+GLIB_AVAILABLE_IN_ALL
gboolean g_main_loop_is_running (GMainLoop *loop);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_main_loop_get_context (GMainLoop *loop);
/* GSource: */
+GLIB_AVAILABLE_IN_ALL
GSource *g_source_new (GSourceFuncs *source_funcs,
guint struct_size);
+GLIB_AVAILABLE_IN_ALL
GSource *g_source_ref (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_unref (GSource *source);
+GLIB_AVAILABLE_IN_ALL
guint g_source_attach (GSource *source,
GMainContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_source_destroy (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_priority (GSource *source,
gint priority);
+GLIB_AVAILABLE_IN_ALL
gint g_source_get_priority (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_can_recurse (GSource *source,
gboolean can_recurse);
+GLIB_AVAILABLE_IN_ALL
gboolean g_source_get_can_recurse (GSource *source);
+GLIB_AVAILABLE_IN_ALL
guint g_source_get_id (GSource *source);
+GLIB_AVAILABLE_IN_ALL
GMainContext *g_source_get_context (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_callback (GSource *source,
GSourceFunc func,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_funcs (GSource *source,
GSourceFuncs *funcs);
+GLIB_AVAILABLE_IN_ALL
gboolean g_source_is_destroyed (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_name (GSource *source,
const char *name);
+GLIB_AVAILABLE_IN_ALL
const char * g_source_get_name (GSource *source);
+GLIB_AVAILABLE_IN_ALL
void g_source_set_name_by_id (guint tag,
const char *name);
+GLIB_AVAILABLE_IN_2_36
+void g_source_set_ready_time (GSource *source,
+ gint64 ready_time);
+GLIB_AVAILABLE_IN_2_36
+gint64 g_source_get_ready_time (GSource *source);
+
+#ifdef G_OS_UNIX
+GLIB_AVAILABLE_IN_2_36
+gpointer g_source_add_unix_fd (GSource *source,
+ gint fd,
+ GIOCondition events);
+GLIB_AVAILABLE_IN_2_36
+void g_source_modify_unix_fd (GSource *source,
+ gpointer tag,
+ GIOCondition new_events);
+GLIB_AVAILABLE_IN_2_36
+void g_source_remove_unix_fd (GSource *source,
+ gpointer tag);
+GLIB_AVAILABLE_IN_2_36
+GIOCondition g_source_query_unix_fd (GSource *source,
+ gpointer tag);
+#endif
/* Used to implement g_source_connect_closure and internally*/
+GLIB_AVAILABLE_IN_ALL
void g_source_set_callback_indirect (GSource *source,
gpointer callback_data,
GSourceCallbackFuncs *callback_funcs);
+GLIB_AVAILABLE_IN_ALL
void g_source_add_poll (GSource *source,
GPollFD *fd);
+GLIB_AVAILABLE_IN_ALL
void g_source_remove_poll (GSource *source,
GPollFD *fd);
+GLIB_AVAILABLE_IN_ALL
void g_source_add_child_source (GSource *source,
GSource *child_source);
+GLIB_AVAILABLE_IN_ALL
void g_source_remove_child_source (GSource *source,
GSource *child_source);
@@ -413,6 +512,7 @@ GLIB_DEPRECATED_IN_2_28_FOR(g_source_get_time)
void g_source_get_current_time (GSource *source,
GTimeVal *timeval);
+GLIB_AVAILABLE_IN_ALL
gint64 g_source_get_time (GSource *source);
/* void g_source_connect_closure (GSource *source,
@@ -421,62 +521,83 @@ gint64 g_source_get_time (GSource *source);
/* Specific source types
*/
+GLIB_AVAILABLE_IN_ALL
GSource *g_idle_source_new (void);
+GLIB_AVAILABLE_IN_ALL
GSource *g_child_watch_source_new (GPid pid);
+GLIB_AVAILABLE_IN_ALL
GSource *g_timeout_source_new (guint interval);
+GLIB_AVAILABLE_IN_ALL
GSource *g_timeout_source_new_seconds (guint interval);
/* Miscellaneous functions
*/
+GLIB_AVAILABLE_IN_ALL
void g_get_current_time (GTimeVal *result);
+GLIB_AVAILABLE_IN_ALL
gint64 g_get_monotonic_time (void);
+GLIB_AVAILABLE_IN_ALL
gint64 g_get_real_time (void);
/* Source manipulation by ID */
+GLIB_AVAILABLE_IN_ALL
gboolean g_source_remove (guint tag);
+GLIB_AVAILABLE_IN_ALL
gboolean g_source_remove_by_user_data (gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gboolean g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
gpointer user_data);
/* Idles, child watchers and timeouts */
+GLIB_AVAILABLE_IN_ALL
guint g_timeout_add_full (gint priority,
guint interval,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
guint g_timeout_add (guint interval,
GSourceFunc function,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
guint g_timeout_add_seconds_full (gint priority,
guint interval,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
guint g_timeout_add_seconds (guint interval,
GSourceFunc function,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
guint g_child_watch_add_full (gint priority,
GPid pid,
GChildWatchFunc function,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
guint g_child_watch_add (GPid pid,
GChildWatchFunc function,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
guint g_idle_add (GSourceFunc function,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
guint g_idle_add_full (gint priority,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
gboolean g_idle_remove_by_data (gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_invoke_full (GMainContext *context,
gint priority,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
+GLIB_AVAILABLE_IN_ALL
void g_main_context_invoke (GMainContext *context,
GSourceFunc function,
gpointer data);
@@ -485,6 +606,10 @@ void g_main_context_invoke (GMainContext *context,
GLIB_VAR GSourceFuncs g_timeout_funcs;
GLIB_VAR GSourceFuncs g_child_watch_funcs;
GLIB_VAR GSourceFuncs g_idle_funcs;
+#ifdef G_OS_UNIX
+GLIB_VAR GSourceFuncs g_unix_signal_funcs;
+GLIB_VAR GSourceFuncs g_unix_fd_source_funcs;
+#endif
G_END_DECLS
diff --git a/glib/glib/gmappedfile.c b/glib/glib/gmappedfile.c
index b541870..7d241e7 100644
--- a/glib/glib/gmappedfile.c
+++ b/glib/glib/gmappedfile.c
@@ -38,7 +38,9 @@
#include <windows.h>
#include <io.h>
+#undef fstat
#define fstat(a,b) _fstati64(a,b)
+#undef stat
#define stat _stati64
#ifndef S_ISREG
@@ -400,3 +402,27 @@ g_mapped_file_unref (GMappedFile *file)
if (g_atomic_int_dec_and_test (&file->ref_count))
g_mapped_file_destroy (file);
}
+
+/**
+ * g_mapped_file_get_bytes:
+ * @file: a #GMappedFile
+ *
+ * Creates a new #GBytes which references the data mapped from @file.
+ * The mapped contents of the file must not be modified after creating this
+ * bytes object, because a #GBytes should be immutable.
+ *
+ * Returns: (transfer full): A newly allocated #GBytes referencing data
+ * from @file
+ *
+ * Since: 2.34
+ **/
+GBytes *
+g_mapped_file_get_bytes (GMappedFile *file)
+{
+ g_return_val_if_fail (file != NULL, NULL);
+
+ return g_bytes_new_with_free_func (file->contents,
+ file->length,
+ (GDestroyNotify) g_mapped_file_unref,
+ g_mapped_file_ref (file));
+}
diff --git a/glib/glib/gmappedfile.h b/glib/glib/gmappedfile.h
index 52ba31d..a1c7ac7 100644
--- a/glib/glib/gmappedfile.h
+++ b/glib/glib/gmappedfile.h
@@ -19,13 +19,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_MAPPED_FILE_H__
+#define __G_MAPPED_FILE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MAPPED_FILE_H__
-#define __G_MAPPED_FILE_H__
-
#include <glib/gbytes.h>
#include <glib/gerror.h>
@@ -33,15 +33,23 @@ G_BEGIN_DECLS
typedef struct _GMappedFile GMappedFile;
+GLIB_AVAILABLE_IN_ALL
GMappedFile *g_mapped_file_new (const gchar *filename,
gboolean writable,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
GMappedFile *g_mapped_file_new_from_fd (gint fd,
gboolean writable,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gsize g_mapped_file_get_length (GMappedFile *file);
+GLIB_AVAILABLE_IN_ALL
gchar *g_mapped_file_get_contents (GMappedFile *file);
+GLIB_AVAILABLE_IN_2_34
+GBytes * g_mapped_file_get_bytes (GMappedFile *file);
+GLIB_AVAILABLE_IN_ALL
GMappedFile *g_mapped_file_ref (GMappedFile *file);
+GLIB_AVAILABLE_IN_ALL
void g_mapped_file_unref (GMappedFile *file);
GLIB_DEPRECATED_FOR(g_mapped_file_unref)
diff --git a/glib/glib/gmarkup.c b/glib/glib/gmarkup.c
index b0c28a9..fb02a42 100644
--- a/glib/glib/gmarkup.c
+++ b/glib/glib/gmarkup.c
@@ -29,12 +29,14 @@
#include "gmarkup.h"
+#include "gatomic.h"
#include "gslice.h"
#include "galloca.h"
#include "gstrfuncs.h"
#include "gstring.h"
#include "gtestutils.h"
#include "glibintl.h"
+#include "gthread.h"
/**
* SECTION:markup
@@ -82,11 +84,7 @@
* </itemizedlist>
*/
-GQuark
-g_markup_error_quark (void)
-{
- return g_quark_from_static_string ("g-markup-error-quark");
-}
+G_DEFINE_QUARK (g-markup-error-quark, g_markup_error)
typedef enum
{
@@ -120,6 +118,8 @@ struct _GMarkupParseContext
{
const GMarkupParser *parser;
+ volatile gint ref_count;
+
GMarkupParseFlags flags;
gint line_number;
@@ -227,6 +227,7 @@ g_markup_parse_context_new (const GMarkupParser *parser,
context = g_new (GMarkupParseContext, 1);
+ context->ref_count = 1;
context->parser = parser;
context->flags = flags;
context->user_data = user_data;
@@ -269,6 +270,46 @@ g_markup_parse_context_new (const GMarkupParser *parser,
return context;
}
+/**
+ * g_markup_parse_context_ref:
+ * @context: a #GMarkupParseContext
+ *
+ * Increases the reference count of @context.
+ *
+ * Returns: the same @context
+ *
+ * Since: 2.36
+ **/
+GMarkupParseContext *
+g_markup_parse_context_ref (GMarkupParseContext *context)
+{
+ g_return_val_if_fail (context != NULL, NULL);
+ g_return_val_if_fail (context->ref_count > 0, NULL);
+
+ g_atomic_int_inc (&context->ref_count);
+
+ return context;
+}
+
+/**
+ * g_markup_parse_context_unref:
+ * @context: a #GMarkupParseContext
+ *
+ * Decreases the reference count of @context. When its reference count
+ * drops to 0, it is freed.
+ *
+ * Since: 2.36
+ **/
+void
+g_markup_parse_context_unref (GMarkupParseContext *context)
+{
+ g_return_if_fail (context != NULL);
+ g_return_if_fail (context->ref_count > 0);
+
+ if (g_atomic_int_dec_and_test (&context->ref_count))
+ g_markup_parse_context_free (context);
+}
+
static void
string_full_free (gpointer ptr)
{
@@ -362,6 +403,7 @@ set_error_literal (GMarkupParseContext *context,
g_propagate_error (error, tmp_error);
}
+G_GNUC_PRINTF(4, 5)
static void
set_error (GMarkupParseContext *context,
GError **error,
@@ -427,7 +469,7 @@ slow_name_validate (GMarkupParseContext *context,
g_unichar_isalpha (g_utf8_get_char (p))))))
{
set_error (context, error, G_MARKUP_ERROR_PARSE,
- _("'%s' is not a valid name "), name);
+ _("'%s' is not a valid name"), name);
return FALSE;
}
@@ -443,7 +485,7 @@ slow_name_validate (GMarkupParseContext *context,
g_unichar_isalpha (g_utf8_get_char (p))))))
{
set_error (context, error, G_MARKUP_ERROR_PARSE,
- _("'%s' is not a valid name: '%c' "), name, *p);
+ _("'%s' is not a valid name: '%c'"), name, *p);
return FALSE;
}
}
@@ -523,6 +565,7 @@ utf8_str (const gchar *utf8,
return buf;
}
+G_GNUC_PRINTF(5, 6)
static void
set_unescape_error (GMarkupParseContext *context,
GError **error,
@@ -641,7 +684,7 @@ unescape_gstring_inplace (GMarkupParseContext *context,
"inside a character reference "
"(&#234; for example) - perhaps "
"the digit is too large"),
- end - from, from);
+ (int)(end - from), from);
return FALSE;
}
else if (*end != ';')
@@ -676,7 +719,7 @@ unescape_gstring_inplace (GMarkupParseContext *context,
from, G_MARKUP_ERROR_PARSE,
_("Character reference '%-.*s' does not "
"encode a permitted character"),
- end - from, from);
+ (int)(end - from), from);
return FALSE;
}
}
@@ -721,7 +764,7 @@ unescape_gstring_inplace (GMarkupParseContext *context,
set_unescape_error (context, error,
from, G_MARKUP_ERROR_PARSE,
_("Entity name '%-.*s' is not known"),
- end-from, from);
+ (int)(end - from), from);
else
set_unescape_error (context, error,
from, G_MARKUP_ERROR_PARSE,
@@ -2323,6 +2366,9 @@ find_conversion (const char *format,
*
* Since: 2.4
*/
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
gchar *
g_markup_vprintf_escaped (const gchar *format,
va_list args)
@@ -2341,7 +2387,7 @@ g_markup_vprintf_escaped (const gchar *format,
* then use the normal g_strdup_vprintf() to format the arguments
* with the two new format strings. By comparing the results,
* we can figure out what segments of the output come from
- * the the original format string, and what from the arguments,
+ * the original format string, and what from the arguments,
* and thus know what portions of the string to escape.
*
* For instance, for:
@@ -2387,6 +2433,7 @@ g_markup_vprintf_escaped (const gchar *format,
G_VA_COPY (args2, args);
output1 = g_strdup_vprintf (format1->str, args);
+
if (!output1)
{
va_end (args2);
@@ -2397,7 +2444,6 @@ g_markup_vprintf_escaped (const gchar *format,
va_end (args2);
if (!output2)
goto cleanup;
-
result = g_string_new (NULL);
/* Iterate through the original format string again,
@@ -2449,6 +2495,8 @@ g_markup_vprintf_escaped (const gchar *format,
return NULL;
}
+#pragma GCC diagnostic pop
+
/**
* g_markup_printf_escaped:
* @format: printf() style format string
diff --git a/glib/glib/gmarkup.h b/glib/glib/gmarkup.h
index a8865da..eb7214d 100644
--- a/glib/glib/gmarkup.h
+++ b/glib/glib/gmarkup.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_MARKUP_H__
+#define __G_MARKUP_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MARKUP_H__
-#define __G_MARKUP_H__
-
#include <stdarg.h>
#include <glib/gerror.h>
@@ -71,6 +71,7 @@ typedef enum
*/
#define G_MARKUP_ERROR g_markup_error_quark ()
+GLIB_AVAILABLE_IN_ALL
GQuark g_markup_error_quark (void);
/**
@@ -178,39 +179,56 @@ struct _GMarkupParser
gpointer user_data);
};
+GLIB_AVAILABLE_IN_ALL
GMarkupParseContext *g_markup_parse_context_new (const GMarkupParser *parser,
GMarkupParseFlags flags,
gpointer user_data,
GDestroyNotify user_data_dnotify);
+GLIB_AVAILABLE_IN_2_36
+GMarkupParseContext *g_markup_parse_context_ref (GMarkupParseContext *context);
+GLIB_AVAILABLE_IN_2_36
+void g_markup_parse_context_unref (GMarkupParseContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_markup_parse_context_free (GMarkupParseContext *context);
+GLIB_AVAILABLE_IN_ALL
gboolean g_markup_parse_context_parse (GMarkupParseContext *context,
const gchar *text,
gssize text_len,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_markup_parse_context_push (GMarkupParseContext *context,
const GMarkupParser *parser,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gpointer g_markup_parse_context_pop (GMarkupParseContext *context);
+GLIB_AVAILABLE_IN_ALL
gboolean g_markup_parse_context_end_parse (GMarkupParseContext *context,
GError **error);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_markup_parse_context_get_element (GMarkupParseContext *context);
+GLIB_AVAILABLE_IN_ALL
const GSList * g_markup_parse_context_get_element_stack (GMarkupParseContext *context);
/* For user-constructed error messages, has no precise semantics */
+GLIB_AVAILABLE_IN_ALL
void g_markup_parse_context_get_position (GMarkupParseContext *context,
gint *line_number,
gint *char_number);
+GLIB_AVAILABLE_IN_ALL
gpointer g_markup_parse_context_get_user_data (GMarkupParseContext *context);
/* useful when saving */
+GLIB_AVAILABLE_IN_ALL
gchar* g_markup_escape_text (const gchar *text,
gssize length);
+GLIB_AVAILABLE_IN_ALL
gchar *g_markup_printf_escaped (const char *format,
...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
gchar *g_markup_vprintf_escaped (const char *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(1, 0);
typedef enum
{
@@ -225,6 +243,7 @@ typedef enum
/* useful from start_element */
+GLIB_AVAILABLE_IN_ALL
gboolean g_markup_collect_attributes (const gchar *element_name,
const gchar **attribute_names,
const gchar **attribute_values,
diff --git a/glib/glib/gmem.c b/glib/glib/gmem.c
index 1f01cd1..e3e2db5 100644
--- a/glib/glib/gmem.c
+++ b/glib/glib/gmem.c
@@ -50,72 +50,17 @@
/* notes on macros:
* having G_DISABLE_CHECKS defined disables use of glib_mem_profiler_table and
* g_mem_profile().
- * REALLOC_0_WORKS is defined if g_realloc (NULL, x) works.
- * SANE_MALLOC_PROTOS is defined if the systems malloc() and friends functions
- * match the corresponding GLib prototypes, keep configure.ac and gmem.h in sync here.
- * g_mem_gc_friendly is TRUE, freed memory should be 0-wiped.
+ * If g_mem_gc_friendly is TRUE, freed memory should be 0-wiped.
*/
-/* --- malloc wrappers --- */
-#ifndef REALLOC_0_WORKS
-static gpointer
-standard_realloc (gpointer mem,
- gsize n_bytes)
-{
- if (!mem)
- return malloc (n_bytes);
- else
- return realloc (mem, n_bytes);
-}
-#endif /* !REALLOC_0_WORKS */
-
-#ifdef SANE_MALLOC_PROTOS
-# define standard_malloc malloc
-# ifdef REALLOC_0_WORKS
-# define standard_realloc realloc
-# endif /* REALLOC_0_WORKS */
-# define standard_free free
-# define standard_calloc calloc
-# define standard_try_malloc malloc
-# define standard_try_realloc realloc
-#else /* !SANE_MALLOC_PROTOS */
-static gpointer
-standard_malloc (gsize n_bytes)
-{
- return malloc (n_bytes);
-}
-# ifdef REALLOC_0_WORKS
-static gpointer
-standard_realloc (gpointer mem,
- gsize n_bytes)
-{
- return realloc (mem, n_bytes);
-}
-# endif /* REALLOC_0_WORKS */
-static void
-standard_free (gpointer mem)
-{
- free (mem);
-}
-static gpointer
-standard_calloc (gsize n_blocks,
- gsize n_bytes)
-{
- return calloc (n_blocks, n_bytes);
-}
-#define standard_try_malloc standard_malloc
-#define standard_try_realloc standard_realloc
-#endif /* !SANE_MALLOC_PROTOS */
-
-
/* --- variables --- */
static GMemVTable glib_mem_vtable = {
- standard_malloc,
- standard_realloc,
- standard_free,
- standard_calloc,
- standard_try_malloc,
- standard_try_realloc,
+ malloc,
+ realloc,
+ free,
+ calloc,
+ malloc,
+ realloc,
};
/**
@@ -254,6 +199,45 @@ g_free (gpointer mem)
}
/**
+ * g_clear_pointer: (skip)
+ * @pp: a pointer to a variable, struct member etc. holding a pointer
+ * @destroy: a function to which a gpointer can be passed, to destroy *@pp
+ *
+ * Clears a reference to a variable.
+ *
+ * @pp must not be %NULL.
+ *
+ * If the reference is %NULL then this function does nothing.
+ * Otherwise, the variable is destroyed using @destroy and the
+ * pointer is set to %NULL.
+ *
+ * This function is threadsafe and modifies the pointer atomically,
+ * using memory barriers where needed.
+ *
+ * A macro is also included that allows this function to be used without
+ * pointer casts.
+ *
+ * Since: 2.34
+ **/
+#undef g_clear_pointer
+void
+g_clear_pointer (gpointer *pp,
+ GDestroyNotify destroy)
+{
+ gpointer _p;
+
+ /* This is a little frustrating.
+ * Would be nice to have an atomic exchange (with no compare).
+ */
+ do
+ _p = g_atomic_pointer_get (pp);
+ while G_UNLIKELY (!g_atomic_pointer_compare_and_exchange (pp, _p, NULL));
+
+ if (_p)
+ destroy (_p);
+}
+
+/**
* g_try_malloc:
* @n_bytes: number of bytes to allocate.
*
@@ -590,8 +574,8 @@ profiler_log (ProfilerJob job,
g_mutex_lock (&gmem_profile_mutex);
if (!profile_data)
{
- profile_data = standard_calloc ((MEM_PROFILE_TABLE_SIZE + 1) * 8,
- sizeof (profile_data[0]));
+ profile_data = calloc ((MEM_PROFILE_TABLE_SIZE + 1) * 8,
+ sizeof (profile_data[0]));
if (!profile_data) /* memory system kiddin' me, eh? */
{
g_mutex_unlock (&gmem_profile_mutex);
@@ -675,7 +659,7 @@ profile_print_locked (guint *local_data,
void
g_mem_profile (void)
{
- guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])];
+ guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8];
gsize local_allocs;
gsize local_zinit;
gsize local_frees;
@@ -723,7 +707,7 @@ profiler_try_malloc (gsize n_bytes)
G_BREAKPOINT ();
#endif /* G_ENABLE_DEBUG */
- p = standard_malloc (sizeof (gsize) * 2 + n_bytes);
+ p = malloc (sizeof (gsize) * 2 + n_bytes);
if (p)
{
@@ -761,7 +745,7 @@ profiler_calloc (gsize n_blocks,
G_BREAKPOINT ();
#endif /* G_ENABLE_DEBUG */
- p = standard_calloc (1, sizeof (gsize) * 2 + l);
+ p = calloc (1, sizeof (gsize) * 2 + l);
if (p)
{
@@ -805,7 +789,7 @@ profiler_free (gpointer mem)
TRUE);
memset (p + 2, 0xaa, p[1]);
- /* for all those that miss standard_free (p); in this place, yes,
+ /* for all those that miss free (p); in this place, yes,
* we do leak all memory when profiling, and that is intentional
* to catch double frees. patch submissions are futile.
*/
@@ -837,7 +821,7 @@ profiler_try_realloc (gpointer mem,
}
else
{
- p = standard_realloc (mem ? p : NULL, sizeof (gsize) * 2 + n_bytes);
+ p = realloc (mem ? p : NULL, sizeof (gsize) * 2 + n_bytes);
if (p)
{
diff --git a/glib/glib/gmem.h b/glib/glib/gmem.h
index 376e466..8795b67 100644
--- a/glib/glib/gmem.h
+++ b/glib/glib/gmem.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_MEM_H__
+#define __G_MEM_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MEM_H__
-#define __G_MEM_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -67,32 +67,66 @@ typedef struct _GMemVTable GMemVTable;
/* Memory allocation functions
*/
+GLIB_AVAILABLE_IN_ALL
void g_free (gpointer mem);
+GLIB_AVAILABLE_IN_2_34
+void g_clear_pointer (gpointer *pp,
+ GDestroyNotify destroy);
+
+GLIB_AVAILABLE_IN_ALL
gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_realloc (gpointer mem,
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_realloc (gpointer mem,
gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gpointer g_malloc_n (gsize n_blocks,
gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_ALL
gpointer g_malloc0_n (gsize n_blocks,
gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_ALL
gpointer g_realloc_n (gpointer mem,
gsize n_blocks,
gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_malloc_n (gsize n_blocks,
gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_malloc0_n (gsize n_blocks,
gsize n_block_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_ALL
gpointer g_try_realloc_n (gpointer mem,
gsize n_blocks,
gsize n_block_bytes) G_GNUC_WARN_UNUSED_RESULT;
+#define g_clear_pointer(pp, destroy) \
+ G_STMT_START { \
+ G_STATIC_ASSERT (sizeof *(pp) == sizeof (gpointer)); \
+ /* Only one access, please */ \
+ gpointer *_pp = (gpointer *) (pp); \
+ gpointer _p; \
+ /* This assignment is needed to avoid a gcc warning */ \
+ GDestroyNotify _destroy = (GDestroyNotify) (destroy); \
+ \
+ (void) (0 ? (gpointer) *(pp) : 0); \
+ do \
+ _p = g_atomic_pointer_get (_pp); \
+ while G_UNLIKELY (!g_atomic_pointer_compare_and_exchange (_pp, _p, NULL)); \
+ \
+ if (_p) \
+ _destroy (_p); \
+ } G_STMT_END
/* Optimise: avoid the call to the (slower) _n function if we can
* determine at compile-time that no overflow happens.
@@ -249,7 +283,9 @@ struct _GMemVTable {
gpointer (*try_realloc) (gpointer mem,
gsize n_bytes);
};
+GLIB_AVAILABLE_IN_ALL
void g_mem_set_vtable (GMemVTable *vtable);
+GLIB_AVAILABLE_IN_ALL
gboolean g_mem_is_system_malloc (void);
GLIB_VAR gboolean g_mem_gc_friendly;
@@ -257,6 +293,7 @@ GLIB_VAR gboolean g_mem_gc_friendly;
/* Memory profiler and checker, has to be enabled via g_mem_set_vtable()
*/
GLIB_VAR GMemVTable *glib_mem_profiler_table;
+GLIB_AVAILABLE_IN_ALL
void g_mem_profile (void);
G_END_DECLS
diff --git a/glib/glib/gmessages-private.h b/glib/glib/gmessages-private.h
new file mode 100644
index 0000000..1a592b9
--- /dev/null
+++ b/glib/glib/gmessages-private.h
@@ -0,0 +1,35 @@
+/* gmain.h - the GLib Main loop
+ * Copyright (C) 1998-2000 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __G_MESSAGES_PRIVATE_H__
+#define __G_MESSAGES_PRIVATE_H__
+
+#include <glib/gmessages.h>
+
+G_BEGIN_DECLS
+
+G_GNUC_INTERNAL void
+_g_log_set_exit_on_fatal (void);
+
+G_GNUC_INTERNAL void
+_g_log_abort (void) G_GNUC_NORETURN;
+
+G_END_DECLS
+
+#endif /* __G_MESSAGES_PRIVATE_H__ */
diff --git a/glib/glib/gmessages.c b/glib/glib/gmessages.c
index f32d51c..928276f 100644
--- a/glib/glib/gmessages.c
+++ b/glib/glib/gmessages.c
@@ -59,7 +59,7 @@
#include <locale.h>
#include <errno.h>
-#include "gmessages.h"
+#include "gmessages-private.h"
#include "glib-init.h"
#include "gbacktrace.h"
@@ -72,6 +72,7 @@
#include "gthread.h"
#include "gstrfuncs.h"
#include "gstring.h"
+#include "gpattern.h"
#ifdef G_OS_WIN32
#include <process.h> /* For getpid() */
@@ -237,12 +238,23 @@ static GLogDomain *g_log_domains = NULL;
static GPrintFunc glib_print_func = NULL;
static GPrintFunc glib_printerr_func = NULL;
static GPrivate g_log_depth;
+static gboolean exit_on_fatal;
static GLogFunc default_log_func = g_log_default_handler;
static gpointer default_log_data = NULL;
static GTestLogFatalFunc fatal_log_func = NULL;
static gpointer fatal_log_data;
/* --- functions --- */
+
+void
+_g_log_abort (void)
+{
+ if (exit_on_fatal)
+ _exit (1);
+ else
+ abort ();
+}
+
#ifdef G_OS_WIN32
# include <windows.h>
static gboolean win32_keep_fatal_message = FALSE;
@@ -280,7 +292,10 @@ static void
write_string (int fd,
const gchar *string)
{
- write (fd, string, strlen (string));
+ int res;
+ do
+ res = write (fd, string, strlen (string));
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
}
static GLogDomain*
@@ -637,214 +652,10 @@ g_log_remove_handler (const gchar *log_domain,
}
}
g_mutex_unlock (&g_messages_lock);
- g_warning ("%s: could not find handler with id `%d' for domain \"%s\"",
+ g_warning ("%s: could not find handler with id '%d' for domain \"%s\"",
G_STRLOC, handler_id, log_domain);
}
-/**
- * g_logv:
- * @log_domain: the log domain
- * @log_level: the log level
- * @format: the message format. See the printf() documentation
- * @args: the parameters to insert into the format string
- *
- * Logs an error or debugging message.
- *
- * If the log level has been set as fatal, the abort()
- * function is called to terminate the program.
- */
-void
-g_logv (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- va_list args1)
-{
- gboolean was_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
- gboolean was_recursion = (log_level & G_LOG_FLAG_RECURSION) != 0;
- gint i;
-
- log_level &= G_LOG_LEVEL_MASK;
- if (!log_level)
- return;
-
- for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
- {
- register GLogLevelFlags test_level;
-
- test_level = 1 << i;
- if (log_level & test_level)
- {
- GLogDomain *domain;
- GLogFunc log_func;
- GLogLevelFlags domain_fatal_mask;
- gpointer data = NULL;
- gboolean masquerade_fatal = FALSE;
- guint depth;
-
- if (was_fatal)
- test_level |= G_LOG_FLAG_FATAL;
- if (was_recursion)
- test_level |= G_LOG_FLAG_RECURSION;
-
- /* check recursion and lookup handler */
- g_mutex_lock (&g_messages_lock);
- depth = GPOINTER_TO_UINT (g_private_get (&g_log_depth));
- domain = g_log_find_domain_L (log_domain ? log_domain : "");
- if (depth)
- test_level |= G_LOG_FLAG_RECURSION;
- depth++;
- domain_fatal_mask = domain ? domain->fatal_mask : G_LOG_FATAL_MASK;
- if ((domain_fatal_mask | g_log_always_fatal) & test_level)
- test_level |= G_LOG_FLAG_FATAL;
- if (test_level & G_LOG_FLAG_RECURSION)
- log_func = _g_log_fallback_handler;
- else
- log_func = g_log_domain_get_handler_L (domain, test_level, &data);
- domain = NULL;
- g_mutex_unlock (&g_messages_lock);
-
- g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
-
-
- if (test_level & G_LOG_FLAG_RECURSION)
- {
- /* we use a stack buffer of fixed size, since we're likely
- * in an out-of-memory situation
- */
- gchar buffer[1025];
- gsize size G_GNUC_UNUSED;
- va_list args2;
-
- G_VA_COPY (args2, args1);
- size = _g_vsnprintf (buffer, 1024, format, args2);
- va_end (args2);
-
- log_func (log_domain, test_level, buffer, data);
- }
- else
- {
- gchar *msg;
- va_list args2;
-
- G_VA_COPY (args2, args1);
- msg = g_strdup_vprintf (format, args2);
- va_end (args2);
-
- log_func (log_domain, test_level, msg, data);
-
- if ((test_level & G_LOG_FLAG_FATAL)
- && !(test_level & G_LOG_LEVEL_ERROR))
- {
- masquerade_fatal = fatal_log_func
- && !fatal_log_func (log_domain, test_level, msg, fatal_log_data);
- }
-
- g_free (msg);
- }
-
- if ((test_level & G_LOG_FLAG_FATAL) && !masquerade_fatal)
- {
-#ifdef G_OS_WIN32
- gchar *locale_msg = g_locale_from_utf8 (fatal_msg_buf, -1, NULL, NULL, NULL);
-
- MessageBox (NULL, locale_msg, NULL,
- MB_ICONERROR|MB_SETFOREGROUND);
- if (IsDebuggerPresent () && !(test_level & G_LOG_FLAG_RECURSION))
- G_BREAKPOINT ();
- else
- abort ();
-#else
- if (!(test_level & G_LOG_FLAG_RECURSION))
- G_BREAKPOINT ();
- else
- abort ();
-#endif /* !G_OS_WIN32 */
- }
-
- depth--;
- g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
- }
- }
-}
-
-/**
- * g_log:
- * @log_domain: the log domain, usually #G_LOG_DOMAIN
- * @log_level: the log level, either from #GLogLevelFlags
- * or a user-defined level
- * @format: the message format. See the printf() documentation
- * @...: the parameters to insert into the format string
- *
- * Logs an error or debugging message.
- *
- * If the log level has been set as fatal, the abort()
- * function is called to terminate the program.
- */
-void
-g_log (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- ...)
-{
- va_list args;
-
- va_start (args, format);
- g_logv (log_domain, log_level, format, args);
- va_end (args);
-}
-
-void
-g_return_if_fail_warning (const char *log_domain,
- const char *pretty_function,
- const char *expression)
-{
- g_log (log_domain,
- G_LOG_LEVEL_CRITICAL,
- "%s: assertion `%s' failed",
- pretty_function,
- expression);
-}
-
-void
-g_warn_message (const char *domain,
- const char *file,
- int line,
- const char *func,
- const char *warnexpr)
-{
- char *s, lstr[32];
- g_snprintf (lstr, 32, "%d", line);
- if (warnexpr)
- s = g_strconcat ("(", file, ":", lstr, "):",
- func, func[0] ? ":" : "",
- " runtime check failed: (", warnexpr, ")", NULL);
- else
- s = g_strconcat ("(", file, ":", lstr, "):",
- func, func[0] ? ":" : "",
- " ", "code should not be reached", NULL);
- g_log (domain, G_LOG_LEVEL_WARNING, "%s", s);
- g_free (s);
-}
-
-void
-g_assert_warning (const char *log_domain,
- const char *file,
- const int line,
- const char *pretty_function,
- const char *expression)
-{
- g_log (log_domain,
- G_LOG_LEVEL_ERROR,
- expression
- ? "file %s: line %d (%s): assertion failed: (%s)"
- : "file %s: line %d (%s): should not be reached",
- file,
- line,
- pretty_function,
- expression);
- abort ();
-}
-
#define CHAR_IS_SAFE(wc) (!((wc < 0x20 && wc != '\t' && wc != '\n' && wc != '\r') || \
(wc == 0x7f) || \
(wc >= 0x80 && wc < 0xa0)))
@@ -1023,11 +834,337 @@ mklevel_prefix (gchar level_prefix[STRING_BUFFER_SIZE],
strcat (level_prefix, " **");
#ifdef G_OS_WIN32
- win32_keep_fatal_message = (log_level & G_LOG_FLAG_FATAL) != 0;
+ if ((log_level & G_LOG_FLAG_FATAL) != 0 && !g_test_initialized ())
+ win32_keep_fatal_message = TRUE;
#endif
return to_stdout ? 1 : 2;
}
+typedef struct {
+ gchar *log_domain;
+ GLogLevelFlags log_level;
+ gchar *pattern;
+} GTestExpectedMessage;
+
+static GSList *expected_messages = NULL;
+
+/**
+ * g_logv:
+ * @log_domain: the log domain
+ * @log_level: the log level
+ * @format: the message format. See the printf() documentation
+ * @args: the parameters to insert into the format string
+ *
+ * Logs an error or debugging message.
+ *
+ * If the log level has been set as fatal, the abort()
+ * function is called to terminate the program.
+ */
+void
+g_logv (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ va_list args)
+{
+ gboolean was_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
+ gboolean was_recursion = (log_level & G_LOG_FLAG_RECURSION) != 0;
+ gchar buffer[1025], *msg, *msg_alloc = NULL;
+ gint i;
+
+ log_level &= G_LOG_LEVEL_MASK;
+ if (!log_level)
+ return;
+
+ if (log_level & G_LOG_FLAG_RECURSION)
+ {
+ /* we use a stack buffer of fixed size, since we're likely
+ * in an out-of-memory situation
+ */
+ gsize size G_GNUC_UNUSED;
+
+ size = _g_vsnprintf (buffer, 1024, format, args);
+ msg = buffer;
+ }
+ else
+ msg = msg_alloc = g_strdup_vprintf (format, args);
+
+ if (expected_messages)
+ {
+ GTestExpectedMessage *expected = expected_messages->data;
+
+ expected_messages = g_slist_delete_link (expected_messages,
+ expected_messages);
+ if (g_strcmp0 (expected->log_domain, log_domain) == 0 &&
+ ((log_level & expected->log_level) == expected->log_level) &&
+ g_pattern_match_simple (expected->pattern, msg))
+ {
+ g_free (expected->log_domain);
+ g_free (expected->pattern);
+ g_free (expected);
+ g_free (msg_alloc);
+ return;
+ }
+ else
+ {
+ gchar level_prefix[STRING_BUFFER_SIZE];
+ gchar *expected_message;
+
+ mklevel_prefix (level_prefix, expected->log_level);
+ expected_message = g_strdup_printf ("Did not see expected message %s: %s",
+ level_prefix, expected->pattern);
+ g_log_default_handler (log_domain, log_level, expected_message, NULL);
+ g_free (expected_message);
+
+ log_level |= G_LOG_FLAG_FATAL;
+ }
+ }
+
+ for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
+ {
+ register GLogLevelFlags test_level;
+
+ test_level = 1 << i;
+ if (log_level & test_level)
+ {
+ GLogDomain *domain;
+ GLogFunc log_func;
+ GLogLevelFlags domain_fatal_mask;
+ gpointer data = NULL;
+ gboolean masquerade_fatal = FALSE;
+ guint depth;
+
+ if (was_fatal)
+ test_level |= G_LOG_FLAG_FATAL;
+ if (was_recursion)
+ test_level |= G_LOG_FLAG_RECURSION;
+
+ /* check recursion and lookup handler */
+ g_mutex_lock (&g_messages_lock);
+ depth = GPOINTER_TO_UINT (g_private_get (&g_log_depth));
+ domain = g_log_find_domain_L (log_domain ? log_domain : "");
+ if (depth)
+ test_level |= G_LOG_FLAG_RECURSION;
+ depth++;
+ domain_fatal_mask = domain ? domain->fatal_mask : G_LOG_FATAL_MASK;
+ if ((domain_fatal_mask | g_log_always_fatal) & test_level)
+ test_level |= G_LOG_FLAG_FATAL;
+ if (test_level & G_LOG_FLAG_RECURSION)
+ log_func = _g_log_fallback_handler;
+ else
+ log_func = g_log_domain_get_handler_L (domain, test_level, &data);
+ domain = NULL;
+ g_mutex_unlock (&g_messages_lock);
+
+ g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
+
+ log_func (log_domain, test_level, msg, data);
+
+ if ((test_level & G_LOG_FLAG_FATAL)
+ && !(test_level & G_LOG_LEVEL_ERROR))
+ {
+ masquerade_fatal = fatal_log_func
+ && !fatal_log_func (log_domain, test_level, msg, fatal_log_data);
+ }
+
+ if ((test_level & G_LOG_FLAG_FATAL) && exit_on_fatal && !masquerade_fatal)
+ {
+ _g_log_abort ();
+ }
+ else if ((test_level & G_LOG_FLAG_FATAL) && !masquerade_fatal)
+ {
+#ifdef G_OS_WIN32
+ if (win32_keep_fatal_message)
+ {
+ gchar *locale_msg = g_locale_from_utf8 (fatal_msg_buf, -1, NULL, NULL, NULL);
+
+ MessageBox (NULL, locale_msg, NULL,
+ MB_ICONERROR|MB_SETFOREGROUND);
+ }
+ if (IsDebuggerPresent () && !(test_level & G_LOG_FLAG_RECURSION))
+ G_BREAKPOINT ();
+ else
+ abort ();
+#else
+ if (!(test_level & G_LOG_FLAG_RECURSION))
+ G_BREAKPOINT ();
+ else
+ abort ();
+#endif /* !G_OS_WIN32 */
+ }
+
+ depth--;
+ g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
+ }
+ }
+
+ g_free (msg_alloc);
+}
+
+/**
+ * g_log:
+ * @log_domain: the log domain, usually #G_LOG_DOMAIN
+ * @log_level: the log level, either from #GLogLevelFlags
+ * or a user-defined level
+ * @format: the message format. See the printf() documentation
+ * @...: the parameters to insert into the format string
+ *
+ * Logs an error or debugging message.
+ *
+ * If the log level has been set as fatal, the abort()
+ * function is called to terminate the program.
+ */
+void
+g_log (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ ...)
+{
+ va_list args;
+
+ va_start (args, format);
+ g_logv (log_domain, log_level, format, args);
+ va_end (args);
+}
+
+void
+g_return_if_fail_warning (const char *log_domain,
+ const char *pretty_function,
+ const char *expression)
+{
+ g_log (log_domain,
+ G_LOG_LEVEL_CRITICAL,
+ "%s: assertion '%s' failed",
+ pretty_function,
+ expression);
+}
+
+void
+g_warn_message (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *warnexpr)
+{
+ char *s, lstr[32];
+ g_snprintf (lstr, 32, "%d", line);
+ if (warnexpr)
+ s = g_strconcat ("(", file, ":", lstr, "):",
+ func, func[0] ? ":" : "",
+ " runtime check failed: (", warnexpr, ")", NULL);
+ else
+ s = g_strconcat ("(", file, ":", lstr, "):",
+ func, func[0] ? ":" : "",
+ " ", "code should not be reached", NULL);
+ g_log (domain, G_LOG_LEVEL_WARNING, "%s", s);
+ g_free (s);
+}
+
+void
+g_assert_warning (const char *log_domain,
+ const char *file,
+ const int line,
+ const char *pretty_function,
+ const char *expression)
+{
+ g_log (log_domain,
+ G_LOG_LEVEL_ERROR,
+ expression
+ ? "file %s: line %d (%s): assertion failed: (%s)"
+ : "file %s: line %d (%s): should not be reached",
+ file,
+ line,
+ pretty_function,
+ expression);
+ _g_log_abort ();
+}
+
+/**
+ * g_test_expect_message:
+ * @log_domain: (allow-none): the log domain of the message
+ * @log_level: the log level of the message
+ * @pattern: a glob-style
+ * <link linkend="glib-Glob-style-pattern-matching">pattern</link>
+ *
+ * Indicates that a message with the given @log_domain and @log_level,
+ * with text matching @pattern, is expected to be logged. When this
+ * message is logged, it will not be printed, and the test case will
+ * not abort.
+ *
+ * Use g_test_assert_expected_messages() to assert that all
+ * previously-expected messages have been seen and suppressed.
+ *
+ * You can call this multiple times in a row, if multiple messages are
+ * expected as a result of a single call. (The messages must appear in
+ * the same order as the calls to g_test_expect_message().)
+ *
+ * For example:
+ *
+ * |[
+ * /&ast; g_main_context_push_thread_default() should fail if the
+ * &ast; context is already owned by another thread.
+ * &ast;/
+ * g_test_expect_message (G_LOG_DOMAIN,
+ * G_LOG_LEVEL_CRITICAL,
+ * "assertion*acquired_context*failed");
+ * g_main_context_push_thread_default (bad_context);
+ * g_test_assert_expected_messages ();
+ * ]|
+ *
+ * Note that you cannot use this to test g_error() messages, since
+ * g_error() intentionally never returns even if the program doesn't
+ * abort; use g_test_trap_subprocess() in this case.
+ *
+ * Since: 2.34
+ */
+void
+g_test_expect_message (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *pattern)
+{
+ GTestExpectedMessage *expected;
+
+ g_return_if_fail (log_level != 0);
+ g_return_if_fail (pattern != NULL);
+
+ expected = g_new (GTestExpectedMessage, 1);
+ expected->log_domain = g_strdup (log_domain);
+ expected->log_level = log_level;
+ expected->pattern = g_strdup (pattern);
+
+ expected_messages = g_slist_append (expected_messages, expected);
+}
+
+void
+g_test_assert_expected_messages_internal (const char *domain,
+ const char *file,
+ int line,
+ const char *func)
+{
+ if (expected_messages)
+ {
+ GTestExpectedMessage *expected;
+ gchar level_prefix[STRING_BUFFER_SIZE];
+ gchar *message;
+
+ expected = expected_messages->data;
+
+ mklevel_prefix (level_prefix, expected->log_level);
+ message = g_strdup_printf ("Did not see expected message %s: %s",
+ level_prefix, expected->pattern);
+ g_assertion_message (domain, file, line, func, message);
+ g_free (message);
+ }
+}
+
+/**
+ * g_test_assert_expected_messages:
+ *
+ * Asserts that all messages previously indicated via
+ * g_test_expect_message() have been seen and suppressed.
+ *
+ * Since: 2.34
+ */
+
void
_g_log_fallback_handler (const gchar *log_domain,
GLogLevelFlags log_level,
@@ -1429,3 +1566,9 @@ g_printf_string_upper_bound (const gchar *format,
gchar c;
return _g_vsnprintf (&c, 1, format, args) + 1;
}
+
+void
+_g_log_set_exit_on_fatal (void)
+{
+ exit_on_fatal = TRUE;
+}
diff --git a/glib/glib/gmessages.h b/glib/glib/gmessages.h
index 9cbcc83..77958ad 100644
--- a/glib/glib/gmessages.h
+++ b/glib/glib/gmessages.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_MESSAGES_H__
+#define __G_MESSAGES_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_MESSAGES_H__
-#define __G_MESSAGES_H__
-
#include <stdarg.h>
#include <glib/gtypes.h>
#include <glib/gmacros.h>
@@ -45,8 +45,9 @@ G_BEGIN_DECLS
/* calculate a string size, guaranteed to fit format + args.
*/
+GLIB_AVAILABLE_IN_ALL
gsize g_printf_string_upper_bound (const gchar* format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(1, 0);
/* Log level shift offset for user defined
* log levels (0-7 are used by GLib).
@@ -82,45 +83,55 @@ typedef void (*GLogFunc) (const gchar *log_domain,
/* Logging mechanism
*/
+GLIB_AVAILABLE_IN_ALL
guint g_log_set_handler (const gchar *log_domain,
GLogLevelFlags log_levels,
GLogFunc log_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_log_remove_handler (const gchar *log_domain,
guint handler_id);
+GLIB_AVAILABLE_IN_ALL
void g_log_default_handler (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer unused_data);
+GLIB_AVAILABLE_IN_ALL
GLogFunc g_log_set_default_handler (GLogFunc log_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_log (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *format,
...) G_GNUC_PRINTF (3, 4);
+GLIB_AVAILABLE_IN_ALL
void g_logv (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(3, 0);
+GLIB_AVAILABLE_IN_ALL
GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain,
GLogLevelFlags fatal_mask);
+GLIB_AVAILABLE_IN_ALL
GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask);
/* internal */
-G_GNUC_INTERNAL void _g_log_fallback_handler (const gchar *log_domain,
+void _g_log_fallback_handler (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer unused_data);
/* Internal functions, used to implement the following macros */
+GLIB_AVAILABLE_IN_ALL
void g_return_if_fail_warning (const char *log_domain,
const char *pretty_function,
- const char *expression);
+ const char *expression) G_ANALYZER_NORETURN;
+GLIB_AVAILABLE_IN_ALL
void g_warn_message (const char *domain,
const char *file,
int line,
const char *func,
- const char *warnexpr);
+ const char *warnexpr) G_ANALYZER_NORETURN;
GLIB_DEPRECATED
void g_assert_warning (const char *log_domain,
const char *file,
@@ -132,7 +143,8 @@ void g_assert_warning (const char *log_domain,
#ifndef G_LOG_DOMAIN
#define G_LOG_DOMAIN ((gchar*) 0)
#endif /* G_LOG_DOMAIN */
-#ifdef G_HAVE_ISO_VARARGS
+
+#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
/* for(;;) ; so that GCC knows that control doesn't go past g_error().
* Put space before ending semicolon to avoid C++ build warnings.
*/
@@ -155,7 +167,7 @@ void g_assert_warning (const char *log_domain,
#define g_debug(...) g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_DEBUG, \
__VA_ARGS__)
-#elif defined(G_HAVE_GNUC_VARARGS)
+#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING
#define g_error(format...) G_STMT_START { \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_ERROR, \
@@ -176,6 +188,9 @@ void g_assert_warning (const char *log_domain,
G_LOG_LEVEL_DEBUG, \
format)
#else /* no varargs macros */
+static void g_error (const gchar *format, ...) G_ANALYZER_NORETURN;
+static void g_critical (const gchar *format, ...) G_ANALYZER_NORETURN;
+
static void
g_error (const gchar *format,
...)
@@ -233,11 +248,15 @@ g_debug (const gchar *format,
* These are called with the complete formatted string to output.
*/
typedef void (*GPrintFunc) (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
void g_print (const gchar *format,
...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
GPrintFunc g_set_print_handler (GPrintFunc func);
+GLIB_AVAILABLE_IN_ALL
void g_printerr (const gchar *format,
...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
GPrintFunc g_set_printerr_handler (GPrintFunc func);
/**
@@ -360,7 +379,7 @@ GPrintFunc g_set_printerr_handler (GPrintFunc func);
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion `%s' failed", \
+ "file %s: line %d: assertion '%s' failed", \
__FILE__, \
__LINE__, \
#expr); \
@@ -372,7 +391,7 @@ GPrintFunc g_set_printerr_handler (GPrintFunc func);
{ \
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion `%s' failed", \
+ "file %s: line %d: assertion '%s' failed", \
__FILE__, \
__LINE__, \
#expr); \
diff --git a/glib/glib/gnode.c b/glib/glib/gnode.c
index b2c3226..80cc44b 100644
--- a/glib/glib/gnode.c
+++ b/glib/glib/gnode.c
@@ -840,12 +840,13 @@ g_node_depth_traverse_level (GNode *node,
* GNodeTraverseFunc:
* @node: a #GNode.
* @data: user data passed to g_node_traverse().
- * @Returns: %TRUE to stop the traversal.
*
* Specifies the type of function passed to g_node_traverse(). The
* function is called with each of the nodes visited, together with the
* user data passed to g_node_traverse(). If the function returns
* %TRUE, then the traversal is stopped.
+ *
+ * Returns: %TRUE to stop the traversal.
**/
void
g_node_traverse (GNode *root,
diff --git a/glib/glib/gnode.h b/glib/glib/gnode.h
index 7ffdcbf..71f60ab 100644
--- a/glib/glib/gnode.h
+++ b/glib/glib/gnode.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_NODE_H__
+#define __G_NODE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_NODE_H__
-#define __G_NODE_H__
-
#include <glib/gmem.h>
G_BEGIN_DECLS
@@ -112,30 +112,44 @@ struct _GNode
*/
#define G_NODE_IS_LEAF(node) (((GNode*) (node))->children == NULL)
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_new (gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_node_destroy (GNode *root);
+GLIB_AVAILABLE_IN_ALL
void g_node_unlink (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_copy_deep (GNode *node,
GCopyFunc copy_func,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_copy (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_insert (GNode *parent,
gint position,
GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_insert_before (GNode *parent,
GNode *sibling,
GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_insert_after (GNode *parent,
GNode *sibling,
GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_prepend (GNode *parent,
GNode *node);
+GLIB_AVAILABLE_IN_ALL
guint g_node_n_nodes (GNode *root,
GTraverseFlags flags);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_get_root (GNode *node);
+GLIB_AVAILABLE_IN_ALL
gboolean g_node_is_ancestor (GNode *node,
GNode *descendant);
+GLIB_AVAILABLE_IN_ALL
guint g_node_depth (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_find (GNode *root,
GTraverseType order,
GTraverseFlags flags,
@@ -218,11 +232,12 @@ GNode* g_node_find (GNode *root,
#define g_node_append_data(parent, data) \
g_node_insert_before ((parent), NULL, g_node_new (data))
-/* traversal function, assumes that `node' is root
- * (only traverses `node' and its subtree).
+/* traversal function, assumes that 'node' is root
+ * (only traverses 'node' and its subtree).
* this function is just a high level interface to
* low level traversal functions, optimized for speed.
*/
+GLIB_AVAILABLE_IN_ALL
void g_node_traverse (GNode *root,
GTraverseType order,
GTraverseFlags flags,
@@ -230,31 +245,42 @@ void g_node_traverse (GNode *root,
GNodeTraverseFunc func,
gpointer data);
-/* return the maximum tree height starting with `node', this is an expensive
+/* return the maximum tree height starting with 'node', this is an expensive
* operation, since we need to visit all nodes. this could be shortened by
- * adding `guint height' to struct _GNode, but then again, this is not very
+ * adding 'guint height' to struct _GNode, but then again, this is not very
* often needed, and would make g_node_insert() more time consuming.
*/
+GLIB_AVAILABLE_IN_ALL
guint g_node_max_height (GNode *root);
+GLIB_AVAILABLE_IN_ALL
void g_node_children_foreach (GNode *node,
GTraverseFlags flags,
GNodeForeachFunc func,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_node_reverse_children (GNode *node);
+GLIB_AVAILABLE_IN_ALL
guint g_node_n_children (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_nth_child (GNode *node,
guint n);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_last_child (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_find_child (GNode *node,
GTraverseFlags flags,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
gint g_node_child_position (GNode *node,
GNode *child);
+GLIB_AVAILABLE_IN_ALL
gint g_node_child_index (GNode *node,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_first_sibling (GNode *node);
+GLIB_AVAILABLE_IN_ALL
GNode* g_node_last_sibling (GNode *node);
/**
diff --git a/glib/glib/gnulib/Makefile.am b/glib/glib/gnulib/Makefile.am
index a8666ff..06ce41c 100644
--- a/glib/glib/gnulib/Makefile.am
+++ b/glib/glib/gnulib/Makefile.am
@@ -1,11 +1,16 @@
## Process this file with automake to produce Makefile.in
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib.mk
-INCLUDES = $(glib_INCLUDES) -DG_LOG_DOMAIN=\"GLib\" \
- $(GLIB_DEBUG_FLAGS) -DG_DISABLE_DEPRECATED -DGLIB_COMPILATION
+AM_CPPFLAGS = \
+ $(glib_INCLUDES) \
+ -DG_LOG_DOMAIN=\"GLib\" \
+ $(GLIB_DEBUG_FLAGS) \
+ -DG_DISABLE_DEPRECATED \
+ -DGLIB_COMPILATION
-noinst_LTLIBRARIES = libgnulib.la
+noinst_LTLIBRARIES += libgnulib.la
+libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libgnulib_la_SOURCES = \
asnprintf.c \
printf-args.c \
diff --git a/glib/glib/gnulib/Makefile.in b/glib/glib/gnulib/Makefile.in
index 20f3ef9..fba3ed2 100644
--- a/glib/glib/gnulib/Makefile.in
+++ b/glib/glib/gnulib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,24 +16,65 @@
# GLIB - Library of useful C routines
+
+
+
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -52,12 +93,43 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/Makefile.decl $(top_srcdir)/depcomp \
- $(top_srcdir)/mkinstalldirs
+installed_test_PROGRAMS = $(am__EXEEXT_1)
+noinst_PROGRAMS = $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_1)
+@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs)
+
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
subdir = glib/gnulib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
+ $(top_srcdir)/m4macros/glibtests.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/m4macros/ltoptions.m4 \
$(top_srcdir)/m4macros/ltsugar.m4 \
$(top_srcdir)/m4macros/ltversion.m4 \
@@ -69,19 +141,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_test_metadir)" \
+ "$(DESTDIR)$(installed_testdir)"
+LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
libgnulib_la_LIBADD =
-am_libgnulib_la_OBJECTS = asnprintf.lo printf-args.lo printf-parse.lo \
- vasnprintf.lo printf.lo
+am_libgnulib_la_OBJECTS = libgnulib_la-asnprintf.lo \
+ libgnulib_la-printf-args.lo libgnulib_la-printf-parse.lo \
+ libgnulib_la-vasnprintf.lo libgnulib_la-printf.lo
libgnulib_la_OBJECTS = $(am_libgnulib_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+libgnulib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgnulib_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am__EXEEXT_1 =
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1)
+PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
+SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -123,8 +237,204 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
+ $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/glib.mk $(top_srcdir)/test-driver README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ABS_GLIB_RUNTIME_LIBDIR = @ABS_GLIB_RUNTIME_LIBDIR@
ACLOCAL = @ACLOCAL@
@@ -165,6 +475,7 @@ GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
@@ -172,6 +483,7 @@ GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
+GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GREP = @GREP@
GSPAWN = @GSPAWN@
@@ -202,7 +514,6 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
@@ -218,6 +529,7 @@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
+NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -244,14 +556,13 @@ PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
-SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDRES = @WINDRES@
-XATTR_LIBS = @XATTR_LIBS@
+WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -282,7 +593,6 @@ gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
-gthread_INCLUDES = @gthread_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -292,6 +602,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -318,16 +630,104 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
# initialize variables for unconditional += appending
-EXTRA_DIST =
-TEST_PROGS =
-INCLUDES = $(glib_INCLUDES) -DG_LOG_DOMAIN=\"GLib\" \
- $(GLIB_DEBUG_FLAGS) -DG_DISABLE_DEPRECATED -DGLIB_COMPILATION
-
-noinst_LTLIBRARIES = libgnulib.la
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs $(am__append_14)
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data)
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
+ $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+installed_test_LTLIBRARIES = $(am__append_13)
+installed_test_SCRIPTS = $(am__append_11)
+nobase_installed_test_DATA = $(am__append_12)
+noinst_LTLIBRARIES = $(am__append_2) libgnulib.la
+noinst_SCRIPTS = $(am__append_4)
+noinst_DATA = $(am__append_5)
+check_LTLIBRARIES = $(am__append_6)
+check_SCRIPTS = $(am__append_8)
+check_DATA = $(am__append_9)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
+ $(installed_test_scripts) $(test_extra_scripts) \
+ $(uninstalled_test_extra_scripts) \
+ $(installed_test_extra_scripts) $(all_dist_test_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+
+all_test_data = $(test_data) $(uninstalled_test_data) \
+ $(installed_test_data) $(all_dist_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
+AM_CPPFLAGS = \
+ $(glib_INCLUDES) \
+ -DG_LOG_DOMAIN=\"GLib\" \
+ $(GLIB_DEBUG_FLAGS) \
+ -DG_DISABLE_DEPRECATED \
+ -DGLIB_COMPILATION
+
+libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libgnulib_la_SOURCES = \
asnprintf.c \
printf-args.c \
@@ -340,11 +740,12 @@ libgnulib_la_SOURCES = \
printf.h \
g-gnulib.h
-all: all-am
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -356,7 +757,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glib/gnulib/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign glib/gnulib/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -365,7 +765,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/Makefile.decl:
+$(top_srcdir)/glib.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -376,6 +776,52 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+clean-checkLTLIBRARIES:
+ -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
+ @list='$(check_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
+ }
+
+uninstall-installed_testLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
+ done
+
+clean-installed_testLTLIBRARIES:
+ -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
+ @list='$(installed_test_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
@@ -386,8 +832,111 @@ clean-noinstLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
+
libgnulib.la: $(libgnulib_la_OBJECTS) $(libgnulib_la_DEPENDENCIES) $(EXTRA_libgnulib_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libgnulib_la_OBJECTS) $(libgnulib_la_LIBADD) $(LIBS)
+ $(AM_V_CCLD)$(libgnulib_la_LINK) $(libgnulib_la_OBJECTS) $(libgnulib_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files
+
+clean-installed_testPROGRAMS:
+ @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -395,25 +944,25 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-args.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-parse.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasnprintf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-asnprintf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-args.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-parse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-vasnprintf.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -422,32 +971,101 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+libgnulib_la-asnprintf.lo: asnprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-asnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-asnprintf.Tpo -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-asnprintf.Tpo $(DEPDIR)/libgnulib_la-asnprintf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='asnprintf.c' object='libgnulib_la-asnprintf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c
+
+libgnulib_la-printf-args.lo: printf-args.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-args.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-args.Tpo -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-args.Tpo $(DEPDIR)/libgnulib_la-printf-args.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-args.c' object='libgnulib_la-printf-args.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c
+
+libgnulib_la-printf-parse.lo: printf-parse.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-parse.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-parse.Tpo -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-parse.Tpo $(DEPDIR)/libgnulib_la-printf-parse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-parse.c' object='libgnulib_la-printf-parse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c
+
+libgnulib_la-vasnprintf.lo: vasnprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-vasnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-vasnprintf.Tpo -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-vasnprintf.Tpo $(DEPDIR)/libgnulib_la-vasnprintf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vasnprintf.c' object='libgnulib_la-vasnprintf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c
+
+libgnulib_la-printf.lo: printf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf.Tpo -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf.Tpo $(DEPDIR)/libgnulib_la-printf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf.c' object='libgnulib_la-printf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c
+
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
+install-installed_test_metaDATA: $(installed_test_meta_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
+ done
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+uninstall-installed_test_metaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
+install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_installed_testDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -459,15 +1077,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -476,9 +1090,10 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
-cscopelist: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
@@ -494,6 +1109,162 @@ cscopelist: $(HEADERS) $(SOURCES) $(LISP)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -525,11 +1296,18 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
+ $(check_SCRIPTS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA)
installdirs:
-install: install-am
+ for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -549,19 +1327,28 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
mostlyclean-am
distclean: distclean-am
@@ -582,7 +1369,10 @@ info: info-am
info-am:
-install-data-am:
+install-data-am: install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA \
+ install-nobase_installed_testDATA
install-dvi: install-dvi-am
@@ -628,23 +1418,40 @@ ps: ps-am
ps-am:
-uninstall-am:
+uninstall-am: uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
-.MAKE: check-am install-am install-strip
+.MAKE: all check check-am install install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
- clean-generic clean-libtool clean-noinstLTLIBRARIES cscopelist \
- ctags distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
+ check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \
+ clean-generic clean-installed_testLTLIBRARIES \
+ clean-installed_testPROGRAMS clean-libtool \
+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
+ install-info-am install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA install-man \
+ install-nobase_installed_testDATA install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am
+ recheck tags tags-am uninstall uninstall-am \
+ uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.PRECIOUS: Makefile
### testing rules
@@ -658,7 +1465,7 @@ test: test-nonrecursive
# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
-@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:
# test-report: run tests in subdirs and generate report
@@ -672,9 +1479,9 @@ test-report perf-report full-report: ${TEST_PROGS}
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}
@ ignore_logdir=true ; \
@@ -732,6 +1539,12 @@ lcov-clean:
# run tests in cwd as part of make check
check-local: test-nonrecursive
+@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
+@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@)
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/glib/glib/gnulib/vasnprintf.c b/glib/glib/gnulib/vasnprintf.c
index c981059..5ecc419 100644
--- a/glib/glib/gnulib/vasnprintf.c
+++ b/glib/glib/gnulib/vasnprintf.c
@@ -729,13 +729,16 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
{
size_t maxlen;
int count;
+#if HAVE_SNPRINTF
int retcount;
+#endif
maxlen = allocated - length;
count = -1;
- retcount = 0;
#if HAVE_SNPRINTF
+ retcount = 0;
+
#define SNPRINTF_BUF(arg) \
switch (prefix_count) \
{ \
diff --git a/glib/glib/goption.c b/glib/glib/goption.c
index 9f54be0..0a22f6f 100644
--- a/glib/glib/goption.c
+++ b/glib/glib/goption.c
@@ -261,7 +261,6 @@ static glong
_g_utf8_strwidth (const gchar *p)
{
glong len = 0;
- const gchar *start = p;
g_return_val_if_fail (p != NULL, 0);
while (*p)
@@ -273,16 +272,11 @@ _g_utf8_strwidth (const gchar *p)
return len;
}
-
-GQuark
-g_option_error_quark (void)
-{
- return g_quark_from_static_string ("g-option-context-error-quark");
-}
+G_DEFINE_QUARK (g-option-context-error-quark, g_option_error)
/**
* g_option_context_new:
- * @parameter_string: a string which is displayed in
+ * @parameter_string: (allow-none): a string which is displayed in
* the first line of <option>--help</option> output, after the
* usage summary
* <literal><replaceable>programname</replaceable> [OPTION...]</literal>
@@ -563,10 +557,12 @@ g_option_context_add_main_entries (GOptionContext *context,
}
static gint
-calculate_max_length (GOptionGroup *group)
+calculate_max_length (GOptionGroup *group,
+ GHashTable *aliases)
{
GOptionEntry *entry;
gint i, len, max_length;
+ const gchar *long_name;
max_length = 0;
@@ -577,7 +573,10 @@ calculate_max_length (GOptionGroup *group)
if (entry->flags & G_OPTION_FLAG_HIDDEN)
continue;
- len = _g_utf8_strwidth (entry->long_name);
+ long_name = g_hash_table_lookup (aliases, &entry->long_name);
+ if (!long_name)
+ long_name = entry->long_name;
+ len = _g_utf8_strwidth (long_name);
if (entry->short_name)
len += 4;
@@ -595,9 +594,11 @@ static void
print_entry (GOptionGroup *group,
gint max_length,
const GOptionEntry *entry,
- GString *string)
+ GString *string,
+ GHashTable *aliases)
{
GString *str;
+ const gchar *long_name;
if (entry->flags & G_OPTION_FLAG_HIDDEN)
return;
@@ -605,12 +606,16 @@ print_entry (GOptionGroup *group,
if (entry->long_name[0] == 0)
return;
+ long_name = g_hash_table_lookup (aliases, &entry->long_name);
+ if (!long_name)
+ long_name = entry->long_name;
+
str = g_string_new (NULL);
if (entry->short_name)
- g_string_append_printf (str, " -%c, --%s", entry->short_name, entry->long_name);
+ g_string_append_printf (str, " -%c, --%s", entry->short_name, long_name);
else
- g_string_append_printf (str, " --%s", entry->long_name);
+ g_string_append_printf (str, " --%s", long_name);
if (entry->arg_description)
g_string_append_printf (str, "=%s", TRANSLATE (group, entry->arg_description));
@@ -640,6 +645,8 @@ group_has_visible_entries (GOptionContext *context,
if (main_entries && !main_group && !(entry->flags & G_OPTION_FLAG_IN_MAIN))
continue;
+ if (entry->long_name[0] == 0) /* ignore rest entry */
+ continue;
if (!(entry->flags & reject_filter))
return TRUE;
}
@@ -716,10 +723,11 @@ g_option_context_get_help (GOptionContext *context,
GOptionGroup *group)
{
GList *list;
- gint max_length, len;
+ gint max_length = 0, len;
gint i;
GOptionEntry *entry;
GHashTable *shadow_map;
+ GHashTable *aliases;
gboolean seen[256];
const gchar *rest_description;
GString *string;
@@ -767,6 +775,7 @@ g_option_context_get_help (GOptionContext *context,
memset (seen, 0, sizeof (gboolean) * 256);
shadow_map = g_hash_table_new (g_str_hash, g_str_equal);
+ aliases = g_hash_table_new_full (NULL, NULL, NULL, g_free);
if (context->main_group)
{
@@ -793,7 +802,10 @@ g_option_context_get_help (GOptionContext *context,
entry = &g->entries[i];
if (g_hash_table_lookup (shadow_map, entry->long_name) &&
!(entry->flags & G_OPTION_FLAG_NOALIAS))
- entry->long_name = g_strdup_printf ("%s-%s", g->name, entry->long_name);
+ {
+ g_hash_table_insert (aliases, &entry->long_name,
+ g_strdup_printf ("%s-%s", g->name, entry->long_name));
+ }
else
g_hash_table_insert (shadow_map, (gpointer)entry->long_name, entry);
@@ -810,17 +822,20 @@ g_option_context_get_help (GOptionContext *context,
list = context->groups;
- max_length = _g_utf8_strwidth ("-?, --help");
-
- if (list)
+ if (context->help_enabled)
{
- len = _g_utf8_strwidth ("--help-all");
- max_length = MAX (max_length, len);
+ max_length = _g_utf8_strwidth ("-?, --help");
+
+ if (list)
+ {
+ len = _g_utf8_strwidth ("--help-all");
+ max_length = MAX (max_length, len);
+ }
}
if (context->main_group)
{
- len = calculate_max_length (context->main_group);
+ len = calculate_max_length (context->main_group, aliases);
max_length = MAX (max_length, len);
}
@@ -828,12 +843,15 @@ g_option_context_get_help (GOptionContext *context,
{
GOptionGroup *g = list->data;
- /* First, we check the --help-<groupname> options */
- len = _g_utf8_strwidth ("--help-") + _g_utf8_strwidth (g->name);
- max_length = MAX (max_length, len);
+ if (context->help_enabled)
+ {
+ /* First, we check the --help-<groupname> options */
+ len = _g_utf8_strwidth ("--help-") + _g_utf8_strwidth (g->name);
+ max_length = MAX (max_length, len);
+ }
/* Then we go through the entries */
- len = calculate_max_length (g);
+ len = calculate_max_length (g, aliases);
max_length = MAX (max_length, len);
list = list->next;
@@ -842,7 +860,7 @@ g_option_context_get_help (GOptionContext *context,
/* Add a bit of padding */
max_length += 4;
- if (!group)
+ if (!group && context->help_enabled)
{
list = context->groups;
@@ -882,7 +900,7 @@ g_option_context_get_help (GOptionContext *context,
g_string_append (string, TRANSLATE (group, group->description));
g_string_append (string, "\n");
for (i = 0; i < group->n_entries; i++)
- print_entry (group, max_length, &group->entries[i], string);
+ print_entry (group, max_length, &group->entries[i], string, aliases);
g_string_append (string, "\n");
}
}
@@ -902,7 +920,7 @@ g_option_context_get_help (GOptionContext *context,
g_string_append (string, "\n");
for (i = 0; i < g->n_entries; i++)
if (!(g->entries[i].flags & G_OPTION_FLAG_IN_MAIN))
- print_entry (g, max_length, &g->entries[i], string);
+ print_entry (g, max_length, &g->entries[i], string, aliases);
g_string_append (string, "\n");
}
@@ -923,7 +941,7 @@ g_option_context_get_help (GOptionContext *context,
if (context->main_group)
for (i = 0; i < context->main_group->n_entries; i++)
print_entry (context->main_group, max_length,
- &context->main_group->entries[i], string);
+ &context->main_group->entries[i], string, aliases);
while (list != NULL)
{
@@ -932,7 +950,7 @@ g_option_context_get_help (GOptionContext *context,
/* Print main entries from other groups */
for (i = 0; i < g->n_entries; i++)
if (g->entries[i].flags & G_OPTION_FLAG_IN_MAIN)
- print_entry (g, max_length, &g->entries[i], string);
+ print_entry (g, max_length, &g->entries[i], string, aliases);
list = list->next;
}
@@ -946,6 +964,8 @@ g_option_context_get_help (GOptionContext *context,
g_string_append (string, "\n");
}
+ g_hash_table_destroy (aliases);
+
return g_string_free (string, FALSE);
}
diff --git a/glib/glib/goption.h b/glib/glib/goption.h
index 7d1f2a1..ee01377 100644
--- a/glib/glib/goption.h
+++ b/glib/glib/goption.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_OPTION_H__
+#define __G_OPTION_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_OPTION_H__
-#define __G_OPTION_H__
-
#include <glib/gerror.h>
#include <glib/gquark.h>
@@ -209,6 +209,7 @@ typedef enum
G_OPTION_ERROR_FAILED
} GOptionError;
+GLIB_AVAILABLE_IN_ALL
GQuark g_option_error_quark (void);
/**
@@ -307,61 +308,86 @@ struct _GOptionEntry
*/
#define G_OPTION_REMAINING ""
+GLIB_AVAILABLE_IN_ALL
GOptionContext *g_option_context_new (const gchar *parameter_string);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_summary (GOptionContext *context,
const gchar *summary);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_option_context_get_summary (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_description (GOptionContext *context,
const gchar *description);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_option_context_get_description (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_free (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_help_enabled (GOptionContext *context,
gboolean help_enabled);
+GLIB_AVAILABLE_IN_ALL
gboolean g_option_context_get_help_enabled (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_ignore_unknown_options (GOptionContext *context,
gboolean ignore_unknown);
+GLIB_AVAILABLE_IN_ALL
gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_add_main_entries (GOptionContext *context,
const GOptionEntry *entries,
const gchar *translation_domain);
+GLIB_AVAILABLE_IN_ALL
gboolean g_option_context_parse (GOptionContext *context,
gint *argc,
gchar ***argv,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_translate_func (GOptionContext *context,
GTranslateFunc func,
gpointer data,
GDestroyNotify destroy_notify);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_translation_domain (GOptionContext *context,
const gchar *domain);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_add_group (GOptionContext *context,
GOptionGroup *group);
+GLIB_AVAILABLE_IN_ALL
void g_option_context_set_main_group (GOptionContext *context,
GOptionGroup *group);
+GLIB_AVAILABLE_IN_ALL
GOptionGroup *g_option_context_get_main_group (GOptionContext *context);
+GLIB_AVAILABLE_IN_ALL
gchar *g_option_context_get_help (GOptionContext *context,
gboolean main_help,
GOptionGroup *group);
+GLIB_AVAILABLE_IN_ALL
GOptionGroup *g_option_group_new (const gchar *name,
const gchar *description,
const gchar *help_description,
gpointer user_data,
GDestroyNotify destroy);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_set_parse_hooks (GOptionGroup *group,
GOptionParseFunc pre_parse_func,
GOptionParseFunc post_parse_func);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_set_error_hook (GOptionGroup *group,
GOptionErrorFunc error_func);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_free (GOptionGroup *group);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_add_entries (GOptionGroup *group,
const GOptionEntry *entries);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_set_translate_func (GOptionGroup *group,
GTranslateFunc func,
gpointer data,
GDestroyNotify destroy_notify);
+GLIB_AVAILABLE_IN_ALL
void g_option_group_set_translation_domain (GOptionGroup *group,
const gchar *domain);
diff --git a/glib/glib/gpattern.c b/glib/glib/gpattern.c
index bc0cc71..c638086 100644
--- a/glib/glib/gpattern.c
+++ b/glib/glib/gpattern.c
@@ -168,7 +168,6 @@ g_pattern_ph_match (const gchar *match_pattern,
* <emphasis>not</emphasis> g_utf8_strlen())
* @string: the UTF-8 encoded string to match
* @string_reversed: (allow-none): the reverse of @string or %NULL
- * @Returns: %TRUE if @string matches @pspec
*
* Matches a string against a compiled pattern. Passing the correct
* length of the string given is mandatory. The reversed string can be
@@ -188,6 +187,8 @@ g_pattern_ph_match (const gchar *match_pattern,
* only if the string doesn't contain any multibyte characters. GLib
* offers the g_utf8_strreverse() function to reverse UTF-8 encoded
* strings.
+ *
+ * Returns: %TRUE if @string matches @pspec
**/
gboolean
g_pattern_match (GPatternSpec *pspec,
@@ -245,9 +246,10 @@ g_pattern_match (GPatternSpec *pspec,
/**
* g_pattern_spec_new:
* @pattern: a zero-terminated UTF-8 encoded string
- * @Returns: a newly-allocated #GPatternSpec
*
* Compiles a pattern to a #GPatternSpec.
+ *
+ * Returns: a newly-allocated #GPatternSpec
**/
GPatternSpec*
g_pattern_spec_new (const gchar *pattern)
@@ -376,10 +378,11 @@ g_pattern_spec_free (GPatternSpec *pspec)
* g_pattern_spec_equal:
* @pspec1: a #GPatternSpec
* @pspec2: another #GPatternSpec
- * @Returns: Whether the compiled patterns are equal
*
* Compares two compiled pattern specs and returns whether they will
* match the same set of strings.
+ *
+ * Returns: Whether the compiled patterns are equal
**/
gboolean
g_pattern_spec_equal (GPatternSpec *pspec1,
@@ -397,11 +400,12 @@ g_pattern_spec_equal (GPatternSpec *pspec1,
* g_pattern_match_string:
* @pspec: a #GPatternSpec
* @string: the UTF-8 encoded string to match
- * @Returns: %TRUE if @string matches @pspec
*
* Matches a string against a compiled pattern. If the string is to be
* matched against more than one pattern, consider using
* g_pattern_match() instead while supplying the reversed string.
+ *
+ * Returns: %TRUE if @string matches @pspec
**/
gboolean
g_pattern_match_string (GPatternSpec *pspec,
@@ -417,12 +421,13 @@ g_pattern_match_string (GPatternSpec *pspec,
* g_pattern_match_simple:
* @pattern: the UTF-8 encoded pattern
* @string: the UTF-8 encoded string to match
- * @Returns: %TRUE if @string matches @pspec
*
* Matches a string against a pattern given as a string. If this
* function is to be called in a loop, it's more efficient to compile
* the pattern once with g_pattern_spec_new() and call
* g_pattern_match_string() repeatedly.
+ *
+ * Returns: %TRUE if @string matches @pspec
**/
gboolean
g_pattern_match_simple (const gchar *pattern,
diff --git a/glib/glib/gpattern.h b/glib/glib/gpattern.h
index e692d90..956b003 100644
--- a/glib/glib/gpattern.h
+++ b/glib/glib/gpattern.h
@@ -17,13 +17,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_PATTERN_H__
+#define __G_PATTERN_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_PATTERN_H__
-#define __G_PATTERN_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -31,16 +31,22 @@ G_BEGIN_DECLS
typedef struct _GPatternSpec GPatternSpec;
+GLIB_AVAILABLE_IN_ALL
GPatternSpec* g_pattern_spec_new (const gchar *pattern);
+GLIB_AVAILABLE_IN_ALL
void g_pattern_spec_free (GPatternSpec *pspec);
+GLIB_AVAILABLE_IN_ALL
gboolean g_pattern_spec_equal (GPatternSpec *pspec1,
GPatternSpec *pspec2);
+GLIB_AVAILABLE_IN_ALL
gboolean g_pattern_match (GPatternSpec *pspec,
guint string_length,
const gchar *string,
const gchar *string_reversed);
+GLIB_AVAILABLE_IN_ALL
gboolean g_pattern_match_string (GPatternSpec *pspec,
const gchar *string);
+GLIB_AVAILABLE_IN_ALL
gboolean g_pattern_match_simple (const gchar *pattern,
const gchar *string);
diff --git a/glib/glib/gpoll.h b/glib/glib/gpoll.h
index f28b758..3ba8420 100644
--- a/glib/glib/gpoll.h
+++ b/glib/glib/gpoll.h
@@ -17,13 +17,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_POLL_H__
+#define __G_POLL_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (__G_MAIN_H__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_POLL_H__
-#define __G_POLL_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -111,6 +111,7 @@ struct _GPollFD
#define G_POLLFD_FORMAT "%d"
#endif
+GLIB_AVAILABLE_IN_ALL
gint g_poll (GPollFD *fds,
guint nfds,
gint timeout);
diff --git a/glib/glib/gprimes.h b/glib/glib/gprimes.h
index 19f5702..536ace4 100644
--- a/glib/glib/gprimes.h
+++ b/glib/glib/gprimes.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_PRIMES_H__
+#define __G_PRIMES_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_PRIMES_H__
-#define __G_PRIMES_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -44,6 +44,7 @@ G_BEGIN_DECLS
* next largest prime, or the highest it knows about which is about
* MAXINT/4.
*/
+GLIB_AVAILABLE_IN_ALL
guint g_spaced_primes_closest (guint num) G_GNUC_CONST;
G_END_DECLS
diff --git a/glib/glib/gprintf.h b/glib/glib/gprintf.h
index d96870f..0b01cc4 100644
--- a/glib/glib/gprintf.h
+++ b/glib/glib/gprintf.h
@@ -26,26 +26,33 @@
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
gint g_printf (gchar const *format,
...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
gint g_fprintf (FILE *file,
gchar const *format,
...) G_GNUC_PRINTF (2, 3);
+GLIB_AVAILABLE_IN_ALL
gint g_sprintf (gchar *string,
gchar const *format,
...) G_GNUC_PRINTF (2, 3);
+GLIB_AVAILABLE_IN_ALL
gint g_vprintf (gchar const *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(1, 0);
+GLIB_AVAILABLE_IN_ALL
gint g_vfprintf (FILE *file,
gchar const *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
gint g_vsprintf (gchar *string,
gchar const *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
gint g_vasprintf (gchar **string,
gchar const *format,
- va_list args);
+ va_list args) G_GNUC_PRINTF(2, 0);
G_END_DECLS
diff --git a/glib/glib/gqsort.h b/glib/glib/gqsort.h
index 05b4b66..c67d949 100644
--- a/glib/glib/gqsort.h
+++ b/glib/glib/gqsort.h
@@ -24,17 +24,18 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_QSORT_H__
+#define __G_QSORT_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_QSORT_H__
-#define __G_QSORT_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
+GLIB_AVAILABLE_IN_ALL
void g_qsort_with_data (gconstpointer pbase,
gint total_elems,
gsize size,
diff --git a/glib/glib/gquark.c b/glib/glib/gquark.c
new file mode 100644
index 0000000..9762dd6
--- /dev/null
+++ b/glib/glib/gquark.c
@@ -0,0 +1,361 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright (C) 1998 Tim Janik
+ *
+ * gquark.c: Functions for dealing with quarks and interned strings
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GLib Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+/*
+ * MT safe
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include "gslice.h"
+#include "ghash.h"
+#include "gquark.h"
+#include "gstrfuncs.h"
+#include "gthread.h"
+#include "gtestutils.h"
+#include "glib_trace.h"
+
+#define QUARK_BLOCK_SIZE 2048
+#define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize))
+
+static inline GQuark quark_new (gchar *string);
+
+G_LOCK_DEFINE_STATIC (quark_global);
+static GHashTable *quark_ht = NULL;
+static gchar **quarks = NULL;
+static gint quark_seq_id = 0;
+static gchar *quark_block = NULL;
+static gint quark_block_offset = 0;
+
+/**
+ * SECTION:quarks
+ * @title: Quarks
+ * @short_description: a 2-way association between a string and a
+ * unique integer identifier
+ *
+ * Quarks are associations between strings and integer identifiers.
+ * Given either the string or the #GQuark identifier it is possible to
+ * retrieve the other.
+ *
+ * Quarks are used for both <link
+ * linkend="glib-Datasets">Datasets</link> and <link
+ * linkend="glib-Keyed-Data-Lists">Keyed Data Lists</link>.
+ *
+ * To create a new quark from a string, use g_quark_from_string() or
+ * g_quark_from_static_string().
+ *
+ * To find the string corresponding to a given #GQuark, use
+ * g_quark_to_string().
+ *
+ * To find the #GQuark corresponding to a given string, use
+ * g_quark_try_string().
+ *
+ * Another use for the string pool maintained for the quark functions
+ * is string interning, using g_intern_string() or
+ * g_intern_static_string(). An interned string is a canonical
+ * representation for a string. One important advantage of interned
+ * strings is that they can be compared for equality by a simple
+ * pointer comparison, rather than using strcmp().
+ **/
+
+/**
+ * GQuark:
+ *
+ * A GQuark is a non-zero integer which uniquely identifies a
+ * particular string. A GQuark value of zero is associated to %NULL.
+ **/
+
+/**
+ * G_DEFINE_QUARK:
+ * @QN: the name to return a #GQuark for
+ * @q_n: prefix for the function name
+ *
+ * A convenience macro which defines a function returning the
+ * #GQuark for the name @QN. The function will be named
+ * @q_n<!-- -->_quark().
+ * Note that the quark name will be stringified automatically in the
+ * macro, so you shouldn't use double quotes.
+ *
+ * Since: 2.34
+ */
+
+/**
+ * g_quark_try_string:
+ * @string: (allow-none): a string.
+ * @Returns: the #GQuark associated with the string, or 0 if @string is
+ * %NULL or there is no #GQuark associated with it.
+ *
+ * Gets the #GQuark associated with the given string, or 0 if string is
+ * %NULL or it has no associated #GQuark.
+ *
+ * If you want the GQuark to be created if it doesn't already exist,
+ * use g_quark_from_string() or g_quark_from_static_string().
+ **/
+GQuark
+g_quark_try_string (const gchar *string)
+{
+ GQuark quark = 0;
+
+ if (string == NULL)
+ return 0;
+
+ G_LOCK (quark_global);
+ if (quark_ht)
+ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
+ G_UNLOCK (quark_global);
+
+ return quark;
+}
+
+/* HOLDS: quark_global_lock */
+static char *
+quark_strdup (const gchar *string)
+{
+ gchar *copy;
+ gsize len;
+
+ len = strlen (string) + 1;
+
+ /* For strings longer than half the block size, fall back
+ to strdup so that we fill our blocks at least 50%. */
+ if (len > QUARK_STRING_BLOCK_SIZE / 2)
+ return g_strdup (string);
+
+ if (quark_block == NULL ||
+ QUARK_STRING_BLOCK_SIZE - quark_block_offset < len)
+ {
+ quark_block = g_malloc (QUARK_STRING_BLOCK_SIZE);
+ quark_block_offset = 0;
+ }
+
+ copy = quark_block + quark_block_offset;
+ memcpy (copy, string, len);
+ quark_block_offset += len;
+
+ return copy;
+}
+
+/* HOLDS: quark_global_lock */
+static inline GQuark
+quark_from_string (const gchar *string,
+ gboolean duplicate)
+{
+ GQuark quark = 0;
+
+ if (quark_ht)
+ quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string));
+
+ if (!quark)
+ {
+ quark = quark_new (duplicate ? quark_strdup (string) : (gchar *)string);
+ TRACE(GLIB_QUARK_NEW(string, quark));
+ }
+
+ return quark;
+}
+
+/**
+ * g_quark_from_string:
+ * @string: (allow-none): a string.
+ *
+ * Gets the #GQuark identifying the given string. If the string does
+ * not currently have an associated #GQuark, a new #GQuark is created,
+ * using a copy of the string.
+ *
+ * Returns: the #GQuark identifying the string, or 0 if @string is
+ * %NULL.
+ */
+GQuark
+g_quark_from_string (const gchar *string)
+{
+ GQuark quark;
+
+ if (!string)
+ return 0;
+
+ G_LOCK (quark_global);
+ quark = quark_from_string (string, TRUE);
+ G_UNLOCK (quark_global);
+
+ return quark;
+}
+
+/**
+ * g_quark_from_static_string:
+ * @string: (allow-none): a string.
+ *
+ * Gets the #GQuark identifying the given (static) string. If the
+ * string does not currently have an associated #GQuark, a new #GQuark
+ * is created, linked to the given string.
+ *
+ * Note that this function is identical to g_quark_from_string() except
+ * that if a new #GQuark is created the string itself is used rather
+ * than a copy. This saves memory, but can only be used if the string
+ * will <emphasis>always</emphasis> exist. It can be used with
+ * statically allocated strings in the main program, but not with
+ * statically allocated memory in dynamically loaded modules, if you
+ * expect to ever unload the module again (e.g. do not use this
+ * function in GTK+ theme engines).
+ *
+ * Returns: the #GQuark identifying the string, or 0 if @string is
+ * %NULL.
+ */
+GQuark
+g_quark_from_static_string (const gchar *string)
+{
+ GQuark quark;
+
+ if (!string)
+ return 0;
+
+ G_LOCK (quark_global);
+ quark = quark_from_string (string, FALSE);
+ G_UNLOCK (quark_global);
+
+ return quark;
+}
+
+/**
+ * g_quark_to_string:
+ * @quark: a #GQuark.
+ *
+ * Gets the string associated with the given #GQuark.
+ *
+ * Returns: the string associated with the #GQuark
+ */
+const gchar *
+g_quark_to_string (GQuark quark)
+{
+ gchar* result = NULL;
+ gchar **strings;
+ gint seq_id;
+
+ seq_id = g_atomic_int_get (&quark_seq_id);
+ strings = g_atomic_pointer_get (&quarks);
+
+ if (quark < seq_id)
+ result = strings[quark];
+
+ return result;
+}
+
+/* HOLDS: g_quark_global_lock */
+static inline GQuark
+quark_new (gchar *string)
+{
+ GQuark quark;
+ gchar **quarks_new;
+
+ if (quark_seq_id % QUARK_BLOCK_SIZE == 0)
+ {
+ quarks_new = g_new (gchar*, quark_seq_id + QUARK_BLOCK_SIZE);
+ if (quark_seq_id != 0)
+ memcpy (quarks_new, quarks, sizeof (char *) * quark_seq_id);
+ memset (quarks_new + quark_seq_id, 0, sizeof (char *) * QUARK_BLOCK_SIZE);
+ /* This leaks the old quarks array. Its unfortunate, but it allows
+ * us to do lockless lookup of the arrays, and there shouldn't be that
+ * many quarks in an app
+ */
+ g_atomic_pointer_set (&quarks, quarks_new);
+ }
+ if (!quark_ht)
+ {
+ g_assert (quark_seq_id == 0);
+ quark_ht = g_hash_table_new (g_str_hash, g_str_equal);
+ quarks[quark_seq_id] = NULL;
+ g_atomic_int_inc (&quark_seq_id);
+ }
+
+ quark = quark_seq_id;
+ g_atomic_pointer_set (&quarks[quark], string);
+ g_hash_table_insert (quark_ht, string, GUINT_TO_POINTER (quark));
+ g_atomic_int_inc (&quark_seq_id);
+
+ return quark;
+}
+
+/**
+ * g_intern_string:
+ * @string: (allow-none): a string
+ *
+ * Returns a canonical representation for @string. Interned strings
+ * can be compared for equality by comparing the pointers, instead of
+ * using strcmp().
+ *
+ * Returns: a canonical representation for the string
+ *
+ * Since: 2.10
+ */
+const gchar *
+g_intern_string (const gchar *string)
+{
+ const gchar *result;
+ GQuark quark;
+
+ if (!string)
+ return NULL;
+
+ G_LOCK (quark_global);
+ quark = quark_from_string (string, TRUE);
+ result = quarks[quark];
+ G_UNLOCK (quark_global);
+
+ return result;
+}
+
+/**
+ * g_intern_static_string:
+ * @string: (allow-none): a static string
+ *
+ * Returns a canonical representation for @string. Interned strings
+ * can be compared for equality by comparing the pointers, instead of
+ * using strcmp(). g_intern_static_string() does not copy the string,
+ * therefore @string must not be freed or modified.
+ *
+ * Returns: a canonical representation for the string
+ *
+ * Since: 2.10
+ */
+const gchar *
+g_intern_static_string (const gchar *string)
+{
+ GQuark quark;
+ const gchar *result;
+
+ if (!string)
+ return NULL;
+
+ G_LOCK (quark_global);
+ quark = quark_from_string (string, FALSE);
+ result = quarks[quark];
+ G_UNLOCK (quark_global);
+
+ return result;
+}
diff --git a/glib/glib/gquark.h b/glib/glib/gquark.h
index 78b9546..617dbd2 100644
--- a/glib/glib/gquark.h
+++ b/glib/glib/gquark.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_QUARK_H__
+#define __G_QUARK_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_QUARK_H__
-#define __G_QUARK_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -39,12 +39,30 @@ typedef guint32 GQuark;
/* Quarks (string<->id association)
*/
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_try_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_from_static_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_from_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_quark_to_string (GQuark quark) G_GNUC_CONST;
+#define G_DEFINE_QUARK(QN, q_n) \
+GQuark \
+q_n##_quark (void) \
+{ \
+ static GQuark q; \
+ \
+ if G_UNLIKELY (q == 0) \
+ q = g_quark_from_static_string (#QN); \
+ \
+ return q; \
+}
+
+GLIB_AVAILABLE_IN_ALL
const gchar * g_intern_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_intern_static_string (const gchar *string);
G_END_DECLS
diff --git a/glib/glib/gqueue.h b/glib/glib/gqueue.h
index 1d13eef..23536a4 100644
--- a/glib/glib/gqueue.h
+++ b/glib/glib/gqueue.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_QUEUE_H__
+#define __G_QUEUE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_QUEUE_H__
-#define __G_QUEUE_H__
-
#include <glib/glist.h>
G_BEGIN_DECLS
@@ -71,79 +71,119 @@ struct _GQueue
/* Queues
*/
+GLIB_AVAILABLE_IN_ALL
GQueue* g_queue_new (void);
+GLIB_AVAILABLE_IN_ALL
void g_queue_free (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_queue_free_full (GQueue *queue,
GDestroyNotify free_func);
+GLIB_AVAILABLE_IN_ALL
void g_queue_init (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_queue_clear (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gboolean g_queue_is_empty (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
guint g_queue_get_length (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_queue_reverse (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GQueue * g_queue_copy (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
void g_queue_foreach (GQueue *queue,
GFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
GList * g_queue_find (GQueue *queue,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
GList * g_queue_find_custom (GQueue *queue,
gconstpointer data,
GCompareFunc func);
+GLIB_AVAILABLE_IN_ALL
void g_queue_sort (GQueue *queue,
GCompareDataFunc compare_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_head (GQueue *queue,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_tail (GQueue *queue,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_nth (GQueue *queue,
gpointer data,
gint n);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_pop_head (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_pop_tail (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_pop_nth (GQueue *queue,
guint n);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_peek_head (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_peek_tail (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
gpointer g_queue_peek_nth (GQueue *queue,
guint n);
+GLIB_AVAILABLE_IN_ALL
gint g_queue_index (GQueue *queue,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
gboolean g_queue_remove (GQueue *queue,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
guint g_queue_remove_all (GQueue *queue,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_insert_before (GQueue *queue,
GList *sibling,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_insert_after (GQueue *queue,
GList *sibling,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_insert_sorted (GQueue *queue,
gpointer data,
GCompareDataFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_head_link (GQueue *queue,
GList *link_);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_tail_link (GQueue *queue,
GList *link_);
+GLIB_AVAILABLE_IN_ALL
void g_queue_push_nth_link (GQueue *queue,
gint n,
GList *link_);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_pop_head_link (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_pop_tail_link (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_pop_nth_link (GQueue *queue,
guint n);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_peek_head_link (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_peek_tail_link (GQueue *queue);
+GLIB_AVAILABLE_IN_ALL
GList* g_queue_peek_nth_link (GQueue *queue,
guint n);
+GLIB_AVAILABLE_IN_ALL
gint g_queue_link_index (GQueue *queue,
GList *link_);
+GLIB_AVAILABLE_IN_ALL
void g_queue_unlink (GQueue *queue,
GList *link_);
+GLIB_AVAILABLE_IN_ALL
void g_queue_delete_link (GQueue *queue,
GList *link_);
diff --git a/glib/glib/grand.c b/glib/glib/grand.c
index 4d6a0a6..1485c2e 100644
--- a/glib/glib/grand.c
+++ b/glib/glib/grand.c
@@ -404,10 +404,11 @@ g_rand_set_seed_array (GRand* rand, const guint32 *seed, guint seed_length)
/**
* g_rand_boolean:
* @rand_: a #GRand.
- * @Returns: a random #gboolean.
*
* Returns a random #gboolean from @rand_. This corresponds to a
* unbiased coin toss.
+ *
+ * Returns: a random #gboolean.
**/
/**
* g_rand_int:
@@ -585,9 +586,10 @@ g_rand_double_range (GRand* rand, gdouble begin, gdouble end)
/**
* g_random_boolean:
- * @Returns: a random #gboolean.
*
* Returns a random #gboolean. This corresponds to a unbiased coin toss.
+ *
+ * Returns: a random #gboolean.
**/
/**
* g_random_int:
diff --git a/glib/glib/grand.h b/glib/glib/grand.h
index 182616b..b121e50 100644
--- a/glib/glib/grand.h
+++ b/glib/glib/grand.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_RAND_H__
+#define __G_RAND_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_RAND_H__
-#define __G_RAND_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -46,36 +46,52 @@ typedef struct _GRand GRand;
* double_range -> [begin..end)
*/
+GLIB_AVAILABLE_IN_ALL
GRand* g_rand_new_with_seed (guint32 seed);
+GLIB_AVAILABLE_IN_ALL
GRand* g_rand_new_with_seed_array (const guint32 *seed,
guint seed_length);
+GLIB_AVAILABLE_IN_ALL
GRand* g_rand_new (void);
+GLIB_AVAILABLE_IN_ALL
void g_rand_free (GRand *rand_);
+GLIB_AVAILABLE_IN_ALL
GRand* g_rand_copy (GRand *rand_);
+GLIB_AVAILABLE_IN_ALL
void g_rand_set_seed (GRand *rand_,
guint32 seed);
+GLIB_AVAILABLE_IN_ALL
void g_rand_set_seed_array (GRand *rand_,
const guint32 *seed,
guint seed_length);
#define g_rand_boolean(rand_) ((g_rand_int (rand_) & (1 << 15)) != 0)
+GLIB_AVAILABLE_IN_ALL
guint32 g_rand_int (GRand *rand_);
+GLIB_AVAILABLE_IN_ALL
gint32 g_rand_int_range (GRand *rand_,
gint32 begin,
gint32 end);
+GLIB_AVAILABLE_IN_ALL
gdouble g_rand_double (GRand *rand_);
+GLIB_AVAILABLE_IN_ALL
gdouble g_rand_double_range (GRand *rand_,
gdouble begin,
gdouble end);
+GLIB_AVAILABLE_IN_ALL
void g_random_set_seed (guint32 seed);
#define g_random_boolean() ((g_random_int () & (1 << 15)) != 0)
+GLIB_AVAILABLE_IN_ALL
guint32 g_random_int (void);
+GLIB_AVAILABLE_IN_ALL
gint32 g_random_int_range (gint32 begin,
gint32 end);
+GLIB_AVAILABLE_IN_ALL
gdouble g_random_double (void);
+GLIB_AVAILABLE_IN_ALL
gdouble g_random_double_range (gdouble begin,
gdouble end);
diff --git a/glib/glib/gscanner.c b/glib/glib/gscanner.c
index ce56142..9fc5e7c 100644
--- a/glib/glib/gscanner.c
+++ b/glib/glib/gscanner.c
@@ -1363,9 +1363,9 @@ g_scanner_unexp_token (GScanner *scanner,
if ((scanner->token >= ' ' && scanner->token <= '~') ||
strchr (scanner->config->cset_identifier_first, scanner->token) ||
strchr (scanner->config->cset_identifier_nth, scanner->token))
- _g_snprintf (token_string, token_string_len, "character `%c'", scanner->token);
+ _g_snprintf (token_string, token_string_len, "character '%c'", scanner->token);
else
- _g_snprintf (token_string, token_string_len, "character `\\%o'", scanner->token);
+ _g_snprintf (token_string, token_string_len, "character '\\%o'", scanner->token);
break;
}
else if (!scanner->config->symbol_2_token)
@@ -1382,7 +1382,7 @@ g_scanner_unexp_token (GScanner *scanner,
if (symbol_name)
_g_snprintf (token_string,
token_string_len,
- "%s%s `%s'",
+ "%s%s '%s'",
print_unexp ? "" : "invalid ",
symbol_spec,
symbol_name);
@@ -1435,7 +1435,7 @@ g_scanner_unexp_token (GScanner *scanner,
break;
case G_TOKEN_CHAR:
- _g_snprintf (token_string, token_string_len, "character `%c'", scanner->value.v_char);
+ _g_snprintf (token_string, token_string_len, "character '%c'", scanner->value.v_char);
break;
case G_TOKEN_IDENTIFIER:
@@ -1445,7 +1445,7 @@ g_scanner_unexp_token (GScanner *scanner,
print_unexp = FALSE;
_g_snprintf (token_string,
token_string_len,
- "%s%s `%s'",
+ "%s%s '%s'",
print_unexp ? "" : "invalid ",
identifier_spec,
scanner->token == G_TOKEN_IDENTIFIER ? scanner->value.v_string : "null");
@@ -1456,13 +1456,13 @@ g_scanner_unexp_token (GScanner *scanner,
case G_TOKEN_INT:
case G_TOKEN_HEX:
if (scanner->config->store_int64)
- _g_snprintf (token_string, token_string_len, "number `%" G_GUINT64_FORMAT "'", scanner->value.v_int64);
+ _g_snprintf (token_string, token_string_len, "number '%" G_GUINT64_FORMAT "'", scanner->value.v_int64);
else
- _g_snprintf (token_string, token_string_len, "number `%lu'", scanner->value.v_int);
+ _g_snprintf (token_string, token_string_len, "number '%lu'", scanner->value.v_int);
break;
case G_TOKEN_FLOAT:
- _g_snprintf (token_string, token_string_len, "number `%.3f'", scanner->value.v_float);
+ _g_snprintf (token_string, token_string_len, "number '%.3f'", scanner->value.v_float);
break;
case G_TOKEN_STRING:
@@ -1508,9 +1508,9 @@ g_scanner_unexp_token (GScanner *scanner,
if ((expected_token >= ' ' && expected_token <= '~') ||
strchr (scanner->config->cset_identifier_first, expected_token) ||
strchr (scanner->config->cset_identifier_nth, expected_token))
- _g_snprintf (expected_string, expected_string_len, "character `%c'", expected_token);
+ _g_snprintf (expected_string, expected_string_len, "character '%c'", expected_token);
else
- _g_snprintf (expected_string, expected_string_len, "character `\\%o'", expected_token);
+ _g_snprintf (expected_string, expected_string_len, "character '\\%o'", expected_token);
break;
}
else if (!scanner->config->symbol_2_token)
diff --git a/glib/glib/gscanner.h b/glib/glib/gscanner.h
index dd932f4..499d6e5 100644
--- a/glib/glib/gscanner.h
+++ b/glib/glib/gscanner.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_SCANNER_H__
+#define __G_SCANNER_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SCANNER_H__
-#define __G_SCANNER_H__
-
#include <glib/gdataset.h>
#include <glib/ghash.h>
@@ -152,8 +152,8 @@ struct _GScannerConfig
guint scan_binary : 1;
guint scan_octal : 1;
guint scan_float : 1;
- guint scan_hex : 1; /* `0x0ff0' */
- guint scan_hex_dollar : 1; /* `$0ff0' */
+ guint scan_hex : 1; /* '0x0ff0' */
+ guint scan_hex_dollar : 1; /* '$0ff0' */
guint scan_string_sq : 1; /* string: 'anything' */
guint scan_string_dq : 1; /* string: "\\-escapes!\n" */
guint numbers_2_int : 1; /* bin, octal, hex => int */
@@ -212,39 +212,58 @@ struct _GScanner
GScannerMsgFunc msg_handler;
};
+GLIB_AVAILABLE_IN_ALL
GScanner* g_scanner_new (const GScannerConfig *config_templ);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_destroy (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_input_file (GScanner *scanner,
gint input_fd);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_sync_file_offset (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_input_text (GScanner *scanner,
const gchar *text,
guint text_len);
+GLIB_AVAILABLE_IN_ALL
GTokenType g_scanner_get_next_token (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
GTokenType g_scanner_peek_next_token (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
GTokenType g_scanner_cur_token (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
GTokenValue g_scanner_cur_value (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
guint g_scanner_cur_line (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
guint g_scanner_cur_position (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
gboolean g_scanner_eof (GScanner *scanner);
+GLIB_AVAILABLE_IN_ALL
guint g_scanner_set_scope (GScanner *scanner,
guint scope_id);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_scope_add_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_scope_remove_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol);
+GLIB_AVAILABLE_IN_ALL
gpointer g_scanner_scope_lookup_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_scope_foreach_symbol (GScanner *scanner,
guint scope_id,
GHFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gpointer g_scanner_lookup_symbol (GScanner *scanner,
const gchar *symbol);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_unexp_token (GScanner *scanner,
GTokenType expected_token,
const gchar *identifier_spec,
@@ -252,9 +271,11 @@ void g_scanner_unexp_token (GScanner *scanner,
const gchar *symbol_name,
const gchar *message,
gint is_error);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_error (GScanner *scanner,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
+GLIB_AVAILABLE_IN_ALL
void g_scanner_warn (GScanner *scanner,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
diff --git a/glib/glib/gscripttable.h b/glib/glib/gscripttable.h
index 80f9c9c..087669c 100644
--- a/glib/glib/gscripttable.h
+++ b/glib/glib/gscripttable.h
@@ -1,7 +1,7 @@
/* gscripttable.h: Generated by gen-script-table.pl
*
- * Date: Fri Feb 10 17:20:57 2012
- * Source: Scripts-6.1.0.txt
+ * Date: Fri Aug 31 18:19:29 2012
+ * Source: Scripts-6.2.0.txt
*
* Do not edit.
*/
@@ -553,7 +553,7 @@ static const guchar g_script_easy_table[8192] = {
G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_ARABIC,
G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
- G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_INHERITED,
+ G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON,
G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON,
G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON,
@@ -2757,7 +2757,7 @@ static const struct {
{ 0x207f, 1, G_UNICODE_SCRIPT_LATIN },
{ 0x2080, 15, G_UNICODE_SCRIPT_COMMON },
{ 0x2090, 13, G_UNICODE_SCRIPT_LATIN },
- { 0x20a0, 26, G_UNICODE_SCRIPT_COMMON },
+ { 0x20a0, 27, G_UNICODE_SCRIPT_COMMON },
{ 0x20d0, 33, G_UNICODE_SCRIPT_INHERITED },
{ 0x2100, 38, G_UNICODE_SCRIPT_COMMON },
{ 0x2126, 1, G_UNICODE_SCRIPT_GREEK },
diff --git a/glib/glib/gsequence.c b/glib/glib/gsequence.c
index ee3da34..ec23aca 100644
--- a/glib/glib/gsequence.c
+++ b/glib/glib/gsequence.c
@@ -79,13 +79,14 @@
* @a: a #GSequenceIter
* @b: a #GSequenceIter
* @data: user data
- * @Returns: zero if the iterators are equal, a negative value if @a
- * comes before @b, and a positive value if @b comes before
- * @a.
*
* A #GSequenceIterCompareFunc is a function used to compare iterators.
* It must return zero if the iterators compare equal, a negative value
* if @a comes before @b, and a positive value if @b comes before @a.
+ *
+ * Returns: zero if the iterators are equal, a negative value if @a
+ * comes before @b, and a positive value if @b comes before
+ * @a.
**/
typedef struct _GSequenceNode GSequenceNode;
@@ -828,7 +829,8 @@ g_sequence_search (GSequence *seq,
* </para></note>
*
* Return value: an #GSequenceIter pointing to the position of the
- * first item found equal to @data according to @cmp_func and @cmp_data.
+ * first item found equal to @data according to @cmp_func and
+ * @cmp_data, or %NULL if no such item exists.
*
* Since: 2.28
**/
@@ -1122,7 +1124,7 @@ g_sequence_search_iter (GSequence *seq,
*
* Return value: an #GSequenceIter pointing to the position of
* the first item found equal to @data according to @cmp_func
- * and @cmp_data.
+ * and @cmp_data, or %NULL if no such item exists.
*
* Since: 2.28
**/
diff --git a/glib/glib/gsequence.h b/glib/glib/gsequence.h
index 3e5a03d..81d06a2 100644
--- a/glib/glib/gsequence.h
+++ b/glib/glib/gsequence.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_SEQUENCE_H__
+#define __G_SEQUENCE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SEQUENCE_H__
-#define __G_SEQUENCE_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -38,71 +38,97 @@ typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a,
/* GSequence */
+GLIB_AVAILABLE_IN_ALL
GSequence * g_sequence_new (GDestroyNotify data_destroy);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_free (GSequence *seq);
+GLIB_AVAILABLE_IN_ALL
gint g_sequence_get_length (GSequence *seq);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_foreach (GSequence *seq,
GFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_foreach_range (GSequenceIter *begin,
GSequenceIter *end,
GFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_sort (GSequence *seq,
GCompareDataFunc cmp_func,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_sort_iter (GSequence *seq,
GSequenceIterCompareFunc cmp_func,
gpointer cmp_data);
/* Getting iters */
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_get_begin_iter (GSequence *seq);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_get_end_iter (GSequence *seq);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq,
gint pos);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_append (GSequence *seq,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_prepend (GSequence *seq,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_insert_before (GSequenceIter *iter,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_move (GSequenceIter *src,
GSequenceIter *dest);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_swap (GSequenceIter *a,
GSequenceIter *b);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_insert_sorted (GSequence *seq,
gpointer data,
GCompareDataFunc cmp_func,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq,
gpointer data,
GSequenceIterCompareFunc iter_cmp,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_sort_changed (GSequenceIter *iter,
GCompareDataFunc cmp_func,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_sort_changed_iter (GSequenceIter *iter,
GSequenceIterCompareFunc iter_cmp,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_remove (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_remove_range (GSequenceIter *begin,
GSequenceIter *end);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_move_range (GSequenceIter *dest,
GSequenceIter *begin,
GSequenceIter *end);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_search (GSequence *seq,
gpointer data,
GCompareDataFunc cmp_func,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_search_iter (GSequence *seq,
gpointer data,
GSequenceIterCompareFunc iter_cmp,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_lookup (GSequence *seq,
gpointer data,
GCompareDataFunc cmp_func,
gpointer cmp_data);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_lookup_iter (GSequence *seq,
gpointer data,
GSequenceIterCompareFunc iter_cmp,
@@ -110,24 +136,35 @@ GSequenceIter *g_sequence_lookup_iter (GSequence *seq,
/* Dereferencing */
+GLIB_AVAILABLE_IN_ALL
gpointer g_sequence_get (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
void g_sequence_set (GSequenceIter *iter,
gpointer data);
/* Operations on GSequenceIter * */
+GLIB_AVAILABLE_IN_ALL
gboolean g_sequence_iter_is_begin (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
gboolean g_sequence_iter_is_end (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_iter_next (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
gint g_sequence_iter_get_position (GSequenceIter *iter);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_iter_move (GSequenceIter *iter,
gint delta);
+GLIB_AVAILABLE_IN_ALL
GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter);
/* Search */
+GLIB_AVAILABLE_IN_ALL
gint g_sequence_iter_compare (GSequenceIter *a,
GSequenceIter *b);
+GLIB_AVAILABLE_IN_ALL
GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin,
GSequenceIter *end);
diff --git a/glib/glib/gshell.c b/glib/glib/gshell.c
index 205519e..2891206 100644
--- a/glib/glib/gshell.c
+++ b/glib/glib/gshell.c
@@ -31,6 +31,7 @@
#include "gstring.h"
#include "gtestutils.h"
#include "glibintl.h"
+#include "gthread.h"
/**
* SECTION:shell
@@ -54,11 +55,7 @@
*
* Error codes returned by shell functions.
**/
-GQuark
-g_shell_error_quark (void)
-{
- return g_quark_from_static_string ("g-shell-error-quark");
-}
+G_DEFINE_QUARK (g-shell-error-quark, g_shell_error)
/* Single quotes preserve the literal string exactly. escape
* sequences are not allowed; not even \' - if you want a '
@@ -521,12 +518,30 @@ tokenize_command_line (const gchar *command_line,
g_string_append_c (current_token, *p);
/* FALL THRU */
-
- case '#':
case '\\':
current_quote = *p;
break;
+ case '#':
+ if (p == command_line)
+ { /* '#' was the first char */
+ current_quote = *p;
+ break;
+ }
+ switch(*(p-1))
+ {
+ case ' ':
+ case '\n':
+ case '\0':
+ current_quote = *p;
+ break;
+ default:
+ ensure_token (&current_token);
+ g_string_append_c (current_token, *p);
+ break;
+ }
+ break;
+
default:
/* Combines rules 4) and 6) - if we have a token, append to it,
* otherwise create a new token.
diff --git a/glib/glib/gshell.h b/glib/glib/gshell.h
index ddb4ec5..cff6c5c 100644
--- a/glib/glib/gshell.h
+++ b/glib/glib/gshell.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_SHELL_H__
+#define __G_SHELL_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SHELL_H__
-#define __G_SHELL_H__
-
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -40,11 +40,15 @@ typedef enum
G_SHELL_ERROR_FAILED
} GShellError;
+GLIB_AVAILABLE_IN_ALL
GQuark g_shell_error_quark (void);
+GLIB_AVAILABLE_IN_ALL
gchar* g_shell_quote (const gchar *unquoted_string);
+GLIB_AVAILABLE_IN_ALL
gchar* g_shell_unquote (const gchar *quoted_string,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_shell_parse_argv (const gchar *command_line,
gint *argcp,
gchar ***argvp,
diff --git a/glib/glib/gslice.c b/glib/glib/gslice.c
index b70724d..e380b9f 100644
--- a/glib/glib/gslice.c
+++ b/glib/glib/gslice.c
@@ -53,6 +53,8 @@
#include "gthread.h"
#include "glib_trace.h"
+#include "valgrind.h"
+
/**
* SECTION:memory_slices
* @title: Memory Slices
@@ -382,6 +384,17 @@ slice_config_init (SliceConfig *config)
if (flags & (1 << 1))
config->debug_blocks = TRUE;
}
+ else
+ {
+ /* G_SLICE was not specified, so check if valgrind is running and
+ * disable ourselves if it is.
+ *
+ * This way it's possible to force gslice to be enabled under
+ * valgrind just by setting G_SLICE to the empty string.
+ */
+ if (RUNNING_ON_VALGRIND)
+ config->always_malloc = TRUE;
+ }
}
static void
diff --git a/glib/glib/gslice.h b/glib/glib/gslice.h
index 4b4b9e5..e1b6686 100644
--- a/glib/glib/gslice.h
+++ b/glib/glib/gslice.h
@@ -17,25 +17,30 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_SLICE_H__
+#define __G_SLICE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SLICE_H__
-#define __G_SLICE_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
/* slices - fast allocation/release of small memory blocks
*/
+GLIB_AVAILABLE_IN_ALL
gpointer g_slice_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_slice_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
gpointer g_slice_copy (gsize block_size,
gconstpointer mem_block) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
+GLIB_AVAILABLE_IN_ALL
void g_slice_free1 (gsize block_size,
gpointer mem_block);
+GLIB_AVAILABLE_IN_ALL
void g_slice_free_chain_with_offset (gsize block_size,
gpointer mem_chain,
gsize next_offset);
@@ -77,10 +82,19 @@ typedef enum {
G_SLICE_CONFIG_CHUNK_SIZES,
G_SLICE_CONFIG_CONTENTION_COUNTER
} GSliceConfig;
+
+GLIB_DEPRECATED_IN_2_34
void g_slice_set_config (GSliceConfig ckey, gint64 value);
+GLIB_DEPRECATED_IN_2_34
gint64 g_slice_get_config (GSliceConfig ckey);
+GLIB_DEPRECATED_IN_2_34
gint64* g_slice_get_config_state (GSliceConfig ckey, gint64 address, guint *n_values);
+#ifdef G_ENABLE_DEBUG
+GLIB_AVAILABLE_IN_ALL
+void g_slice_debug_tree_statistics (void);
+#endif
+
G_END_DECLS
#endif /* __G_SLICE_H__ */
diff --git a/glib/glib/gslist.c b/glib/glib/gslist.c
index 89e0f2d..7cec285 100644
--- a/glib/glib/gslist.c
+++ b/glib/glib/gslist.c
@@ -98,9 +98,10 @@
/**
* g_slist_next:
* @slist: an element in a #GSList.
- * @Returns: the next element, or %NULL if there are no more elements.
*
* A convenience macro to get the next element in a #GSList.
+ *
+ * Returns: the next element, or %NULL if there are no more elements.
**/
#define _g_slist_alloc0() g_slice_new0 (GSList)
@@ -109,11 +110,12 @@
/**
* g_slist_alloc:
- * @Returns: a pointer to the newly-allocated #GSList element.
*
* Allocates space for one #GSList element. It is called by the
* g_slist_append(), g_slist_prepend(), g_slist_insert() and
* g_slist_insert_sorted() functions and so is rarely used on its own.
+ *
+ * Returns: a pointer to the newly-allocated #GSList element.
**/
GSList*
g_slist_alloc (void)
@@ -515,6 +517,12 @@ _g_slist_remove_link (GSList *list,
* link is set to %NULL, so that it becomes a
* self-contained list with one element.
*
+ * <note>Removing arbitrary nodes from a singly-linked list
+ * requires time that is proportional to the length of the list
+ * (ie. O(n)). If you find yourself using g_slist_remove_link()
+ * frequently, you should consider a different data structure, such
+ * as the doubly-linked #GList.</note>
+ *
* Returns: the new start of the #GSList, without the element
*/
GSList*
@@ -533,6 +541,12 @@ g_slist_remove_link (GSList *list,
* Compare this to g_slist_remove_link() which removes the node
* without freeing it.
*
+ * <note>Removing arbitrary nodes from a singly-linked list
+ * requires time that is proportional to the length of the list
+ * (ie. O(n)). If you find yourself using g_slist_delete_link()
+ * frequently, you should consider a different data structure, such
+ * as the doubly-linked #GList.</note>
+ *
* Returns: the new head of @list
*/
GSList*
@@ -554,7 +568,8 @@ g_slist_delete_link (GSList *list,
* <note><para>
* Note that this is a "shallow" copy. If the list elements
* consist of pointers to data, the pointers are copied but
- * the actual data isn't.
+ * the actual data isn't. See g_slist_copy_deep() if you need
+ * to copy the data as well.
* </para></note>
*
* Returns: a copy of @list
@@ -562,6 +577,41 @@ g_slist_delete_link (GSList *list,
GSList*
g_slist_copy (GSList *list)
{
+ return g_slist_copy_deep (list, NULL, NULL);
+}
+
+/**
+ * g_slist_copy_deep:
+ * @list: a #GSList
+ * @func: a copy function used to copy every element in the list
+ * @user_data: user data passed to the copy function @func, or #NULL
+ *
+ * Makes a full (deep) copy of a #GSList.
+ *
+ * In contrast with g_slist_copy(), this function uses @func to make a copy of
+ * each list element, in addition to copying the list container itself.
+ *
+ * @func, as a #GCopyFunc, takes two arguments, the data to be copied and a user
+ * pointer. It's safe to pass #NULL as user_data, if the copy function takes only
+ * one argument.
+ *
+ * For instance, if @list holds a list of GObjects, you can do:
+ * |[
+ * another_list = g_slist_copy_deep (list, (GCopyFunc) g_object_ref, NULL);
+ * ]|
+ *
+ * And, to entirely free the new list, you could do:
+ * |[
+ * g_slist_free_full (another_list, g_object_unref);
+ * ]|
+ *
+ * Returns: a full copy of @list, use #g_slist_free_full to free it
+ *
+ * Since: 2.34
+ */
+GSList*
+g_slist_copy_deep (GSList *list, GCopyFunc func, gpointer user_data)
+{
GSList *new_list = NULL;
if (list)
@@ -569,14 +619,20 @@ g_slist_copy (GSList *list)
GSList *last;
new_list = _g_slist_alloc ();
- new_list->data = list->data;
+ if (func)
+ new_list->data = func (list->data, user_data);
+ else
+ new_list->data = list->data;
last = new_list;
list = list->next;
while (list)
{
last->next = _g_slist_alloc ();
last = last->next;
- last->data = list->data;
+ if (func)
+ last->data = func (list->data, user_data);
+ else
+ last->data = list->data;
list = list->next;
}
last->next = NULL;
diff --git a/glib/glib/gslist.h b/glib/glib/gslist.h
index 5652145..55b91c6 100644
--- a/glib/glib/gslist.h
+++ b/glib/glib/gslist.h
@@ -24,14 +24,15 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_SLIST_H__
+#define __G_SLIST_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SLIST_H__
-#define __G_SLIST_H__
-
#include <glib/gmem.h>
+#include <glib/gnode.h>
G_BEGIN_DECLS
@@ -45,62 +46,95 @@ struct _GSList
/* Singly linked lists
*/
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_alloc (void) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
void g_slist_free (GSList *list);
+GLIB_AVAILABLE_IN_ALL
void g_slist_free_1 (GSList *list);
#define g_slist_free1 g_slist_free_1
+GLIB_AVAILABLE_IN_ALL
void g_slist_free_full (GSList *list,
GDestroyNotify free_func);
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_append (GSList *list,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_prepend (GSList *list,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_insert (GSList *list,
gpointer data,
gint position) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_insert_sorted (GSList *list,
gpointer data,
GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_insert_sorted_with_data (GSList *list,
gpointer data,
GCompareDataFunc func,
gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_insert_before (GSList *slist,
GSList *sibling,
gpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_concat (GSList *list1,
GSList *list2) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_remove (GSList *list,
gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_remove_all (GSList *list,
gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_remove_link (GSList *list,
GSList *link_) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_delete_link (GSList *list,
GSList *link_) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_reverse (GSList *list) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_copy (GSList *list) G_GNUC_WARN_UNUSED_RESULT;
+
+GLIB_AVAILABLE_IN_2_34
+GSList* g_slist_copy_deep (GSList *list,
+ GCopyFunc func,
+ gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_nth (GSList *list,
guint n);
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_find (GSList *list,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_find_custom (GSList *list,
gconstpointer data,
GCompareFunc func);
+GLIB_AVAILABLE_IN_ALL
gint g_slist_position (GSList *list,
GSList *llink);
+GLIB_AVAILABLE_IN_ALL
gint g_slist_index (GSList *list,
gconstpointer data);
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_last (GSList *list);
+GLIB_AVAILABLE_IN_ALL
guint g_slist_length (GSList *list);
+GLIB_AVAILABLE_IN_ALL
void g_slist_foreach (GSList *list,
GFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_sort (GSList *list,
GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
GSList* g_slist_sort_with_data (GSList *list,
GCompareDataFunc compare_func,
gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
+GLIB_AVAILABLE_IN_ALL
gpointer g_slist_nth_data (GSList *list,
guint n);
diff --git a/glib/glib/gspawn-win32.c b/glib/glib/gspawn-win32.c
index 44ae907..2acbde3 100644
--- a/glib/glib/gspawn-win32.c
+++ b/glib/glib/gspawn-win32.c
@@ -45,8 +45,10 @@
#include "config.h"
#include "glib.h"
+#include "glib-private.h"
#include "gprintfint.h"
#include "glibintl.h"
+#include "gthread.h"
#include <string.h>
#include <stdlib.h>
@@ -60,6 +62,7 @@
#include <direct.h>
#include <wchar.h>
+#ifndef GSPAWN_HELPER
#ifdef G_SPAWN_WIN32_DEBUG
static int debug = 1;
#define SETUP_DEBUG() /* empty */
@@ -78,6 +81,7 @@
} \
G_STMT_END
#endif
+#endif
enum
{
@@ -205,11 +209,8 @@ protect_argv (gchar **argv,
return argc;
}
-GQuark
-g_spawn_error_quark (void)
-{
- return g_quark_from_static_string ("g-exec-error-quark");
-}
+G_DEFINE_QUARK (g-exec-error-quark, g_spawn_error)
+G_DEFINE_QUARK (g-spawn-exit-error-quark, g_spawn_exit_error)
gboolean
g_spawn_async_utf8 (const gchar *working_directory,
@@ -547,7 +548,6 @@ do_spawn_with_pipes (gint *exit_status,
gchar *helper_process;
CONSOLE_CURSOR_INFO cursor_info;
wchar_t *whelper, **wargv, **wenvp;
- extern gchar *_glib_get_dll_directory (void);
gchar *glib_dll_directory;
if (child_setup && !warned_about_child_setup)
@@ -1221,6 +1221,25 @@ g_spawn_close_pid (GPid pid)
CloseHandle (pid);
}
+gboolean
+g_spawn_check_exit_status (gint exit_status,
+ GError **error)
+{
+ gboolean ret = FALSE;
+
+ if (exit_status != 0)
+ {
+ g_set_error (error, G_SPAWN_EXIT_ERROR, exit_status,
+ _("Child process exited with code %ld"),
+ (long) exit_status);
+ goto out;
+ }
+
+ ret = TRUE;
+ out:
+ return ret;
+}
+
#if !defined (_WIN64)
/* Binary compatibility versions that take system codepage pathnames,
diff --git a/glib/glib/gspawn.c b/glib/glib/gspawn.c
index e0a19ae..3db3c8d 100644
--- a/glib/glib/gspawn.c
+++ b/glib/glib/gspawn.c
@@ -42,6 +42,8 @@
#endif /* HAVE_SYS_RESOURCE_H */
#include "gspawn.h"
+#include "gthread.h"
+#include "glib/gstdio.h"
#include "genviron.h"
#include "gmem.h"
@@ -64,7 +66,8 @@
static gint g_execute (const gchar *file,
gchar **argv,
gchar **envp,
- gboolean search_path);
+ gboolean search_path,
+ gboolean search_path_from_envp);
static gboolean make_pipe (gint p[2],
GError **error);
@@ -74,6 +77,7 @@ static gboolean fork_exec_with_pipes (gboolean intermediate_child,
gchar **envp,
gboolean close_descriptors,
gboolean search_path,
+ gboolean search_path_from_envp,
gboolean stdout_to_null,
gboolean stderr_to_null,
gboolean child_inherits_stdin,
@@ -86,11 +90,8 @@ static gboolean fork_exec_with_pipes (gboolean intermediate_child,
gint *standard_error,
GError **error);
-GQuark
-g_spawn_error_quark (void)
-{
- return g_quark_from_static_string ("g-exec-error-quark");
-}
+G_DEFINE_QUARK (g-exec-error-quark, g_spawn_error)
+G_DEFINE_QUARK (g-spawn-exit-error-quark, g_spawn_exit_error)
/**
* g_spawn_async:
@@ -149,23 +150,16 @@ g_spawn_async (const gchar *working_directory,
* on a file descriptor twice, and another thread has
* re-opened it since the first close)
*/
-static gint
+static void
close_and_invalidate (gint *fd)
{
- gint ret;
-
if (*fd < 0)
- return -1;
+ return;
else
{
- again:
- ret = close (*fd);
- if (ret == -1 && errno == EINTR)
- goto again;
+ (void) g_close (*fd, NULL);
*fd = -1;
}
-
- return ret;
}
/* Some versions of OS X define READ_OK in public headers */
@@ -230,13 +224,15 @@ read_data (GString *str,
* if those parameters are non-%NULL. Note that you must set the
* %G_SPAWN_STDOUT_TO_DEV_NULL and %G_SPAWN_STDERR_TO_DEV_NULL flags when
* passing %NULL for @standard_output and @standard_error.
- * If @exit_status is non-%NULL, the exit status of the child is stored
- * there as it would be returned by waitpid(); standard UNIX macros such
- * as WIFEXITED() and WEXITSTATUS() must be used to evaluate the exit status.
- * Note that this function call waitpid() even if @exit_status is %NULL, and
- * does not accept the %G_SPAWN_DO_NOT_REAP_CHILD flag.
- * If an error occurs, no data is returned in @standard_output,
- * @standard_error, or @exit_status.
+ *
+ * If @exit_status is non-%NULL, the platform-specific exit status of
+ * the child is stored there; see the documentation of
+ * g_spawn_check_exit_status() for how to use and interpret this.
+ * Note that it is invalid to pass %G_SPAWN_DO_NOT_REAP_CHILD in
+ * @flags.
+ *
+ * If an error occurs, no data is returned in @standard_output,
+ * @standard_error, or @exit_status.
*
* This function calls g_spawn_async_with_pipes() internally; see that
* function for full details on the other parameters and details on
@@ -288,6 +284,7 @@ g_spawn_sync (const gchar *working_directory,
envp,
!(flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN),
(flags & G_SPAWN_SEARCH_PATH) != 0,
+ (flags & G_SPAWN_SEARCH_PATH_FROM_ENVP) != 0,
(flags & G_SPAWN_STDOUT_TO_DEV_NULL) != 0,
(flags & G_SPAWN_STDERR_TO_DEV_NULL) != 0,
(flags & G_SPAWN_CHILD_INHERITS_STDIN) != 0,
@@ -412,7 +409,7 @@ g_spawn_sync (const gchar *working_directory,
{
if (exit_status)
{
- g_warning ("In call to g_spawn_sync(), exit status of a child process was requested but SIGCHLD action was set to SIG_IGN and ECHILD was received by waitpid(), so exit status can't be returned. This is a bug in the program calling g_spawn_sync(); either don't request the exit status, or don't set the SIGCHLD action.");
+ g_warning ("In call to g_spawn_sync(), exit status of a child process was requested but ECHILD was received by waitpid(). Most likely the process is ignoring SIGCHLD, or some other thread is invoking waitpid() with a nonpositive first argument; either behavior can break applications that use g_spawn_sync either directly or indirectly.");
}
else
{
@@ -480,8 +477,15 @@ g_spawn_sync (const gchar *working_directory,
* should be a %NULL-terminated array of strings, to be passed as the
* argument vector for the child. The first string in @argv is of
* course the name of the program to execute. By default, the name of
- * the program must be a full path; the <envar>PATH</envar> shell variable
- * will only be searched if you pass the %G_SPAWN_SEARCH_PATH flag.
+ * the program must be a full path. If @flags contains the
+ * %G_SPAWN_SEARCH_PATH flag, the <envar>PATH</envar> environment variable
+ * is used to search for the executable. If @flags contains the
+ * %G_SPAWN_SEARCH_PATH_FROM_ENVP flag, the <envar>PATH</envar> variable from
+ * @envp is used to search for the executable.
+ * If both the %G_SPAWN_SEARCH_PATH and %G_SPAWN_SEARCH_PATH_FROM_ENVP
+ * flags are set, the <envar>PATH</envar> variable from @envp takes precedence
+ * over the environment variable.
+ *
* If the program name is not a full path and %G_SPAWN_SEARCH_PATH flag is not
* used, then the program will be run from the current directory (or
* @working_directory, if specified); this might be unexpected or even
@@ -547,7 +551,11 @@ g_spawn_sync (const gchar *working_directory,
* descriptors except stdin/stdout/stderr will be closed before
* calling exec() in the child. %G_SPAWN_SEARCH_PATH
* means that <literal>argv[0]</literal> need not be an absolute path, it
- * will be looked for in the user's <envar>PATH</envar>.
+ * will be looked for in the <envar>PATH</envar> environment variable.
+ * %G_SPAWN_SEARCH_PATH_FROM_ENVP means need not be an absolute path, it
+ * will be looked for in the <envar>PATH</envar> variable from @envp. If
+ * both %G_SPAWN_SEARCH_PATH and %G_SPAWN_SEARCH_PATH_FROM_ENVP are used,
+ * the value from @envp takes precedence over the environment.
* %G_SPAWN_STDOUT_TO_DEV_NULL means that the child's standard output will
* be discarded, instead of going to the same location as the parent's
* standard output. If you use this flag, @standard_output must be %NULL.
@@ -656,6 +664,7 @@ g_spawn_async_with_pipes (const gchar *working_directory,
envp,
!(flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN),
(flags & G_SPAWN_SEARCH_PATH) != 0,
+ (flags & G_SPAWN_SEARCH_PATH_FROM_ENVP) != 0,
(flags & G_SPAWN_STDOUT_TO_DEV_NULL) != 0,
(flags & G_SPAWN_STDERR_TO_DEV_NULL) != 0,
(flags & G_SPAWN_CHILD_INHERITS_STDIN) != 0,
@@ -686,9 +695,9 @@ g_spawn_async_with_pipes (const gchar *working_directory,
* appropriate. Possible errors are those from g_spawn_sync() and those
* from g_shell_parse_argv().
*
- * If @exit_status is non-%NULL, the exit status of the child is stored there as
- * it would be returned by waitpid(); standard UNIX macros such as WIFEXITED()
- * and WEXITSTATUS() must be used to evaluate the exit status.
+ * If @exit_status is non-%NULL, the platform-specific exit status of
+ * the child is stored there; see the documentation of
+ * g_spawn_check_exit_status() for how to use and interpret this.
*
* On Windows, please note the implications of g_shell_parse_argv()
* parsing @command_line. Parsing is done according to Unix shell rules, not
@@ -778,6 +787,96 @@ g_spawn_command_line_async (const gchar *command_line,
return retval;
}
+/**
+ * g_spawn_check_exit_status:
+ * @exit_status: An exit code as returned from g_spawn_sync()
+ * @error: a #GError
+ *
+ * Set @error if @exit_status indicates the child exited abnormally
+ * (e.g. with a nonzero exit code, or via a fatal signal).
+ *
+ * The g_spawn_sync() and g_child_watch_add() family of APIs return an
+ * exit status for subprocesses encoded in a platform-specific way.
+ * On Unix, this is guaranteed to be in the same format
+ * <literal>waitpid(2)</literal> returns, and on Windows it is
+ * guaranteed to be the result of
+ * <literal>GetExitCodeProcess()</literal>. Prior to the introduction
+ * of this function in GLib 2.34, interpreting @exit_status required
+ * use of platform-specific APIs, which is problematic for software
+ * using GLib as a cross-platform layer.
+ *
+ * Additionally, many programs simply want to determine whether or not
+ * the child exited successfully, and either propagate a #GError or
+ * print a message to standard error. In that common case, this
+ * function can be used. Note that the error message in @error will
+ * contain human-readable information about the exit status.
+ *
+ * The <literal>domain</literal> and <literal>code</literal> of @error
+ * have special semantics in the case where the process has an "exit
+ * code", as opposed to being killed by a signal. On Unix, this
+ * happens if <literal>WIFEXITED</literal> would be true of
+ * @exit_status. On Windows, it is always the case.
+ *
+ * The special semantics are that the actual exit code will be the
+ * code set in @error, and the domain will be %G_SPAWN_EXIT_ERROR.
+ * This allows you to differentiate between different exit codes.
+ *
+ * If the process was terminated by some means other than an exit
+ * status, the domain will be %G_SPAWN_ERROR, and the code will be
+ * %G_SPAWN_ERROR_FAILED.
+ *
+ * This function just offers convenience; you can of course also check
+ * the available platform via a macro such as %G_OS_UNIX, and use
+ * <literal>WIFEXITED()</literal> and <literal>WEXITSTATUS()</literal>
+ * on @exit_status directly. Do not attempt to scan or parse the
+ * error message string; it may be translated and/or change in future
+ * versions of GLib.
+ *
+ * Returns: %TRUE if child exited successfully, %FALSE otherwise (and @error will be set)
+ * Since: 2.34
+ */
+gboolean
+g_spawn_check_exit_status (gint exit_status,
+ GError **error)
+{
+ gboolean ret = FALSE;
+
+ if (WIFEXITED (exit_status))
+ {
+ if (WEXITSTATUS (exit_status) != 0)
+ {
+ g_set_error (error, G_SPAWN_EXIT_ERROR, WEXITSTATUS (exit_status),
+ _("Child process exited with code %ld"),
+ (long) WEXITSTATUS (exit_status));
+ goto out;
+ }
+ }
+ else if (WIFSIGNALED (exit_status))
+ {
+ g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+ _("Child process killed by signal %ld"),
+ (long) WTERMSIG (exit_status));
+ goto out;
+ }
+ else if (WIFSTOPPED (exit_status))
+ {
+ g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+ _("Child process stopped by signal %ld"),
+ (long) WSTOPSIG (exit_status));
+ goto out;
+ }
+ else
+ {
+ g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+ _("Child process exited abnormally"));
+ goto out;
+ }
+
+ ret = TRUE;
+ out:
+ return ret;
+}
+
static gint
exec_err_to_g_error (gint en)
{
@@ -1040,6 +1139,7 @@ do_exec (gint child_err_report_fd,
gchar **envp,
gboolean close_descriptors,
gboolean search_path,
+ gboolean search_path_from_envp,
gboolean stdout_to_null,
gboolean stderr_to_null,
gboolean child_inherits_stdin,
@@ -1133,7 +1233,7 @@ do_exec (gint child_err_report_fd,
g_execute (argv[0],
file_and_argv_zero ? argv + 1 : argv,
- envp, search_path);
+ envp, search_path, search_path_from_envp);
/* Exec failed */
write_err_and_exit (child_err_report_fd,
@@ -1196,6 +1296,7 @@ fork_exec_with_pipes (gboolean intermediate_child,
gchar **envp,
gboolean close_descriptors,
gboolean search_path,
+ gboolean search_path_from_envp,
gboolean stdout_to_null,
gboolean stderr_to_null,
gboolean child_inherits_stdin,
@@ -1294,6 +1395,7 @@ fork_exec_with_pipes (gboolean intermediate_child,
}
else if (grandchild_pid == 0)
{
+ close_and_invalidate (&child_pid_report_pipe[1]);
do_exec (child_err_report_pipe[1],
stdin_pipe[0],
stdout_pipe[1],
@@ -1303,6 +1405,7 @@ fork_exec_with_pipes (gboolean intermediate_child,
envp,
close_descriptors,
search_path,
+ search_path_from_envp,
stdout_to_null,
stderr_to_null,
child_inherits_stdin,
@@ -1332,6 +1435,7 @@ fork_exec_with_pipes (gboolean intermediate_child,
envp,
close_descriptors,
search_path,
+ search_path_from_envp,
stdout_to_null,
stderr_to_null,
child_inherits_stdin,
@@ -1533,8 +1637,7 @@ make_pipe (gint p[2],
static void
script_execute (const gchar *file,
gchar **argv,
- gchar **envp,
- gboolean search_path)
+ gchar **envp)
{
/* Count the arguments. */
int argc = 0;
@@ -1579,7 +1682,8 @@ static gint
g_execute (const gchar *file,
gchar **argv,
gchar **envp,
- gboolean search_path)
+ gboolean search_path,
+ gboolean search_path_from_envp)
{
if (*file == '\0')
{
@@ -1588,7 +1692,7 @@ g_execute (const gchar *file,
return -1;
}
- if (!search_path || strchr (file, '/') != NULL)
+ if (!(search_path || search_path_from_envp) || strchr (file, '/') != NULL)
{
/* Don't search when it contains a slash. */
if (envp)
@@ -1597,7 +1701,7 @@ g_execute (const gchar *file,
execv (file, argv);
if (errno == ENOEXEC)
- script_execute (file, argv, envp, FALSE);
+ script_execute (file, argv, envp);
}
else
{
@@ -1607,12 +1711,17 @@ g_execute (const gchar *file,
gsize len;
gsize pathlen;
- path = g_getenv ("PATH");
+ path = NULL;
+ if (search_path_from_envp)
+ path = g_environ_getenv (envp, "PATH");
+ if (search_path && path == NULL)
+ path = g_getenv ("PATH");
+
if (path == NULL)
{
- /* There is no `PATH' in the environment. The default
+ /* There is no 'PATH' in the environment. The default
* search path in libc is the current directory followed by
- * the path `confstr' returns for `_CS_PATH'.
+ * the path 'confstr' returns for '_CS_PATH'.
*/
/* In GLib we put . last, for security, and don't use the
@@ -1643,7 +1752,7 @@ g_execute (const gchar *file,
if (p == path)
/* Two adjacent colons, or a colon at the beginning or the end
- * of `PATH' means to search the current directory.
+ * of 'PATH' means to search the current directory.
*/
startp = name + 1;
else
@@ -1656,12 +1765,12 @@ g_execute (const gchar *file,
execv (startp, argv);
if (errno == ENOEXEC)
- script_execute (startp, argv, envp, search_path);
+ script_execute (startp, argv, envp);
switch (errno)
{
case EACCES:
- /* Record the we got a `Permission denied' error. If we end
+ /* Record the we got a 'Permission denied' error. If we end
* up finding no executable we can use, we want to diagnose
* that we did find one but were denied access.
*/
diff --git a/glib/glib/gspawn.h b/glib/glib/gspawn.h
index bdac189..5b5853a 100644
--- a/glib/glib/gspawn.h
+++ b/glib/glib/gspawn.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_SPAWN_H__
+#define __G_SPAWN_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_SPAWN_H__
-#define __G_SPAWN_H__
-
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -97,6 +97,14 @@ typedef enum
} GSpawnError;
/**
+ * G_SPAWN_EXIT_ERROR:
+ *
+ * Error domain used by g_spawn_check_exit_status(). The code
+ * will be the program exit code.
+ */
+#define G_SPAWN_EXIT_ERROR g_spawn_exit_error_quark ()
+
+/**
* GSpawnChildSetupFunc:
* @user_data: user data to pass to the function.
*
@@ -136,6 +144,7 @@ typedef void (* GSpawnChildSetupFunc) (gpointer user_data);
/**
* GSpawnFlags:
+ * @G_SPAWN_DEFAULT: no flags, default behaviour
* @G_SPAWN_LEAVE_DESCRIPTORS_OPEN: the parent's open file descriptors will be
* inherited by the child; otherwise all descriptors except stdin/stdout/stderr
* will be closed before calling exec() in the child.
@@ -155,11 +164,15 @@ typedef void (* GSpawnChildSetupFunc) (gpointer user_data);
* vector to pass to the file. Normally g_spawn_async_with_pipes() uses
* <literal>argv[0]</literal> as the file to execute, and passes all of
* <literal>argv</literal> to the child.
+ * @G_SPAWN_SEARCH_PATH_FROM_ENVP: if <literal>argv[0]</literal> is not an abolute path,
+ * it will be looked for in the <envar>PATH</envar> from the passed child
+ * environment. Since: 2.34
*
* Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes().
*/
typedef enum
{
+ G_SPAWN_DEFAULT = 0,
G_SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0,
G_SPAWN_DO_NOT_REAP_CHILD = 1 << 1,
/* look for argv[0] in the path i.e. use execvp() */
@@ -168,21 +181,16 @@ typedef enum
G_SPAWN_STDOUT_TO_DEV_NULL = 1 << 3,
G_SPAWN_STDERR_TO_DEV_NULL = 1 << 4,
G_SPAWN_CHILD_INHERITS_STDIN = 1 << 5,
- G_SPAWN_FILE_AND_ARGV_ZERO = 1 << 6
+ G_SPAWN_FILE_AND_ARGV_ZERO = 1 << 6,
+ G_SPAWN_SEARCH_PATH_FROM_ENVP = 1 << 7
} GSpawnFlags;
+GLIB_AVAILABLE_IN_ALL
GQuark g_spawn_error_quark (void);
+GLIB_AVAILABLE_IN_ALL
+GQuark g_spawn_exit_error_quark (void);
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_spawn_async g_spawn_async_utf8
-#define g_spawn_async_with_pipes g_spawn_async_with_pipes_utf8
-#define g_spawn_sync g_spawn_sync_utf8
-#define g_spawn_command_line_sync g_spawn_command_line_sync_utf8
-#define g_spawn_command_line_async g_spawn_command_line_async_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
gboolean g_spawn_async (const gchar *working_directory,
gchar **argv,
gchar **envp,
@@ -196,6 +204,7 @@ gboolean g_spawn_async (const gchar *working_directory,
/* Opens pipes for non-NULL standard_output, standard_input, standard_error,
* and returns the parent's end of the pipes.
*/
+GLIB_AVAILABLE_IN_ALL
gboolean g_spawn_async_with_pipes (const gchar *working_directory,
gchar **argv,
gchar **envp,
@@ -213,6 +222,7 @@ gboolean g_spawn_async_with_pipes (const gchar *working_directory,
* standard output or error of the command will be placed there.
*/
+GLIB_AVAILABLE_IN_ALL
gboolean g_spawn_sync (const gchar *working_directory,
gchar **argv,
gchar **envp,
@@ -224,16 +234,74 @@ gboolean g_spawn_sync (const gchar *working_directory,
gint *exit_status,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_spawn_command_line_sync (const gchar *command_line,
gchar **standard_output,
gchar **standard_error,
gint *exit_status,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gboolean g_spawn_command_line_async (const gchar *command_line,
GError **error);
+GLIB_AVAILABLE_IN_2_34
+gboolean g_spawn_check_exit_status (gint exit_status,
+ GError **error);
+
+GLIB_AVAILABLE_IN_ALL
void g_spawn_close_pid (GPid pid);
+#ifdef G_OS_WIN32
+#define g_spawn_async g_spawn_async_utf8
+#define g_spawn_async_with_pipes g_spawn_async_with_pipes_utf8
+#define g_spawn_sync g_spawn_sync_utf8
+#define g_spawn_command_line_sync g_spawn_command_line_sync_utf8
+#define g_spawn_command_line_async g_spawn_command_line_async_utf8
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_async_utf8 (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_async_with_pipes_utf8 (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ gint *standard_input,
+ gint *standard_output,
+ gint *standard_error,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_sync_utf8 (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_command_line_sync_utf8 (const gchar *command_line,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_command_line_async_utf8 (const gchar *command_line,
+ GError **error);
+#endif
+
G_END_DECLS
#endif /* __G_SPAWN_H__ */
diff --git a/glib/glib/gstdio.c b/glib/glib/gstdio.c
index 6d763e1..cca4ff5 100644
--- a/glib/glib/gstdio.c
+++ b/glib/glib/gstdio.c
@@ -40,6 +40,7 @@
#include <sys/utime.h>
#else
#include <utime.h>
+#include <errno.h>
#endif
#include "gstdio.h"
@@ -209,7 +210,11 @@ g_open (const gchar *filename,
errno = save_errno;
return retval;
#else
- return open (filename, flags, mode);
+ int fd;
+ do
+ fd = open (filename, flags, mode);
+ while (G_UNLIKELY (fd == -1 && errno == EINTR));
+ return fd;
#endif
}
@@ -830,3 +835,48 @@ g_utime (const gchar *filename,
return utime (filename, utb);
#endif
}
+
+/**
+ * g_close:
+ * @fd: A file descriptor
+ * @error: a #GError
+ *
+ * This wraps the close() call; in case of error, %errno will be
+ * preserved, but the error will also be stored as a #GError in @error.
+ *
+ * Besides using #GError, there is another major reason to prefer this
+ * function over the call provided by the system; on Unix, it will
+ * attempt to correctly handle %EINTR, which has platform-specific
+ * semantics.
+ *
+ * Since: 2.36
+ */
+gboolean
+g_close (gint fd,
+ GError **error)
+{
+ int res;
+ res = close (fd);
+ /* Just ignore EINTR for now; a retry loop is the wrong thing to do
+ * on Linux at least. Anyone who wants to add a conditional check
+ * for e.g. HP-UX is welcome to do so later...
+ *
+ * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
+ * https://bugzilla.gnome.org/show_bug.cgi?id=682819
+ * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
+ * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
+ */
+ if (G_UNLIKELY (res == -1 && errno == EINTR))
+ return TRUE;
+ else if (res == -1)
+ {
+ int errsv = errno;
+ g_set_error_literal (error, G_FILE_ERROR,
+ g_file_error_from_errno (errsv),
+ g_strerror (errsv));
+ errno = errsv;
+ return FALSE;
+ }
+ return TRUE;
+}
+
diff --git a/glib/glib/gstdio.h b/glib/glib/gstdio.h
index 08aea7d..90ee74e 100644
--- a/glib/glib/gstdio.h
+++ b/glib/glib/gstdio.h
@@ -74,13 +74,17 @@ typedef struct stat GStatBuf;
#define g_utime utime
#endif
+GLIB_AVAILABLE_IN_ALL
int g_access (const gchar *filename,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_chdir (const gchar *path);
+GLIB_AVAILABLE_IN_ALL
int g_unlink (const gchar *filename);
+GLIB_AVAILABLE_IN_ALL
int g_rmdir (const gchar *filename);
#else /* ! G_OS_UNIX */
@@ -95,42 +99,56 @@ int g_rmdir (const gchar *filename);
* API.
*/
+GLIB_AVAILABLE_IN_ALL
int g_access (const gchar *filename,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_chmod (const gchar *filename,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_open (const gchar *filename,
int flags,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_creat (const gchar *filename,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_rename (const gchar *oldfilename,
const gchar *newfilename);
+GLIB_AVAILABLE_IN_ALL
int g_mkdir (const gchar *filename,
int mode);
+GLIB_AVAILABLE_IN_ALL
int g_chdir (const gchar *path);
+GLIB_AVAILABLE_IN_ALL
int g_stat (const gchar *filename,
GStatBuf *buf);
+GLIB_AVAILABLE_IN_ALL
int g_lstat (const gchar *filename,
GStatBuf *buf);
+GLIB_AVAILABLE_IN_ALL
int g_unlink (const gchar *filename);
+GLIB_AVAILABLE_IN_ALL
int g_remove (const gchar *filename);
+GLIB_AVAILABLE_IN_ALL
int g_rmdir (const gchar *filename);
+GLIB_AVAILABLE_IN_ALL
FILE *g_fopen (const gchar *filename,
const gchar *mode);
+GLIB_AVAILABLE_IN_ALL
FILE *g_freopen (const gchar *filename,
const gchar *mode,
FILE *stream);
@@ -139,11 +157,16 @@ struct utimbuf; /* Don't need the real definition of struct utimbuf when just
* including this header.
*/
+GLIB_AVAILABLE_IN_ALL
int g_utime (const gchar *filename,
struct utimbuf *utb);
#endif /* G_OS_UNIX */
+GLIB_AVAILABLE_IN_2_36
+gboolean g_close (gint fd,
+ GError **error);
+
G_END_DECLS
#endif /* __G_STDIO_H__ */
diff --git a/glib/glib/gstrfuncs.c b/glib/glib/gstrfuncs.c
index 777d12e..4fcd91c 100644
--- a/glib/glib/gstrfuncs.c
+++ b/glib/glib/gstrfuncs.c
@@ -39,9 +39,9 @@
#include <errno.h>
#include <ctype.h> /* For tolower() */
-#ifdef HAVE_XLOCALE_H
-/* Needed on BSD/OS X for e.g. strtod_l */
-#include <xlocale.h>
+#ifdef HAVE_XLOCALE_H
+/* Needed on BSD/OS X for e.g. strtod_l */
+#include <xlocale.h>
#endif
#ifdef G_OS_WIN32
@@ -317,7 +317,15 @@ static const guint16 ascii_table_data[256] = {
const guint16 * const g_ascii_table = ascii_table_data;
-#ifdef HAVE_NEWLOCALE
+#if defined (HAVE_NEWLOCALE) && \
+ defined (HAVE_USELOCALE) && \
+ defined (HAVE_STRTOD_L) && \
+ defined (HAVE_STRTOULL_L) && \
+ defined (HAVE_STRTOLL_L)
+#define USE_XLOCALE 1
+#endif
+
+#ifdef USE_XLOCALE
static locale_t
get_C_locale (void)
{
@@ -683,7 +691,7 @@ gdouble
g_ascii_strtod (const gchar *nptr,
gchar **endptr)
{
-#ifdef HAVE_STRTOD_L
+#ifdef USE_XLOCALE
g_return_val_if_fail (nptr != NULL, 0);
@@ -695,7 +703,9 @@ g_ascii_strtod (const gchar *nptr,
gchar *fail_pos;
gdouble val;
+#ifndef __BIONIC__
struct lconv *locale_data;
+#endif
const char *decimal_point;
int decimal_point_len;
const char *p, *decimal_point_pos;
@@ -706,9 +716,14 @@ g_ascii_strtod (const gchar *nptr,
fail_pos = NULL;
+#ifndef __BIONIC__
locale_data = localeconv ();
decimal_point = locale_data->decimal_point;
decimal_point_len = strlen (decimal_point);
+#else
+ decimal_point = ".";
+ decimal_point_len = 1;
+#endif
g_assert (decimal_point_len != 0);
@@ -866,6 +881,9 @@ g_ascii_dtostr (gchar *buffer,
return g_ascii_formatd (buffer, buf_len, "%.17g", d);
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
/**
* g_ascii_formatd:
* @buffer: A buffer to place the resulting string in
@@ -890,16 +908,18 @@ g_ascii_formatd (gchar *buffer,
const gchar *format,
gdouble d)
{
-#ifdef HAVE_USELOCALE
+#ifdef USE_XLOCALE
locale_t old_locale;
old_locale = uselocale (get_C_locale ());
- _g_snprintf (buffer, buf_len, format, d);
+ _g_snprintf (buffer, buf_len, format, d);
uselocale (old_locale);
return buffer;
#else
+#ifndef __BIONIC__
struct lconv *locale_data;
+#endif
const char *decimal_point;
int decimal_point_len;
gchar *p;
@@ -930,9 +950,14 @@ g_ascii_formatd (gchar *buffer,
_g_snprintf (buffer, buf_len, format, d);
+#ifndef __BIONIC__
locale_data = localeconv ();
decimal_point = locale_data->decimal_point;
decimal_point_len = strlen (decimal_point);
+#else
+ decimal_point = ".";
+ decimal_point_len = 1;
+#endif
g_assert (decimal_point_len != 0);
@@ -966,6 +991,7 @@ g_ascii_formatd (gchar *buffer,
return buffer;
#endif
}
+#pragma GCC diagnostic pop
#define ISSPACE(c) ((c) == ' ' || (c) == '\f' || (c) == '\n' || \
(c) == '\r' || (c) == '\t' || (c) == '\v')
@@ -975,7 +1001,7 @@ g_ascii_formatd (gchar *buffer,
#define TOUPPER(c) (ISLOWER (c) ? (c) - 'a' + 'A' : (c))
#define TOLOWER(c) (ISUPPER (c) ? (c) - 'A' + 'a' : (c))
-#if !defined(HAVE_STRTOLL_L) || !defined(HAVE_STRTOULL_L)
+#ifndef USE_XLOCALE
static guint64
g_parse_long_long (const gchar *nptr,
@@ -1100,7 +1126,7 @@ g_parse_long_long (const gchar *nptr,
}
return 0;
}
-#endif
+#endif /* !USE_XLOCALE */
/**
* g_ascii_strtoull:
@@ -1136,7 +1162,7 @@ g_ascii_strtoull (const gchar *nptr,
gchar **endptr,
guint base)
{
-#ifdef HAVE_STRTOULL_L
+#ifdef USE_XLOCALE
return strtoull_l (nptr, endptr, base, get_C_locale ());
#else
gboolean negative;
@@ -1183,7 +1209,7 @@ g_ascii_strtoll (const gchar *nptr,
gchar **endptr,
guint base)
{
-#ifdef HAVE_STRTOLL_L
+#ifdef USE_XLOCALE
return strtoll_l (nptr, endptr, base, get_C_locale ());
#else
gboolean negative;
@@ -1851,9 +1877,10 @@ g_strcasecmp (const gchar *s1,
* it doesn't work on many encodings at all, including UTF-8, EUC-JP,
* etc.
*
- * There are therefore two replacement functions: g_ascii_strncasecmp(),
+ * There are therefore two replacement techniques: g_ascii_strncasecmp(),
* which only works on ASCII and is not locale-sensitive, and
- * g_utf8_casefold(), which is good for case-insensitive sorting of UTF-8.
+ * g_utf8_casefold() followed by strcmp() on the resulting strings, which is
+ * good for case-insensitive sorting of UTF-8.
**/
gint
g_strncasecmp (const gchar *s1,
diff --git a/glib/glib/gstrfuncs.h b/glib/glib/gstrfuncs.h
index 68c89fd..510623a 100644
--- a/glib/glib/gstrfuncs.h
+++ b/glib/glib/gstrfuncs.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_STRFUNCS_H__
+#define __G_STRFUNCS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_STRFUNCS_H__
-#define __G_STRFUNCS_H__
-
#include <stdarg.h>
#include <glib/gmacros.h>
#include <glib/gtypes.h>
@@ -87,54 +87,74 @@ GLIB_VAR const guint16 * const g_ascii_table;
#define g_ascii_isxdigit(c) \
((g_ascii_table[(guchar) (c)] & G_ASCII_XDIGIT) != 0)
+GLIB_AVAILABLE_IN_ALL
gchar g_ascii_tolower (gchar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gchar g_ascii_toupper (gchar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gint g_ascii_digit_value (gchar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gint g_ascii_xdigit_value (gchar c) G_GNUC_CONST;
/* String utility functions that modify a string argument or
* return a constant string that must not be freed.
*/
#define G_STR_DELIMITERS "_-|> <."
+GLIB_AVAILABLE_IN_ALL
gchar* g_strdelimit (gchar *string,
const gchar *delimiters,
gchar new_delimiter);
+GLIB_AVAILABLE_IN_ALL
gchar* g_strcanon (gchar *string,
const gchar *valid_chars,
gchar substitutor);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_strerror (gint errnum) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
const gchar * g_strsignal (gint signum) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gchar * g_strreverse (gchar *string);
+GLIB_AVAILABLE_IN_ALL
gsize g_strlcpy (gchar *dest,
const gchar *src,
gsize dest_size);
+GLIB_AVAILABLE_IN_ALL
gsize g_strlcat (gchar *dest,
const gchar *src,
gsize dest_size);
+GLIB_AVAILABLE_IN_ALL
gchar * g_strstr_len (const gchar *haystack,
gssize haystack_len,
const gchar *needle);
+GLIB_AVAILABLE_IN_ALL
gchar * g_strrstr (const gchar *haystack,
const gchar *needle);
+GLIB_AVAILABLE_IN_ALL
gchar * g_strrstr_len (const gchar *haystack,
gssize haystack_len,
const gchar *needle);
+GLIB_AVAILABLE_IN_ALL
gboolean g_str_has_suffix (const gchar *str,
const gchar *suffix);
+GLIB_AVAILABLE_IN_ALL
gboolean g_str_has_prefix (const gchar *str,
const gchar *prefix);
/* String to/from double conversion functions */
+GLIB_AVAILABLE_IN_ALL
gdouble g_strtod (const gchar *nptr,
gchar **endptr);
+GLIB_AVAILABLE_IN_ALL
gdouble g_ascii_strtod (const gchar *nptr,
gchar **endptr);
+GLIB_AVAILABLE_IN_ALL
guint64 g_ascii_strtoull (const gchar *nptr,
gchar **endptr,
guint base);
+GLIB_AVAILABLE_IN_ALL
gint64 g_ascii_strtoll (const gchar *nptr,
gchar **endptr,
guint base);
@@ -142,28 +162,36 @@ gint64 g_ascii_strtoll (const gchar *nptr,
* g_ascii_dtostr can produce.
* Then add 10 for good measure */
#define G_ASCII_DTOSTR_BUF_SIZE (29 + 10)
+GLIB_AVAILABLE_IN_ALL
gchar * g_ascii_dtostr (gchar *buffer,
gint buf_len,
gdouble d);
+GLIB_AVAILABLE_IN_ALL
gchar * g_ascii_formatd (gchar *buffer,
gint buf_len,
const gchar *format,
gdouble d);
/* removes leading spaces */
+GLIB_AVAILABLE_IN_ALL
gchar* g_strchug (gchar *string);
/* removes trailing spaces */
+GLIB_AVAILABLE_IN_ALL
gchar* g_strchomp (gchar *string);
/* removes leading & trailing spaces */
#define g_strstrip( string ) g_strchomp (g_strchug (string))
+GLIB_AVAILABLE_IN_ALL
gint g_ascii_strcasecmp (const gchar *s1,
const gchar *s2);
+GLIB_AVAILABLE_IN_ALL
gint g_ascii_strncasecmp (const gchar *s1,
const gchar *s2,
gsize n);
+GLIB_AVAILABLE_IN_ALL
gchar* g_ascii_strdown (const gchar *str,
gssize len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_ascii_strup (const gchar *str,
gssize len) G_GNUC_MALLOC;
@@ -184,17 +212,25 @@ gchar* g_strup (gchar *string);
/* String utility functions that return a newly allocated string which
* ought to be freed with g_free from the caller at some point.
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_strdup (const gchar *str) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strdup_printf (const gchar *format,
...) G_GNUC_PRINTF (1, 2) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strdup_vprintf (const gchar *format,
- va_list args) G_GNUC_MALLOC;
+ va_list args) G_GNUC_PRINTF(1, 0)
+ G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strndup (const gchar *str,
gsize n) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strnfill (gsize length,
gchar fill_char) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strconcat (const gchar *string1,
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strjoin (const gchar *separator,
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
@@ -202,6 +238,7 @@ gchar* g_strjoin (const gchar *separator,
* sequences. Inverse of g_strescape. The recognized sequences are \b
* \f \n \r \t \\ \" and the octal format.
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_strcompress (const gchar *source) G_GNUC_MALLOC;
/* Copy a string escaping nonprintable characters like in C strings.
@@ -212,9 +249,11 @@ gchar* g_strcompress (const gchar *source) G_GNUC_MALLOC;
* Luckily this function wasn't used much, using NULL as second parameter
* provides mostly identical semantics.
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_strescape (const gchar *source,
const gchar *exceptions) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gpointer g_memdup (gconstpointer mem,
guint byte_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2);
@@ -227,18 +266,25 @@ gpointer g_memdup (gconstpointer mem,
* g_strdupv() copies a NULL-terminated array of strings
* g_strv_length() returns the length of a NULL-terminated array of strings
*/
+GLIB_AVAILABLE_IN_ALL
gchar** g_strsplit (const gchar *string,
const gchar *delimiter,
gint max_tokens) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar ** g_strsplit_set (const gchar *string,
const gchar *delimiters,
gint max_tokens) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_strjoinv (const gchar *separator,
gchar **str_array) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
void g_strfreev (gchar **str_array);
+GLIB_AVAILABLE_IN_ALL
gchar** g_strdupv (gchar **str_array) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
guint g_strv_length (gchar **str_array);
+GLIB_AVAILABLE_IN_ALL
gchar* g_stpcpy (gchar *dest,
const char *src);
diff --git a/glib/glib/gstring.c b/glib/glib/gstring.c
index 9fac86c..2f89551 100644
--- a/glib/glib/gstring.c
+++ b/glib/glib/gstring.c
@@ -50,12 +50,17 @@
* @short_description: text buffers which grow automatically
* as text is added
*
- * A #GString is an object that handles the memory management
- * of a C string for you. You can think of it as similar to a
- * Java StringBuffer. In addition to the string itself, GString
- * stores the length of the string, so can be used for binary
- * data with embedded nul bytes. To access the C string managed
- * by the GString @string, simply use @string->str.
+ * A #GString is an object that handles the memory management of a C
+ * string for you. The emphasis of #GString is on text, typically
+ * UTF-8. Crucially, the "str" member of a #GString is guaranteed to
+ * have a trailing nul character, and it is therefore always safe to
+ * call functions such as strchr() or g_strdup() on it.
+ *
+ * However, a #GString can also hold arbitrary binary data, because it
+ * has a "len" member, which includes any possible embedded nul
+ * characters in the data. Conceptually then, #GString is like a
+ * #GByteArray with the addition of many convenience methods for text,
+ * and a guaranteed nul terminator.
*/
/**
@@ -227,6 +232,37 @@ g_string_free (GString *string,
}
/**
+ * g_string_free_to_bytes:
+ * @string: (transfer full): a #GString
+ *
+ * Transfers ownership of the contents of @string to a newly allocated
+ * #GBytes. The #GString structure itself is deallocated, and it is
+ * therefore invalid to use @string after invoking this function.
+ *
+ * Note that while #GString ensures that its buffer always has a
+ * trailing nul character (not reflected in its "len"), the returned
+ * #GBytes does not include this extra nul; i.e. it has length exactly
+ * equal to the "len" member.
+ *
+ * Returns: A newly allocated #GBytes containing contents of @string; @string itself is freed
+ * Since: 2.34
+ */
+GBytes*
+g_string_free_to_bytes (GString *string)
+{
+ gsize len;
+ gchar *buf;
+
+ g_return_val_if_fail (string != NULL, NULL);
+
+ len = string->len;
+
+ buf = g_string_free (string, FALSE);
+
+ return g_bytes_new_take (buf, len);
+}
+
+/**
* g_string_equal:
* @v: a #GString
* @v2: another #GString
@@ -234,7 +270,7 @@ g_string_free (GString *string,
* Compares two strings for equality, returning %TRUE if they are equal.
* For use with #GHashTable.
*
- * Returns: %TRUE if they strings are the same length and contain the
+ * Returns: %TRUE if the strings are the same length and contain the
* same bytes
*/
gboolean
diff --git a/glib/glib/gstring.h b/glib/glib/gstring.h
index 0797343..0cbba5d 100644
--- a/glib/glib/gstring.h
+++ b/glib/glib/gstring.h
@@ -24,15 +24,16 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_STRING_H__
+#define __G_STRING_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_STRING_H__
-#define __G_STRING_H__
-
#include <glib/gtypes.h>
#include <glib/gunicode.h>
+#include <glib/gbytes.h>
#include <glib/gutils.h> /* for G_CAN_INLINE */
G_BEGIN_DECLS
@@ -46,76 +47,111 @@ struct _GString
gsize allocated_len;
};
+GLIB_AVAILABLE_IN_ALL
GString* g_string_new (const gchar *init);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_new_len (const gchar *init,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_sized_new (gsize dfl_size);
+GLIB_AVAILABLE_IN_ALL
gchar* g_string_free (GString *string,
gboolean free_segment);
+GLIB_AVAILABLE_IN_2_34
+GBytes* g_string_free_to_bytes (GString *string);
+GLIB_AVAILABLE_IN_ALL
gboolean g_string_equal (const GString *v,
const GString *v2);
+GLIB_AVAILABLE_IN_ALL
guint g_string_hash (const GString *str);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_assign (GString *string,
const gchar *rval);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_truncate (GString *string,
gsize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_set_size (GString *string,
gsize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_insert_len (GString *string,
gssize pos,
const gchar *val,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_append (GString *string,
const gchar *val);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_append_len (GString *string,
const gchar *val,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_append_c (GString *string,
gchar c);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_append_unichar (GString *string,
gunichar wc);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_prepend (GString *string,
const gchar *val);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_prepend_c (GString *string,
gchar c);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_prepend_unichar (GString *string,
gunichar wc);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_prepend_len (GString *string,
const gchar *val,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_insert (GString *string,
gssize pos,
const gchar *val);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_insert_c (GString *string,
gssize pos,
gchar c);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_insert_unichar (GString *string,
gssize pos,
gunichar wc);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_overwrite (GString *string,
gsize pos,
const gchar *val);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_overwrite_len (GString *string,
gsize pos,
const gchar *val,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_erase (GString *string,
gssize pos,
gssize len);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_ascii_down (GString *string);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_ascii_up (GString *string);
+GLIB_AVAILABLE_IN_ALL
void g_string_vprintf (GString *string,
const gchar *format,
- va_list args);
+ va_list args)
+ G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
void g_string_printf (GString *string,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
+GLIB_AVAILABLE_IN_ALL
void g_string_append_vprintf (GString *string,
const gchar *format,
- va_list args);
+ va_list args)
+ G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
void g_string_append_printf (GString *string,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
+GLIB_AVAILABLE_IN_ALL
GString* g_string_append_uri_escaped (GString *string,
const gchar *unescaped,
const gchar *reserved_chars_allowed,
diff --git a/glib/glib/gstringchunk.h b/glib/glib/gstringchunk.h
index 5ab2e8a..79848e1 100644
--- a/glib/glib/gstringchunk.h
+++ b/glib/glib/gstringchunk.h
@@ -24,27 +24,33 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_STRINGCHUNK_H__
+#define __G_STRINGCHUNK_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_STRINGCHUNK_H__
-#define __G_STRINGCHUNK_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
typedef struct _GStringChunk GStringChunk;
+GLIB_AVAILABLE_IN_ALL
GStringChunk* g_string_chunk_new (gsize size);
+GLIB_AVAILABLE_IN_ALL
void g_string_chunk_free (GStringChunk *chunk);
+GLIB_AVAILABLE_IN_ALL
void g_string_chunk_clear (GStringChunk *chunk);
+GLIB_AVAILABLE_IN_ALL
gchar* g_string_chunk_insert (GStringChunk *chunk,
const gchar *string);
+GLIB_AVAILABLE_IN_ALL
gchar* g_string_chunk_insert_len (GStringChunk *chunk,
const gchar *string,
gssize len);
+GLIB_AVAILABLE_IN_ALL
gchar* g_string_chunk_insert_const (GStringChunk *chunk,
const gchar *string);
diff --git a/glib/glib/gtester-report b/glib/glib/gtester-report
index 0fcdd9a..0131714 100755
--- a/glib/glib/gtester-report
+++ b/glib/glib/gtester-report
@@ -377,7 +377,7 @@ class GTestCase(object):
"""A representation of a gtester test result as a pyunit TestCase."""
def __init__(self, case, binary):
- """Create a GTestCase for case `case` from binary program `binary`."""
+ """Create a GTestCase for case 'case' from binary program 'binary'."""
self._case = case
self._binary = binary
# the name of the case - e.g. /dbusmenu/glib/objects/menuitem/props_boolstr
diff --git a/glib/glib/gtestutils.c b/glib/glib/gtestutils.c
index ffdbea3..353a2db 100644
--- a/glib/glib/gtestutils.c
+++ b/glib/glib/gtestutils.c
@@ -21,6 +21,7 @@
#include "config.h"
#include "gtestutils.h"
+#include "gmessages-private.h"
#include "gfileutils.h"
#include <sys/types.h>
@@ -28,6 +29,7 @@
#include <sys/wait.h>
#include <sys/time.h>
#include <fcntl.h>
+#include <glib/gstdio.h>
#endif
#include <string.h>
#include <stdlib.h>
@@ -35,8 +37,12 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
#ifdef G_OS_WIN32
#include <io.h>
+#include <windows.h>
#endif
#include <errno.h>
#include <signal.h>
@@ -50,6 +56,9 @@
#include "gstrfuncs.h"
#include "gtimer.h"
#include "gslice.h"
+#include "gspawn.h"
+#include "glib-private.h"
+#include "gmessages-private.h"
/**
@@ -105,6 +114,16 @@
*/
/**
+ * g_test_initialized:
+ *
+ * Returns %TRUE if g_test_init() has been called.
+ *
+ * Returns: %TRUE if g_test_init() has been called.
+ *
+ * Since: 2.36
+ */
+
+/**
* g_test_quick:
*
* Returns %TRUE if tests are run in quick mode.
@@ -145,9 +164,8 @@
* g_test_undefined:
*
* Returns %TRUE if tests may provoke assertions and other formally-undefined
- * behaviour under g_test_trap_fork(), to verify that appropriate warnings
- * are given. It can be useful to turn this off if running tests under
- * valgrind.
+ * behaviour, to verify that appropriate warnings are given. It might, in some
+ * cases, be useful to turn this off if running tests under valgrind.
*
* Returns: %TRUE if tests may provoke programming errors
*/
@@ -192,18 +210,42 @@
* console during test runs. The actual output is still captured
* though to allow later tests with g_test_trap_assert_stderr().
* @G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the
- * forked child process is shared with stdin of its parent process.
+ * child process is shared with stdin of its parent process.
* It is redirected to <filename>/dev/null</filename> otherwise.
*
* Test traps are guards around forked tests.
* These flags determine what traps to set.
+ *
+ * Deprecated: #GTestTrapFlags is used only with g_test_trap_fork(),
+ * which is deprecated. g_test_trap_subprocess() uses
+ * #GTestTrapSubprocessFlags.
+ */
+
+/**
+ * GTestSubprocessFlags:
+ * @G_TEST_SUBPROCESS_INHERIT_STDIN: If this flag is given, the child
+ * process will inherit the parent's stdin. Otherwise, the child's
+ * stdin is redirected to <filename>/dev/null</filename>.
+ * @G_TEST_SUBPROCESS_INHERIT_STDOUT: If this flag is given, the child
+ * process will inherit the parent's stdout. Otherwise, the child's
+ * stdout will not be visible, but it will be captured to allow
+ * later tests with g_test_trap_assert_stdout().
+ * @G_TEST_SUBPROCESS_INHERIT_STDERR: If this flag is given, the child
+ * process will inherit the parent's stderr. Otherwise, the child's
+ * stderr will not be visible, but it will be captured to allow
+ * later tests with g_test_trap_assert_stderr().
+ *
+ * Flags to pass to g_test_trap_subprocess() to control input and output.
+ *
+ * Note that in contrast with g_test_trap_fork(), the default is to
+ * not show stdout and stderr.
*/
/**
* g_test_trap_assert_passed:
*
- * Assert that the last forked test passed.
- * See g_test_trap_fork().
+ * Assert that the last test subprocess passed.
+ * See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -211,13 +253,13 @@
/**
* g_test_trap_assert_failed:
*
- * Assert that the last forked test failed.
- * See g_test_trap_fork().
+ * Assert that the last test subprocess failed.
+ * See g_test_trap_subprocess().
*
* This is sometimes used to test situations that are formally considered to
* be undefined behaviour, like inputs that fail a g_return_if_fail()
* check. In these situations you should skip the entire test, including the
- * call to g_test_trap_fork(), unless g_test_undefined() returns %TRUE
+ * call to g_test_trap_subprocess(), unless g_test_undefined() returns %TRUE
* to indicate that undefined behaviour may be tested.
*
* Since: 2.16
@@ -228,8 +270,8 @@
* @soutpattern: a glob-style
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stdout output of the last forked test matches
- * @soutpattern. See g_test_trap_fork().
+ * Assert that the stdout output of the last test subprocess matches
+ * @soutpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -239,8 +281,8 @@
* @soutpattern: a glob-style
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stdout output of the last forked test
- * does not match @soutpattern. See g_test_trap_fork().
+ * Assert that the stdout output of the last test subprocess
+ * does not match @soutpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -250,14 +292,15 @@
* @serrpattern: a glob-style
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stderr output of the last forked test
- * matches @serrpattern. See g_test_trap_fork().
+ * Assert that the stderr output of the last test subprocess
+ * matches @serrpattern. See g_test_trap_subprocess().
*
- * This is sometimes used to test situations that are formally considered to
- * be undefined behaviour, like inputs that fail a g_return_if_fail()
- * check. In these situations you should skip the entire test, including the
- * call to g_test_trap_fork(), unless g_test_undefined() returns %TRUE
- * to indicate that undefined behaviour may be tested.
+ * This is sometimes used to test situations that are formally
+ * considered to be undefined behaviour, like code that hits a
+ * g_assert() or g_error(). In these situations you should skip the
+ * entire test, including the call to g_test_trap_subprocess(), unless
+ * g_test_undefined() returns %TRUE to indicate that undefined
+ * behaviour may be tested.
*
* Since: 2.16
*/
@@ -267,8 +310,8 @@
* @serrpattern: a glob-style
* <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stderr output of the last forked test
- * does not match @serrpattern. See g_test_trap_fork().
+ * Assert that the stderr output of the last test subprocess
+ * does not match @serrpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -306,18 +349,64 @@
*/
/**
+ * g_assert_true:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check that an expression is true.
+ *
+ * If the assertion fails (i.e. the expression is not true),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+/**
+ * g_assert_false:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check an expression is false.
+ *
+ * If the assertion fails (i.e. the expression is not false),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+/**
+ * g_assert_null:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check an expression is %NULL.
+ *
+ * If the assertion fails (i.e. the expression is not %NULL),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+/**
* g_assert_cmpstr:
* @s1: a string (may be %NULL)
* @cmp: The comparison operator to use.
* One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @s2: another string (may be %NULL)
*
- * Debugging macro to terminate the application with a warning
- * message if a string comparison fails. The strings are compared
- * using g_strcmp0().
+ * Debugging macro to compare two strings. If the comparison fails,
+ * an error message is logged and the application is either terminated
+ * or the testcase marked as failed.
+ * The strings are compared using g_strcmp0().
*
* The effect of <literal>g_assert_cmpstr (s1, op, s2)</literal> is
- * the same as <literal>g_assert (g_strcmp0 (s1, s2) op 0)</literal>.
+ * the same as <literal>g_assert_true (g_strcmp0 (s1, s2) op 0)</literal>.
* The advantage of this macro is that it can produce a message that
* includes the actual values of @s1 and @s2.
*
@@ -335,11 +424,10 @@
* One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another integer
*
- * Debugging macro to terminate the application with a warning
- * message if an integer comparison fails.
+ * Debugging macro to compare two integers.
*
* The effect of <literal>g_assert_cmpint (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -353,11 +441,10 @@
* One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another unsigned integer
*
- * Debugging macro to terminate the application with a warning
- * message if an unsigned integer comparison fails.
+ * Debugging macro to compare two unsigned integers.
*
* The effect of <literal>g_assert_cmpuint (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -371,8 +458,7 @@
* One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another unsigned integer
*
- * Debugging macro to terminate the application with a warning
- * message if an unsigned integer comparison fails.
+ * Debugging macro to compare to unsigned integers.
*
* This is a variant of g_assert_cmpuint() that displays the numbers
* in hexadecimal notation in the message.
@@ -387,11 +473,10 @@
* One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another floating point number
*
- * Debugging macro to terminate the application with a warning
- * message if a floating point number comparison fails.
+ * Debugging macro to compare two floating point numbers.
*
* The effect of <literal>g_assert_cmpfloat (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -402,11 +487,10 @@
* g_assert_no_error:
* @err: a #GError, possibly %NULL
*
- * Debugging macro to terminate the application with a warning
- * message if a method has returned a #GError.
+ * Debugging macro to check that a #GError is not set.
*
* The effect of <literal>g_assert_no_error (err)</literal> is
- * the same as <literal>g_assert (err == NULL)</literal>. The advantage
+ * the same as <literal>g_assert_true (err == NULL)</literal>. The advantage
* of this macro is that it can produce a message that includes
* the error message and code.
*
@@ -419,11 +503,11 @@
* @dom: the expected error domain (a #GQuark)
* @c: the expected error code
*
- * Debugging macro to terminate the application with a warning
- * message if a method has not returned the correct #GError.
+ * Debugging macro to check that a method has returned
+ * the correct #GError.
*
* The effect of <literal>g_assert_error (err, dom, c)</literal> is
- * the same as <literal>g_assert (err != NULL &amp;&amp; err->domain
+ * the same as <literal>g_assert_true (err != NULL &amp;&amp; err->domain
* == dom &amp;&amp; err->code == c)</literal>. The advantage of this
* macro is that it can produce a message that includes the incorrect
* error message and code.
@@ -453,8 +537,12 @@
* analysis systems like Apport and ABRT to fish out assertion messages from
* core dumps, instead of having to catch them on screen output.
*/
+GLIB_VAR char *__glib_assert_msg;
char *__glib_assert_msg = NULL;
+/* --- constants --- */
+#define G_TEST_STATUS_TIMED_OUT 1024
+
/* --- structures --- */
struct GTestCase
{
@@ -490,6 +578,13 @@ static void gtest_default_log_handler (const gchar *log_domain,
gpointer unused_data);
+typedef enum {
+ G_TEST_RUN_SUCCESS,
+ G_TEST_RUN_SKIPPED,
+ G_TEST_RUN_FAILURE,
+ G_TEST_RUN_INCOMPLETE
+} GTestResult;
+
/* --- variables --- */
static int test_log_fd = -1;
static gboolean test_mode_fatal = TRUE;
@@ -498,9 +593,11 @@ static gboolean test_run_list = FALSE;
static gchar *test_run_seedstr = NULL;
static GRand *test_run_rand = NULL;
static gchar *test_run_name = "";
+static GSList **test_filename_free_list;
static guint test_run_forks = 0;
static guint test_run_count = 0;
-static guint test_run_success = FALSE;
+static GTestResult test_run_success = G_TEST_RUN_FAILURE;
+static gchar *test_run_msg = NULL;
static guint test_skip_count = 0;
static GTimer *test_user_timer = NULL;
static double test_user_stamp = 0;
@@ -508,12 +605,21 @@ static GSList *test_paths = NULL;
static GSList *test_paths_skipped = NULL;
static GTestSuite *test_suite_root = NULL;
static int test_trap_last_status = 0;
-static int test_trap_last_pid = 0;
+static GPid test_trap_last_pid = 0;
+static char *test_trap_last_subprocess = NULL;
static char *test_trap_last_stdout = NULL;
static char *test_trap_last_stderr = NULL;
static char *test_uri_base = NULL;
static gboolean test_debug_log = FALSE;
+static gboolean test_tap_log = FALSE;
+static gboolean test_nonfatal_assertions = FALSE;
static DestroyEntry *test_destroy_queue = NULL;
+static char *test_argv0 = NULL;
+static char *test_argv0_dirname;
+static const char *test_disted_files_dir;
+static const char *test_built_files_dir;
+static char *test_initial_cwd = NULL;
+static gboolean test_in_subprocess = FALSE;
static GTestConfig mutable_test_config_vars = {
FALSE, /* test_initialized */
TRUE, /* test_quick */
@@ -540,6 +646,8 @@ g_test_log_type_name (GTestLogType log_type)
case G_TEST_LOG_MIN_RESULT: return "minperf";
case G_TEST_LOG_MAX_RESULT: return "maxperf";
case G_TEST_LOG_MESSAGE: return "message";
+ case G_TEST_LOG_START_SUITE: return "start suite";
+ case G_TEST_LOG_STOP_SUITE: return "stop suite";
}
return "???";
}
@@ -573,7 +681,12 @@ g_test_log_send (guint n_bytes,
{
g_printerr (":(");
for (ui = 0; ui < msg->n_nums; ui++)
- g_printerr ("%s%.16Lg", ui ? ";" : "", msg->nums[ui]);
+ {
+ if ((long double) (long) msg->nums[ui] == msg->nums[ui])
+ g_printerr ("%s%ld", ui ? ";" : "", (long) msg->nums[ui]);
+ else
+ g_printerr ("%s%.16g", ui ? ";" : "", (double) msg->nums[ui]);
+ }
g_printerr (")");
}
g_printerr (":LOG*}\n");
@@ -588,7 +701,7 @@ g_test_log (GTestLogType lbit,
guint n_args,
long double *largs)
{
- gboolean fail = lbit == G_TEST_LOG_STOP_CASE && largs[0] != 0;
+ gboolean fail;
GTestLogMsg msg;
gchar *astrings[3] = { NULL, NULL, NULL };
guint8 *dbuffer;
@@ -597,27 +710,67 @@ g_test_log (GTestLogType lbit,
switch (lbit)
{
case G_TEST_LOG_START_BINARY:
- if (g_test_verbose())
+ if (test_tap_log)
+ g_print ("# random seed: %s\n", string2);
+ else if (g_test_verbose())
g_print ("GTest: random seed: %s\n", string2);
break;
+ case G_TEST_LOG_START_SUITE:
+ if (test_tap_log)
+ {
+ if (string1[0] != 0)
+ g_print ("# Start of %s tests\n", string1);
+ }
+ break;
+ case G_TEST_LOG_STOP_SUITE:
+ if (test_tap_log)
+ {
+ if (string1[0] != 0)
+ g_print ("# End of %s tests\n", string1);
+ else
+ g_print ("1..%d\n", test_run_count);
+ }
+ break;
case G_TEST_LOG_STOP_CASE:
- if (g_test_verbose())
+ fail = largs[0] != G_TEST_RUN_SUCCESS && largs[0] != G_TEST_RUN_SKIPPED;
+ if (test_tap_log)
+ {
+ g_print ("%s %d %s", fail ? "not ok" : "ok", test_run_count, string1);
+ if (largs[0] == G_TEST_RUN_INCOMPLETE)
+ g_print (" # TODO %s\n", string2 ? string2 : "");
+ else if (largs[0] == G_TEST_RUN_SKIPPED)
+ g_print (" # SKIP %s\n", string2 ? string2 : "");
+ else
+ g_print ("\n");
+ }
+ else if (g_test_verbose())
g_print ("GTest: result: %s\n", fail ? "FAIL" : "OK");
else if (!g_test_quiet())
g_print ("%s\n", fail ? "FAIL" : "OK");
if (fail && test_mode_fatal)
- abort();
+ {
+ if (test_tap_log)
+ g_print ("Bail out!\n");
+ abort();
+ }
break;
case G_TEST_LOG_MIN_RESULT:
- if (g_test_verbose())
+ if (test_tap_log)
+ g_print ("# min perf: %s\n", string1);
+ else if (g_test_verbose())
g_print ("(MINPERF:%s)\n", string1);
break;
case G_TEST_LOG_MAX_RESULT:
- if (g_test_verbose())
+ if (test_tap_log)
+ g_print ("# max perf: %s\n", string1);
+ else if (g_test_verbose())
g_print ("(MAXPERF:%s)\n", string1);
break;
case G_TEST_LOG_MESSAGE:
- if (g_test_verbose())
+ case G_TEST_LOG_ERROR:
+ if (test_tap_log)
+ g_print ("# %s\n", string1);
+ else if (g_test_verbose())
g_print ("(MSG: %s)\n", string1);
break;
default: ;
@@ -637,7 +790,9 @@ g_test_log (GTestLogType lbit,
switch (lbit)
{
case G_TEST_LOG_START_CASE:
- if (g_test_verbose())
+ if (test_tap_log)
+ ;
+ else if (g_test_verbose())
g_print ("GTest: run: %s\n", string1);
else if (!g_test_quiet())
g_print ("%s: ", string1);
@@ -656,6 +811,10 @@ parse_args (gint *argc_p,
guint argc = *argc_p;
gchar **argv = *argv_p;
guint i, e;
+
+ test_argv0 = argv[0];
+ test_initial_cwd = g_get_current_dir ();
+
/* parse known args */
for (i = 1; i < argc; i++)
{
@@ -677,6 +836,11 @@ parse_args (gint *argc_p,
test_debug_log = TRUE;
argv[i] = NULL;
}
+ else if (strcmp (argv[i], "--tap") == 0)
+ {
+ test_tap_log = TRUE;
+ argv[i] = NULL;
+ }
else if (strcmp ("--GTestLogFD", argv[i]) == 0 || strncmp ("--GTestLogFD=", argv[i], 13) == 0)
{
gchar *equal = argv[i] + 12;
@@ -701,6 +865,22 @@ parse_args (gint *argc_p,
}
argv[i] = NULL;
}
+ else if (strcmp ("--GTestSubprocess", argv[i]) == 0)
+ {
+ test_in_subprocess = TRUE;
+ /* We typically expect these child processes to crash, and some
+ * tests spawn a *lot* of them. Avoid spamming system crash
+ * collection programs such as systemd-coredump and abrt.
+ */
+#ifdef HAVE_SYS_RESOURCE_H
+ {
+ struct rlimit limit = { 0, 0 };
+ (void) setrlimit (RLIMIT_CORE, &limit);
+ }
+#endif
+ _g_log_set_exit_on_fatal ();
+ argv[i] = NULL;
+ }
else if (strcmp ("-p", argv[i]) == 0 || strncmp ("-p=", argv[i], 3) == 0)
{
gchar *equal = argv[i] + 2;
@@ -784,26 +964,25 @@ parse_args (gint *argc_p,
}
argv[i] = NULL;
}
- else if (strcmp ("-?", argv[i]) == 0 || strcmp ("--help", argv[i]) == 0)
+ else if (strcmp ("-?", argv[i]) == 0 ||
+ strcmp ("-h", argv[i]) == 0 ||
+ strcmp ("--help", argv[i]) == 0)
{
printf ("Usage:\n"
" %s [OPTION...]\n\n"
"Help Options:\n"
- " -?, --help Show help options\n"
+ " -h, --help Show help options\n\n"
"Test Options:\n"
+ " --g-fatal-warnings Make all warnings fatal\n"
" -l List test cases available in a test executable\n"
- " -seed=RANDOMSEED Provide a random seed to reproduce test\n"
- " runs using random numbers\n"
- " --verbose Run tests verbosely\n"
- " -q, --quiet Run tests quietly\n"
- " -p TESTPATH execute all tests matching TESTPATH\n"
- " -s TESTPATH skip all tests matching TESTPATH\n"
- " -m {perf|slow|thorough|quick} Execute tests according modes\n"
- " -m {undefined|no-undefined} Execute tests according modes\n"
+ " -m {perf|slow|thorough|quick} Execute tests according to mode\n"
+ " -m {undefined|no-undefined} Execute tests according to mode\n"
+ " -p TESTPATH Only start test cases matching TESTPATH\n"
+ " -s TESTPATH Skip all tests matching TESTPATH\n"
+ " -seed=SEEDSTRING Start tests with random seed SEEDSTRING\n"
" --debug-log debug test logging output\n"
- " -k, --keep-going gtester-specific argument\n"
- " --GTestLogFD=N gtester-specific argument\n"
- " --GTestSkipCount=N gtester-specific argument\n",
+ " -q, --quiet Run tests quietly\n"
+ " --verbose Run tests verbosely\n",
argv[0]);
exit (0);
}
@@ -836,65 +1015,67 @@ parse_args (gint *argc_p,
* <varlistentry>
* <term><option>-l</option></term>
* <listitem><para>
- * list test cases available in a test executable.
+ * List test cases available in a test executable.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term><option>--seed=<replaceable>RANDOMSEED</replaceable></option></term>
* <listitem><para>
- * provide a random seed to reproduce test runs using random numbers.
+ * Provide a random seed to reproduce test runs using random numbers.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term><option>--verbose</option></term>
- * <listitem><para>run tests verbosely.</para></listitem>
+ * <listitem><para>Run tests verbosely.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term><option>-q</option>, <option>--quiet</option></term>
- * <listitem><para>run tests quietly.</para></listitem>
+ * <listitem><para>Run tests quietly.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term><option>-p <replaceable>TESTPATH</replaceable></option></term>
* <listitem><para>
- * execute all tests matching <replaceable>TESTPATH</replaceable>.
+ * Execute all tests matching <replaceable>TESTPATH</replaceable>.
+ * This can also be used to force a test to run that would otherwise
+ * be skipped (ie, a test whose name contains "/subprocess").
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term><option>-m {perf|slow|thorough|quick|undefined|no-undefined}</option></term>
* <listitem><para>
- * execute tests according to these test modes:
+ * Execute tests according to these test modes:
* <variablelist>
* <varlistentry>
* <term>perf</term>
* <listitem><para>
- * performance tests, may take long and report results.
+ * Performance tests, may take long and report results.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term>slow, thorough</term>
* <listitem><para>
- * slow and thorough tests, may take quite long and
+ * Slow and thorough tests, may take quite long and
* maximize coverage.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term>quick</term>
* <listitem><para>
- * quick tests, should run really quickly and give good coverage.
+ * Quick tests, should run really quickly and give good coverage.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term>undefined</term>
* <listitem><para>
- * tests for undefined behaviour, may provoke programming errors
- * under g_test_trap_fork() to check that appropriate assertions
- * or warnings are given
+ * Tests for undefined behaviour, may provoke programming errors
+ * under g_test_trap_subprocess() or g_test_expect_messages() to check
+ * that appropriate assertions or warnings are given
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term>no-undefined</term>
* <listitem><para>
- * avoid tests for undefined behaviour
+ * Avoid tests for undefined behaviour
* </para></listitem>
* </varlistentry>
* </variablelist>
@@ -902,19 +1083,7 @@ parse_args (gint *argc_p,
* </varlistentry>
* <varlistentry>
* <term><option>--debug-log</option></term>
- * <listitem><para>debug test logging output.</para></listitem>
- * </varlistentry>
- * <varlistentry>
- * <term><option>-k</option>, <option>--keep-going</option></term>
- * <listitem><para>gtester-specific argument.</para></listitem>
- * </varlistentry>
- * <varlistentry>
- * <term><option>--GTestLogFD <replaceable>N</replaceable></option></term>
- * <listitem><para>gtester-specific argument.</para></listitem>
- * </varlistentry>
- * <varlistentry>
- * <term><option>--GTestSkipCount <replaceable>N</replaceable></option></term>
- * <listitem><para>gtester-specific argument.</para></listitem>
+ * <listitem><para>Debug test logging output.</para></listitem>
* </varlistentry>
* </variablelist>
*
@@ -969,6 +1138,25 @@ g_test_init (int *argc,
/* report program start */
g_log_set_default_handler (gtest_default_log_handler, NULL);
g_test_log (G_TEST_LOG_START_BINARY, g_get_prgname(), test_run_seedstr, 0, NULL);
+
+ test_argv0_dirname = g_path_get_dirname (test_argv0);
+
+ /* Make sure we get the real dirname that the test was run from */
+ if (g_str_has_suffix (test_argv0_dirname, "/.libs"))
+ {
+ gchar *tmp;
+ tmp = g_path_get_dirname (test_argv0_dirname);
+ g_free (test_argv0_dirname);
+ test_argv0_dirname = tmp;
+ }
+
+ test_disted_files_dir = g_getenv ("G_TEST_SRCDIR");
+ if (!test_disted_files_dir)
+ test_disted_files_dir = test_argv0_dirname;
+
+ test_built_files_dir = g_getenv ("G_TEST_BUILDDIR");
+ if (!test_built_files_dir)
+ test_built_files_dir = test_argv0_dirname;
}
static void
@@ -1374,6 +1562,15 @@ g_test_create_case (const char *test_name,
return tc;
}
+static gint
+find_suite (gconstpointer l, gconstpointer s)
+{
+ const GTestSuite *suite = l;
+ const gchar *str = s;
+
+ return strcmp (suite->name, str);
+}
+
/**
* GTestFixtureFunc:
* @fixture: the test fixture
@@ -1423,8 +1620,18 @@ g_test_add_vtable (const char *testpath,
continue; /* initial or duplicate slash */
else if (!islast)
{
- GTestSuite *csuite = g_test_create_suite (seg);
- g_test_suite_add_suite (suite, csuite);
+ GSList *l;
+ GTestSuite *csuite;
+ l = g_slist_find_custom (suite->suites, seg, find_suite);
+ if (l)
+ {
+ csuite = l->data;
+ }
+ else
+ {
+ csuite = g_test_create_suite (seg);
+ g_test_suite_add_suite (suite, csuite);
+ }
suite = csuite;
}
else /* islast */
@@ -1458,7 +1665,104 @@ g_test_add_vtable (const char *testpath,
void
g_test_fail (void)
{
- test_run_success = FALSE;
+ test_run_success = G_TEST_RUN_FAILURE;
+}
+
+/**
+ * g_test_incomplete:
+ * @msg: (allow-none): explanation
+ *
+ * Indicates that a test failed because of some incomplete
+ * functionality. This function can be called multiple times
+ * from the same test.
+ *
+ * Calling this function will not stop the test from running, you
+ * need to return from the test function yourself. So you can
+ * produce additional diagnostic messages or even continue running
+ * the test.
+ *
+ * If not called from inside a test, this function does nothing.
+ *
+ * Since: 2.38
+ */
+void
+g_test_incomplete (const gchar *msg)
+{
+ test_run_success = G_TEST_RUN_INCOMPLETE;
+ g_free (test_run_msg);
+ test_run_msg = g_strdup (msg);
+}
+
+/**
+ * g_test_skip:
+ * @msg: (allow-none): explanation
+ *
+ * Indicates that a test was skipped.
+ *
+ * Calling this function will not stop the test from running, you
+ * need to return from the test function yourself. So you can
+ * produce additional diagnostic messages or even continue running
+ * the test.
+ *
+ * If not called from inside a test, this function does nothing.
+ *
+ * Since: 2.38
+ */
+void
+g_test_skip (const gchar *msg)
+{
+ test_run_success = G_TEST_RUN_SKIPPED;
+ g_free (test_run_msg);
+ test_run_msg = g_strdup (msg);
+}
+
+/**
+ * g_test_failed:
+ *
+ * Returns whether a test has already failed. This will
+ * be the case when g_test_fail(), g_test_incomplete()
+ * or g_test_skip() have been called, but also if an
+ * assertion has failed.
+ *
+ * This can be useful to return early from a test if
+ * continuing after a failed assertion might be harmful.
+ *
+ * The return value of this function is only meaningful
+ * if it is called from inside a test function.
+ *
+ * Returns: %TRUE if the test has failed
+ *
+ * Since: 2.38
+ */
+gboolean
+g_test_failed (void)
+{
+ return test_run_success != G_TEST_RUN_SUCCESS;
+}
+
+/**
+ * g_test_set_nonfatal_assertions:
+ *
+ * Changes the behaviour of g_assert_cmpstr(), g_assert_cmpint(),
+ * g_assert_cmpuint(), g_assert_cmphex(), g_assert_cmpfloat(),
+ * g_assert_true(), g_assert_false(), g_assert_null(), g_assert_no_error(),
+ * g_assert_error(), g_test_assert_expected_messages() and the various
+ * g_test_trap_assert_*() macros to not abort to program, but instead
+ * call g_test_fail() and continue.
+ *
+ * Note that the g_assert_not_reached() and g_assert() are not
+ * affected by this.
+ *
+ * This function can only be called after g_test_init().
+ *
+ * Since: 2.38
+ */
+void
+g_test_set_nonfatal_assertions (void)
+{
+ if (!g_test_config_vars->test_initialized)
+ g_error ("g_test_set_nonfatal_assertions called without g_test_init");
+ test_nonfatal_assertions = TRUE;
}
/**
@@ -1479,6 +1783,11 @@ g_test_fail (void)
* created on the fly and added to the root fixture, based on the
* slash-separated portions of @testpath.
*
+ * If @testpath includes the component "subprocess" anywhere in it,
+ * the test will be skipped by default, and only run if explicitly
+ * required via the <option>-p</option> command-line option or
+ * g_test_trap_subprocess().
+ *
* Since: 2.16
*/
void
@@ -1513,6 +1822,11 @@ g_test_add_func (const char *testpath,
* slash-separated portions of @testpath. The @test_data argument
* will be passed as first argument to @test_func.
*
+ * If @testpath includes the component "subprocess" anywhere in it,
+ * the test will be skipped by default, and only run if explicitly
+ * required via the <option>-p</option> command-line option or
+ * g_test_trap_subprocess().
+ *
* Since: 2.16
*/
void
@@ -1523,10 +1837,73 @@ g_test_add_data_func (const char *testpath,
g_return_if_fail (testpath != NULL);
g_return_if_fail (testpath[0] == '/');
g_return_if_fail (test_func != NULL);
+
g_test_add_vtable (testpath, 0, test_data, NULL, (GTestFixtureFunc) test_func, NULL);
}
/**
+ * g_test_add_data_func_full:
+ * @testpath: /-separated test case path name for the test.
+ * @test_data: Test data argument for the test function.
+ * @test_func: The test function to invoke for this test.
+ * @data_free_func: #GDestroyNotify for @test_data.
+ *
+ * Create a new test case, as with g_test_add_data_func(), but freeing
+ * @test_data after the test run is complete.
+ *
+ * Since: 2.34
+ */
+void
+g_test_add_data_func_full (const char *testpath,
+ gpointer test_data,
+ GTestDataFunc test_func,
+ GDestroyNotify data_free_func)
+{
+ g_return_if_fail (testpath != NULL);
+ g_return_if_fail (testpath[0] == '/');
+ g_return_if_fail (test_func != NULL);
+
+ g_test_add_vtable (testpath, 0, test_data, NULL,
+ (GTestFixtureFunc) test_func,
+ (GTestFixtureFunc) data_free_func);
+}
+
+static gboolean
+g_test_suite_case_exists (GTestSuite *suite,
+ const char *test_path)
+{
+ GSList *iter;
+ char *slash;
+ GTestCase *tc;
+
+ test_path++;
+ slash = strchr (test_path, '/');
+
+ if (slash)
+ {
+ for (iter = suite->suites; iter; iter = iter->next)
+ {
+ GTestSuite *child_suite = iter->data;
+
+ if (!strncmp (child_suite->name, test_path, slash - test_path))
+ if (g_test_suite_case_exists (child_suite, slash))
+ return TRUE;
+ }
+ }
+ else
+ {
+ for (iter = suite->cases; iter; iter = iter->next)
+ {
+ tc = iter->data;
+ if (!strcmp (tc->name, test_path))
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+/**
* g_test_create_suite:
* @suite_name: a name for the suite
*
@@ -1636,9 +2013,35 @@ static gboolean
test_case_run (GTestCase *tc)
{
gchar *old_name = test_run_name, *old_base = g_strdup (test_uri_base);
- gboolean success = TRUE;
+ GSList **old_free_list, *filename_free_list = NULL;
+ gboolean success = G_TEST_RUN_SUCCESS;
+
+ old_free_list = test_filename_free_list;
+ test_filename_free_list = &filename_free_list;
test_run_name = g_strconcat (old_name, "/", tc->name, NULL);
+ if (strstr (test_run_name, "/subprocess"))
+ {
+ GSList *iter;
+ gboolean found = FALSE;
+
+ for (iter = test_paths; iter; iter = iter->next)
+ {
+ if (!strcmp (test_run_name, iter->data))
+ {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ if (g_test_verbose ())
+ g_print ("GTest: skipping: %s\n", test_run_name);
+ goto out;
+ }
+ }
+
if (++test_run_count <= test_skip_count)
g_test_log (G_TEST_LOG_SKIP_CASE, test_run_name, NULL, 0, NULL);
else if (test_run_list)
@@ -1653,7 +2056,8 @@ test_case_run (GTestCase *tc)
void *fixture;
g_test_log (G_TEST_LOG_START_CASE, test_run_name, NULL, 0, NULL);
test_run_forks = 0;
- test_run_success = TRUE;
+ test_run_success = G_TEST_RUN_SUCCESS;
+ g_clear_pointer (&test_run_msg, g_free);
g_test_log_set_fatal_handler (NULL, NULL);
g_timer_start (test_run_timer);
fixture = tc->fixture_size ? g_malloc0 (tc->fixture_size) : tc->test_data;
@@ -1675,19 +2079,24 @@ test_case_run (GTestCase *tc)
g_free (fixture);
g_timer_stop (test_run_timer);
success = test_run_success;
- test_run_success = FALSE;
- largs[0] = success ? 0 : 1; /* OK */
+ test_run_success = G_TEST_RUN_FAILURE;
+ largs[0] = success; /* OK */
largs[1] = test_run_forks;
largs[2] = g_timer_elapsed (test_run_timer, NULL);
- g_test_log (G_TEST_LOG_STOP_CASE, NULL, NULL, G_N_ELEMENTS (largs), largs);
+ g_test_log (G_TEST_LOG_STOP_CASE, test_run_name, test_run_msg, G_N_ELEMENTS (largs), largs);
+ g_clear_pointer (&test_run_msg, g_free);
g_timer_destroy (test_run_timer);
}
+
+ out:
+ g_slist_free_full (filename_free_list, g_free);
+ test_filename_free_list = old_free_list;
g_free (test_run_name);
test_run_name = old_name;
g_free (test_uri_base);
test_uri_base = old_base;
- return success;
+ return success == G_TEST_RUN_SUCCESS;
}
static int
@@ -1700,6 +2109,8 @@ g_test_run_suite_internal (GTestSuite *suite,
g_return_val_if_fail (suite != NULL, -1);
+ g_test_log (G_TEST_LOG_START_SUITE, suite->name, NULL, 0, NULL);
+
while (path[0] == '/')
path++;
l = strlen (path);
@@ -1711,7 +2122,7 @@ g_test_run_suite_internal (GTestSuite *suite,
{
GTestCase *tc = slist->data;
guint n = l ? strlen (tc->name) : 0;
- if (l == n && strncmp (path, tc->name, n) == 0)
+ if (l == n && !rest && strncmp (path, tc->name, n) == 0)
{
if (!test_case_run (tc))
n_bad++;
@@ -1730,6 +2141,8 @@ g_test_run_suite_internal (GTestSuite *suite,
g_free (test_run_name);
test_run_name = old_name;
+ g_test_log (G_TEST_LOG_STOP_SUITE, suite->name, NULL, 0, NULL);
+
return n_bad;
}
@@ -1751,6 +2164,7 @@ g_test_run_suite_internal (GTestSuite *suite,
int
g_test_run_suite (GTestSuite *suite)
{
+ GSList *my_test_paths;
guint n_bad = 0;
g_return_val_if_fail (g_test_config_vars->test_initialized, -1);
@@ -1758,13 +2172,16 @@ g_test_run_suite (GTestSuite *suite)
g_test_run_once = FALSE;
- if (!test_paths)
- test_paths = g_slist_prepend (test_paths, "");
- while (test_paths)
+ if (test_paths)
+ my_test_paths = g_slist_copy (test_paths);
+ else
+ my_test_paths = g_slist_prepend (NULL, "");
+
+ while (my_test_paths)
{
- const char *rest, *path = test_paths->data;
+ const char *rest, *path = my_test_paths->data;
guint l, n = strlen (suite->name);
- test_paths = g_slist_delete_link (test_paths, test_paths);
+ my_test_paths = g_slist_delete_link (my_test_paths, my_test_paths);
while (path[0] == '/')
path++;
if (!n) /* root suite, run unconditionally */
@@ -1858,7 +2275,7 @@ g_assertion_message (const char *domain,
g_test_log (G_TEST_LOG_ERROR, s, NULL, 0, NULL);
g_free (s);
- abort();
+ _g_log_abort ();
}
void
@@ -1868,9 +2285,14 @@ g_assertion_message_expr (const char *domain,
const char *func,
const char *expr)
{
- char *s = g_strconcat ("assertion failed: (", expr, ")", NULL);
+ char *s;
+ if (!expr)
+ s = g_strdup ("code should not be reached");
+ else
+ s = g_strconcat ("assertion failed: (", expr, ")", NULL);
g_assertion_message (domain, file, line, func, s);
g_free (s);
+ abort ();
}
void
@@ -1885,11 +2307,12 @@ g_assertion_message_cmpnum (const char *domain,
char numtype)
{
char *s = NULL;
+
switch (numtype)
{
- case 'i': s = g_strdup_printf ("assertion failed (%s): (%.0Lf %s %.0Lf)", expr, arg1, cmp, arg2); break;
+ case 'i': s = g_strdup_printf ("assertion failed (%s): (%" G_GINT64_MODIFIER "i %s %" G_GINT64_MODIFIER "i)", expr, (gint64) arg1, cmp, (gint64) arg2); break;
case 'x': s = g_strdup_printf ("assertion failed (%s): (0x%08" G_GINT64_MODIFIER "x %s 0x%08" G_GINT64_MODIFIER "x)", expr, (guint64) arg1, cmp, (guint64) arg2); break;
- case 'f': s = g_strdup_printf ("assertion failed (%s): (%.9Lg %s %.9Lg)", expr, arg1, cmp, arg2); break;
+ case 'f': s = g_strdup_printf ("assertion failed (%s): (%.9g %s %.9g)", expr, (double) arg1, cmp, (double) arg2); break;
/* ideally use: floats=%.7g double=%.17g */
}
g_assertion_message (domain, file, line, func, s);
@@ -1957,11 +2380,11 @@ g_assertion_message_error (const char *domain,
* @str1: (allow-none): a C string or %NULL
* @str2: (allow-none): another C string or %NULL
*
- * Compares @str1 and @str2 like strcmp(). Handles %NULL
+ * Compares @str1 and @str2 like strcmp(). Handles %NULL
* gracefully by sorting it before non-%NULL strings.
* Comparing two %NULL pointers returns 0.
*
- * Returns: -1, 0 or 1, if @str1 is <, == or > than @str2.
+ * Returns: an integer less than, equal to, or greater than zero, if @str1 is <, == or > than @str2.
*
* Since: 2.16
*/
@@ -1976,103 +2399,14 @@ g_strcmp0 (const char *str1,
return strcmp (str1, str2);
}
-#ifdef G_OS_UNIX
-static int /* 0 on success */
-kill_child (int pid,
- int *status,
- int patience)
-{
- int wr;
- if (patience >= 3) /* try graceful reap */
- {
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- }
- if (patience >= 2) /* try SIGHUP */
- {
- kill (pid, SIGHUP);
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- g_usleep (20 * 1000); /* give it some scheduling/shutdown time */
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- g_usleep (50 * 1000); /* give it some scheduling/shutdown time */
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- g_usleep (100 * 1000); /* give it some scheduling/shutdown time */
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- }
- if (patience >= 1) /* try SIGTERM */
- {
- kill (pid, SIGTERM);
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- g_usleep (200 * 1000); /* give it some scheduling/shutdown time */
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- g_usleep (400 * 1000); /* give it some scheduling/shutdown time */
- if (waitpid (pid, status, WNOHANG) > 0)
- return 0;
- }
- /* finish it off */
- kill (pid, SIGKILL);
- do
- wr = waitpid (pid, status, 0);
- while (wr < 0 && errno == EINTR);
- return wr;
-}
-#endif
-
-static inline int
-g_string_must_read (GString *gstring,
- int fd)
-{
-#define STRING_BUFFER_SIZE 4096
- char buf[STRING_BUFFER_SIZE];
- gssize bytes;
- again:
- bytes = read (fd, buf, sizeof (buf));
- if (bytes == 0)
- return 0; /* EOF, calling this function assumes data is available */
- else if (bytes > 0)
- {
- g_string_append_len (gstring, buf, bytes);
- return 1;
- }
- else if (bytes < 0 && errno == EINTR)
- goto again;
- else /* bytes < 0 */
- {
- g_warning ("failed to read() from child process (%d): %s", test_trap_last_pid, g_strerror (errno));
- return 1; /* ignore error after warning */
- }
-}
-
-static inline void
-g_string_write_out (GString *gstring,
- int outfd,
- int *stringpos)
-{
- if (*stringpos < gstring->len)
- {
- int r;
- do
- r = write (outfd, gstring->str + *stringpos, gstring->len - *stringpos);
- while (r < 0 && errno == EINTR);
- *stringpos += MAX (r, 0);
- }
-}
-
static void
test_trap_clear (void)
{
test_trap_last_status = 0;
test_trap_last_pid = 0;
- g_free (test_trap_last_stdout);
- test_trap_last_stdout = NULL;
- g_free (test_trap_last_stderr);
- test_trap_last_stderr = NULL;
+ g_clear_pointer (&test_trap_last_subprocess, g_free);
+ g_clear_pointer (&test_trap_last_stdout, g_free);
+ g_clear_pointer (&test_trap_last_stderr, g_free);
}
#ifdef G_OS_UNIX
@@ -2088,27 +2422,191 @@ sane_dup2 (int fd1,
return ret;
}
-static guint64
-test_time_stamp (void)
+#endif
+
+typedef struct {
+ GPid pid;
+ GMainLoop *loop;
+ int child_status;
+
+ GIOChannel *stdout_io;
+ gboolean echo_stdout;
+ GString *stdout_str;
+
+ GIOChannel *stderr_io;
+ gboolean echo_stderr;
+ GString *stderr_str;
+} WaitForChildData;
+
+static void
+check_complete (WaitForChildData *data)
{
- GTimeVal tv;
- guint64 stamp;
- g_get_current_time (&tv);
- stamp = tv.tv_sec;
- stamp = stamp * 1000000 + tv.tv_usec;
- return stamp;
+ if (data->child_status != -1 && data->stdout_io == NULL && data->stderr_io == NULL)
+ g_main_loop_quit (data->loop);
}
+static void
+child_exited (GPid pid,
+ gint status,
+ gpointer user_data)
+{
+ WaitForChildData *data = user_data;
+
+#ifdef G_OS_UNIX
+ if (WIFEXITED (status)) /* normal exit */
+ data->child_status = WEXITSTATUS (status); /* 0..255 */
+ else if (WIFSIGNALED (status) && WTERMSIG (status) == SIGALRM)
+ data->child_status = G_TEST_STATUS_TIMED_OUT;
+ else if (WIFSIGNALED (status))
+ data->child_status = (WTERMSIG (status) << 12); /* signalled */
+ else /* WCOREDUMP (status) */
+ data->child_status = 512; /* coredump */
+#else
+ data->child_status = status;
+#endif
+
+ check_complete (data);
+}
+
+static gboolean
+child_timeout (gpointer user_data)
+{
+ WaitForChildData *data = user_data;
+
+#ifdef G_OS_WIN32
+ TerminateProcess (data->pid, G_TEST_STATUS_TIMED_OUT);
+#else
+ kill (data->pid, SIGALRM);
#endif
+ return FALSE;
+}
+
+static gboolean
+child_read (GIOChannel *io, GIOCondition cond, gpointer user_data)
+{
+ WaitForChildData *data = user_data;
+ GIOStatus status;
+ gsize nread, nwrote, total;
+ gchar buf[4096];
+ FILE *echo_file = NULL;
+
+ status = g_io_channel_read_chars (io, buf, sizeof (buf), &nread, NULL);
+ if (status == G_IO_STATUS_ERROR || status == G_IO_STATUS_EOF)
+ {
+ // FIXME data->error = (status == G_IO_STATUS_ERROR);
+ if (io == data->stdout_io)
+ g_clear_pointer (&data->stdout_io, g_io_channel_unref);
+ else
+ g_clear_pointer (&data->stderr_io, g_io_channel_unref);
+
+ check_complete (data);
+ return FALSE;
+ }
+ else if (status == G_IO_STATUS_AGAIN)
+ return TRUE;
+
+ if (io == data->stdout_io)
+ {
+ g_string_append_len (data->stdout_str, buf, nread);
+ if (data->echo_stdout)
+ echo_file = stdout;
+ }
+ else
+ {
+ g_string_append_len (data->stderr_str, buf, nread);
+ if (data->echo_stderr)
+ echo_file = stderr;
+ }
+
+ if (echo_file)
+ {
+ for (total = 0; total < nread; total += nwrote)
+ {
+ nwrote = fwrite (buf + total, 1, nread - total, echo_file);
+ if (nwrote == 0)
+ g_error ("write failed: %s", g_strerror (errno));
+ }
+ }
+
+ return TRUE;
+}
+
+static void
+wait_for_child (GPid pid,
+ int stdout_fd, gboolean echo_stdout,
+ int stderr_fd, gboolean echo_stderr,
+ guint64 timeout)
+{
+ WaitForChildData data;
+ GMainContext *context;
+ GSource *source;
+
+ data.pid = pid;
+ data.child_status = -1;
+
+ context = g_main_context_new ();
+ data.loop = g_main_loop_new (context, FALSE);
+
+ source = g_child_watch_source_new (pid);
+ g_source_set_callback (source, (GSourceFunc) child_exited, &data, NULL);
+ g_source_attach (source, context);
+ g_source_unref (source);
+
+ data.echo_stdout = echo_stdout;
+ data.stdout_str = g_string_new (NULL);
+ data.stdout_io = g_io_channel_unix_new (stdout_fd);
+ g_io_channel_set_close_on_unref (data.stdout_io, TRUE);
+ g_io_channel_set_encoding (data.stdout_io, NULL, NULL);
+ g_io_channel_set_buffered (data.stdout_io, FALSE);
+ source = g_io_create_watch (data.stdout_io, G_IO_IN | G_IO_ERR | G_IO_HUP);
+ g_source_set_callback (source, (GSourceFunc) child_read, &data, NULL);
+ g_source_attach (source, context);
+ g_source_unref (source);
+
+ data.echo_stderr = echo_stderr;
+ data.stderr_str = g_string_new (NULL);
+ data.stderr_io = g_io_channel_unix_new (stderr_fd);
+ g_io_channel_set_close_on_unref (data.stderr_io, TRUE);
+ g_io_channel_set_encoding (data.stderr_io, NULL, NULL);
+ g_io_channel_set_buffered (data.stderr_io, FALSE);
+ source = g_io_create_watch (data.stderr_io, G_IO_IN | G_IO_ERR | G_IO_HUP);
+ g_source_set_callback (source, (GSourceFunc) child_read, &data, NULL);
+ g_source_attach (source, context);
+ g_source_unref (source);
+
+ if (timeout)
+ {
+ source = g_timeout_source_new (0);
+ g_source_set_ready_time (source, g_get_monotonic_time () + timeout);
+ g_source_set_callback (source, (GSourceFunc) child_timeout, &data, NULL);
+ g_source_attach (source, context);
+ g_source_unref (source);
+ }
+
+ g_main_loop_run (data.loop);
+ g_main_loop_unref (data.loop);
+ g_main_context_unref (context);
+
+ test_trap_last_pid = pid;
+ test_trap_last_status = data.child_status;
+ test_trap_last_stdout = g_string_free (data.stdout_str, FALSE);
+ test_trap_last_stderr = g_string_free (data.stderr_str, FALSE);
+
+ g_clear_pointer (&data.stdout_io, g_io_channel_unref);
+ g_clear_pointer (&data.stderr_io, g_io_channel_unref);
+}
+
/**
* g_test_trap_fork:
* @usec_timeout: Timeout for the forked test in micro seconds.
* @test_trap_flags: Flags to modify forking behaviour.
*
* Fork the current test program to execute a test case that might
- * not return or that might abort. The forked test case is aborted
- * and considered failing if its run time exceeds @usec_timeout.
+ * not return or that might abort.
+ *
+ * If @usec_timeout is non-0, the forked test case is aborted and
+ * considered failing if its run time exceeds it.
*
* The forking behavior can be configured with the #GTestTrapFlags flags.
*
@@ -2127,31 +2625,31 @@ test_time_stamp (void)
* g_printerr ("some stderr text: semagic43\n");
* exit (0); /&ast; successful test run &ast;/
* }
- * g_test_trap_assert_passed();
+ * g_test_trap_assert_passed ();
* g_test_trap_assert_stdout ("*somagic17*");
* g_test_trap_assert_stderr ("*semagic43*");
* }
* ]|
*
- * This function is implemented only on Unix platforms.
- *
* Returns: %TRUE for the forked child and %FALSE for the executing parent process.
*
* Since: 2.16
+ *
+ * Deprecated: This function is implemented only on Unix platforms,
+ * and is not always reliable due to problems inherent in
+ * fork-without-exec. Use g_test_trap_subprocess() instead.
*/
gboolean
g_test_trap_fork (guint64 usec_timeout,
GTestTrapFlags test_trap_flags)
{
#ifdef G_OS_UNIX
- gboolean pass_on_forked_log = FALSE;
int stdout_pipe[2] = { -1, -1 };
int stderr_pipe[2] = { -1, -1 };
- int stdtst_pipe[2] = { -1, -1 };
+
test_trap_clear();
- if (pipe (stdout_pipe) < 0 || pipe (stderr_pipe) < 0 || pipe (stdtst_pipe) < 0)
+ if (pipe (stdout_pipe) < 0 || pipe (stderr_pipe) < 0)
g_error ("failed to create pipes to fork test program: %s", g_strerror (errno));
- signal (SIGCHLD, SIG_DFL);
test_trap_last_pid = fork ();
if (test_trap_last_pid < 0)
g_error ("failed to fork test program: %s", g_strerror (errno));
@@ -2160,9 +2658,8 @@ g_test_trap_fork (guint64 usec_timeout,
int fd0 = -1;
close (stdout_pipe[0]);
close (stderr_pipe[0]);
- close (stdtst_pipe[0]);
if (!(test_trap_flags & G_TEST_TRAP_INHERIT_STDIN))
- fd0 = open ("/dev/null", O_RDONLY);
+ fd0 = g_open ("/dev/null", O_RDONLY, 0);
if (sane_dup2 (stdout_pipe[1], 1) < 0 || sane_dup2 (stderr_pipe[1], 2) < 0 || (fd0 >= 0 && sane_dup2 (fd0, 0) < 0))
g_error ("failed to dup2() in forked test program: %s", g_strerror (errno));
if (fd0 >= 3)
@@ -2171,109 +2668,18 @@ g_test_trap_fork (guint64 usec_timeout,
close (stdout_pipe[1]);
if (stderr_pipe[1] >= 3)
close (stderr_pipe[1]);
- test_log_fd = stdtst_pipe[1];
return TRUE;
}
else /* parent */
{
- GString *sout = g_string_new (NULL);
- GString *serr = g_string_new (NULL);
- guint64 sstamp;
- int soutpos = 0, serrpos = 0, wr, need_wait = TRUE;
test_run_forks++;
close (stdout_pipe[1]);
close (stderr_pipe[1]);
- close (stdtst_pipe[1]);
- sstamp = test_time_stamp();
- /* read data until we get EOF on all pipes */
- while (stdout_pipe[0] >= 0 || stderr_pipe[0] >= 0 || stdtst_pipe[0] > 0)
- {
- fd_set fds;
- struct timeval tv;
- int ret;
- FD_ZERO (&fds);
- if (stdout_pipe[0] >= 0)
- FD_SET (stdout_pipe[0], &fds);
- if (stderr_pipe[0] >= 0)
- FD_SET (stderr_pipe[0], &fds);
- if (stdtst_pipe[0] >= 0)
- FD_SET (stdtst_pipe[0], &fds);
- tv.tv_sec = 0;
- tv.tv_usec = MIN (usec_timeout ? usec_timeout : 1000000, 100 * 1000); /* sleep at most 0.5 seconds to catch clock skews, etc. */
- ret = select (MAX (MAX (stdout_pipe[0], stderr_pipe[0]), stdtst_pipe[0]) + 1, &fds, NULL, NULL, &tv);
- if (ret < 0 && errno != EINTR)
- {
- g_warning ("Unexpected error in select() while reading from child process (%d): %s", test_trap_last_pid, g_strerror (errno));
- break;
- }
- if (stdout_pipe[0] >= 0 && FD_ISSET (stdout_pipe[0], &fds) &&
- g_string_must_read (sout, stdout_pipe[0]) == 0)
- {
- close (stdout_pipe[0]);
- stdout_pipe[0] = -1;
- }
- if (stderr_pipe[0] >= 0 && FD_ISSET (stderr_pipe[0], &fds) &&
- g_string_must_read (serr, stderr_pipe[0]) == 0)
- {
- close (stderr_pipe[0]);
- stderr_pipe[0] = -1;
- }
- if (stdtst_pipe[0] >= 0 && FD_ISSET (stdtst_pipe[0], &fds))
- {
- guint8 buffer[4096];
- gint l, r = read (stdtst_pipe[0], buffer, sizeof (buffer));
- if (r > 0 && test_log_fd > 0)
- do
- l = write (pass_on_forked_log ? test_log_fd : -1, buffer, r);
- while (l < 0 && errno == EINTR);
- if (r == 0 || (r < 0 && errno != EINTR && errno != EAGAIN))
- {
- close (stdtst_pipe[0]);
- stdtst_pipe[0] = -1;
- }
- }
- if (!(test_trap_flags & G_TEST_TRAP_SILENCE_STDOUT))
- g_string_write_out (sout, 1, &soutpos);
- if (!(test_trap_flags & G_TEST_TRAP_SILENCE_STDERR))
- g_string_write_out (serr, 2, &serrpos);
- if (usec_timeout)
- {
- guint64 nstamp = test_time_stamp();
- int status = 0;
- sstamp = MIN (sstamp, nstamp); /* guard against backwards clock skews */
- if (usec_timeout < nstamp - sstamp)
- {
- /* timeout reached, need to abort the child now */
- kill_child (test_trap_last_pid, &status, 3);
- test_trap_last_status = 1024; /* timeout */
- if (0 && WIFSIGNALED (status))
- g_printerr ("%s: child timed out and received: %s\n", G_STRFUNC, g_strsignal (WTERMSIG (status)));
- need_wait = FALSE;
- break;
- }
- }
- }
- if (stdout_pipe[0] != -1)
- close (stdout_pipe[0]);
- if (stderr_pipe[0] != -1)
- close (stderr_pipe[0]);
- if (stdtst_pipe[0] != -1)
- close (stdtst_pipe[0]);
- if (need_wait)
- {
- int status = 0;
- do
- wr = waitpid (test_trap_last_pid, &status, 0);
- while (wr < 0 && errno == EINTR);
- if (WIFEXITED (status)) /* normal exit */
- test_trap_last_status = WEXITSTATUS (status); /* 0..255 */
- else if (WIFSIGNALED (status))
- test_trap_last_status = (WTERMSIG (status) << 12); /* signalled */
- else /* WCOREDUMP (status) */
- test_trap_last_status = 512; /* coredump */
- }
- test_trap_last_stdout = g_string_free (sout, FALSE);
- test_trap_last_stderr = g_string_free (serr, FALSE);
+
+ wait_for_child (test_trap_last_pid,
+ stdout_pipe[0], !(test_trap_flags & G_TEST_TRAP_SILENCE_STDOUT),
+ stderr_pipe[0], !(test_trap_flags & G_TEST_TRAP_SILENCE_STDERR),
+ usec_timeout);
return FALSE;
}
#else
@@ -2284,11 +2690,159 @@ g_test_trap_fork (guint64 usec_timeout,
}
/**
+ * g_test_trap_subprocess:
+ * @test_path: Test to run in a subprocess
+ * @usec_timeout: Timeout for the subprocess test in micro seconds.
+ * @test_flags: Flags to modify subprocess behaviour.
+ *
+ * Respawns the test program to run only @test_path in a subprocess.
+ * This can be used for a test case that might not return, or that
+ * might abort. @test_path will normally be the name of the parent
+ * test, followed by "<literal>/subprocess/</literal>" and then a name
+ * for the specific subtest (or just ending with
+ * "<literal>/subprocess</literal>" if the test only has one child
+ * test); tests with names of this form will automatically be skipped
+ * in the parent process.
+ *
+ * If @usec_timeout is non-0, the test subprocess is aborted and
+ * considered failing if its run time exceeds it.
+ *
+ * The subprocess behavior can be configured with the
+ * #GTestSubprocessFlags flags.
+ *
+ * You can use methods such as g_test_trap_assert_passed(),
+ * g_test_trap_assert_failed(), and g_test_trap_assert_stderr() to
+ * check the results of the subprocess. (But note that
+ * g_test_trap_assert_stdout() and g_test_trap_assert_stderr()
+ * cannot be used if @test_flags specifies that the child should
+ * inherit the parent stdout/stderr.)
+ *
+ * If your <literal>main ()</literal> needs to behave differently in
+ * the subprocess, you can call g_test_subprocess() (after calling
+ * g_test_init()) to see whether you are in a subprocess.
+ *
+ * The following example tests that calling
+ * <literal>my_object_new(1000000)</literal> will abort with an error
+ * message.
+ *
+ * |[
+ * static void
+ * test_create_large_object_subprocess (void)
+ * {
+ * my_object_new (1000000);
+ * }
+ *
+ * static void
+ * test_create_large_object (void)
+ * {
+ * g_test_trap_subprocess ("/myobject/create_large_object/subprocess", 0, 0);
+ * g_test_trap_assert_failed ();
+ * g_test_trap_assert_stderr ("*ERROR*too large*");
+ * }
+ *
+ * int
+ * main (int argc, char **argv)
+ * {
+ * g_test_init (&argc, &argv, NULL);
+ *
+ * g_test_add_func ("/myobject/create_large_object",
+ * test_create_large_object);
+ * /&ast; Because of the '/subprocess' in the name, this test will
+ * &ast; not be run by the g_test_run () call below.
+ * &ast;/
+ * g_test_add_func ("/myobject/create_large_object/subprocess",
+ * test_create_large_object_subprocess);
+ *
+ * return g_test_run ();
+ * }
+ * ]|
+ *
+ * Since: 2.38
+ */
+void
+g_test_trap_subprocess (const char *test_path,
+ guint64 usec_timeout,
+ GTestSubprocessFlags test_flags)
+{
+ GError *error = NULL;
+ GPtrArray *argv;
+ GSpawnFlags flags;
+ int stdout_fd, stderr_fd;
+ GPid pid;
+
+ /* Sanity check that they used GTestSubprocessFlags, not GTestTrapFlags */
+ g_assert ((test_flags & (G_TEST_TRAP_INHERIT_STDIN | G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR)) == 0);
+
+ if (!g_test_suite_case_exists (g_test_get_root (), test_path))
+ g_error ("g_test_trap_subprocess: test does not exist: %s", test_path);
+
+ if (g_test_verbose ())
+ g_print ("GTest: subprocess: %s\n", test_path);
+
+ test_trap_clear ();
+ test_trap_last_subprocess = g_strdup (test_path);
+
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, test_argv0);
+ g_ptr_array_add (argv, "-q");
+ g_ptr_array_add (argv, "-p");
+ g_ptr_array_add (argv, (char *)test_path);
+ g_ptr_array_add (argv, "--GTestSubprocess");
+ if (test_log_fd != -1)
+ {
+ char log_fd_buf[128];
+
+ g_ptr_array_add (argv, "--GTestLogFD");
+ g_snprintf (log_fd_buf, sizeof (log_fd_buf), "%d", test_log_fd);
+ g_ptr_array_add (argv, log_fd_buf);
+ }
+ g_ptr_array_add (argv, NULL);
+
+ flags = G_SPAWN_DO_NOT_REAP_CHILD;
+ if (test_flags & G_TEST_TRAP_INHERIT_STDIN)
+ flags |= G_SPAWN_CHILD_INHERITS_STDIN;
+
+ if (!g_spawn_async_with_pipes (test_initial_cwd,
+ (char **)argv->pdata,
+ NULL, flags,
+ NULL, NULL,
+ &pid, NULL, &stdout_fd, &stderr_fd,
+ &error))
+ {
+ g_error ("g_test_trap_subprocess() failed: %s\n",
+ error->message);
+ }
+ g_ptr_array_free (argv, TRUE);
+
+ wait_for_child (pid,
+ stdout_fd, !!(test_flags & G_TEST_SUBPROCESS_INHERIT_STDOUT),
+ stderr_fd, !!(test_flags & G_TEST_SUBPROCESS_INHERIT_STDERR),
+ usec_timeout);
+}
+
+/**
+ * g_test_subprocess:
+ *
+ * Returns %TRUE (after g_test_init() has been called) if the test
+ * program is running under g_test_trap_subprocess().
+ *
+ * Returns: %TRUE if the test program is running under
+ * g_test_trap_subprocess().
+ *
+ * Since: 2.38
+ */
+gboolean
+g_test_subprocess (void)
+{
+ return test_in_subprocess;
+}
+
+/**
* g_test_trap_has_passed:
*
- * Check the result of the last g_test_trap_fork() call.
+ * Check the result of the last g_test_trap_subprocess() call.
*
- * Returns: %TRUE if the last forked child terminated successfully.
+ * Returns: %TRUE if the last test subprocess terminated successfully.
*
* Since: 2.16
*/
@@ -2301,16 +2855,16 @@ g_test_trap_has_passed (void)
/**
* g_test_trap_reached_timeout:
*
- * Check the result of the last g_test_trap_fork() call.
+ * Check the result of the last g_test_trap_subprocess() call.
*
- * Returns: %TRUE if the last forked child got killed due to a fork timeout.
+ * Returns: %TRUE if the last test subprocess got killed due to a timeout.
*
* Since: 2.16
*/
gboolean
g_test_trap_reached_timeout (void)
{
- return 0 != (test_trap_last_status & 1024); /* timeout flag */
+ return test_trap_last_status != G_TEST_STATUS_TIMED_OUT;
}
void
@@ -2321,40 +2875,54 @@ g_test_trap_assertions (const char *domain,
guint64 assertion_flags, /* 0-pass, 1-fail, 2-outpattern, 4-errpattern */
const char *pattern)
{
-#ifdef G_OS_UNIX
gboolean must_pass = assertion_flags == 0;
gboolean must_fail = assertion_flags == 1;
gboolean match_result = 0 == (assertion_flags & 1);
const char *stdout_pattern = (assertion_flags & 2) ? pattern : NULL;
const char *stderr_pattern = (assertion_flags & 4) ? pattern : NULL;
const char *match_error = match_result ? "failed to match" : "contains invalid match";
- if (test_trap_last_pid == 0)
- g_error ("child process failed to exit after g_test_trap_fork() and before g_test_trap_assert*()");
+ char *process_id;
+
+#ifdef G_OS_UNIX
+ if (test_trap_last_subprocess != NULL)
+ {
+ process_id = g_strdup_printf ("%s [%d]", test_trap_last_subprocess,
+ test_trap_last_pid);
+ }
+ else if (test_trap_last_pid != 0)
+ process_id = g_strdup_printf ("%d", test_trap_last_pid);
+#else
+ if (test_trap_last_subprocess != NULL)
+ process_id = g_strdup (test_trap_last_subprocess);
+#endif
+ else
+ g_error ("g_test_trap_ assertion with no trapped test");
+
if (must_pass && !g_test_trap_has_passed())
{
- char *msg = g_strdup_printf ("child process (%d) of test trap failed unexpectedly", test_trap_last_pid);
+ char *msg = g_strdup_printf ("child process (%s) failed unexpectedly", process_id);
g_assertion_message (domain, file, line, func, msg);
g_free (msg);
}
if (must_fail && g_test_trap_has_passed())
{
- char *msg = g_strdup_printf ("child process (%d) did not fail as expected", test_trap_last_pid);
+ char *msg = g_strdup_printf ("child process (%s) did not fail as expected", process_id);
g_assertion_message (domain, file, line, func, msg);
g_free (msg);
}
if (stdout_pattern && match_result == !g_pattern_match_simple (stdout_pattern, test_trap_last_stdout))
{
- char *msg = g_strdup_printf ("stdout of child process (%d) %s: %s", test_trap_last_pid, match_error, stdout_pattern);
+ char *msg = g_strdup_printf ("stdout of child process (%s) %s: %s", process_id, match_error, stdout_pattern);
g_assertion_message (domain, file, line, func, msg);
g_free (msg);
}
if (stderr_pattern && match_result == !g_pattern_match_simple (stderr_pattern, test_trap_last_stderr))
{
- char *msg = g_strdup_printf ("stderr of child process (%d) %s: %s", test_trap_last_pid, match_error, stderr_pattern);
+ char *msg = g_strdup_printf ("stderr of child process (%s) %s: %s", process_id, match_error, stderr_pattern);
g_assertion_message (domain, file, line, func, msg);
g_free (msg);
}
-#endif
+ g_free (process_id);
}
static void
@@ -2551,6 +3119,184 @@ g_test_log_msg_free (GTestLogMsg *tmsg)
g_free (tmsg);
}
+static gchar *
+g_test_build_filename_va (GTestFileType file_type,
+ const gchar *first_path,
+ va_list ap)
+{
+ const gchar *pathv[16];
+ gint num_path_segments;
+
+ if (file_type == G_TEST_DIST)
+ pathv[0] = test_disted_files_dir;
+ else if (file_type == G_TEST_BUILT)
+ pathv[0] = test_built_files_dir;
+ else
+ g_assert_not_reached ();
+
+ pathv[1] = first_path;
+
+ for (num_path_segments = 2; num_path_segments < G_N_ELEMENTS (pathv); num_path_segments++)
+ {
+ pathv[num_path_segments] = va_arg (ap, const char *);
+ if (pathv[num_path_segments] == NULL)
+ break;
+ }
+
+ g_assert_cmpint (num_path_segments, <, G_N_ELEMENTS (pathv));
+
+ return g_build_filenamev ((gchar **) pathv);
+}
+
+/**
+ * g_test_build_filename:
+ * @file_type: the type of file (built vs. distributed)
+ * @first_path: the first segment of the pathname
+ * @...: %NULL-terminated additional path segments
+ *
+ * Creates the pathname to a data file that is required for a test.
+ *
+ * This function is conceptually similar to g_build_filename() except
+ * that the first argument has been replaced with a #GTestFileType
+ * argument.
+ *
+ * The data file should either have been distributed with the module
+ * containing the test (%G_TEST_DIST) or built as part of the build
+ * system of that module (%G_TEST_BUILT).
+ *
+ * In order for this function to work in srcdir != builddir situations,
+ * the G_TEST_SRCDIR and G_TEST_BUILDDIR environment variables need to
+ * have been defined. As of 2.38, this is done by the Makefile.decl
+ * included in GLib. Please ensure that your copy is up to date before
+ * using this function.
+ *
+ * In case neither variable is set, this function will fall back to
+ * using the dirname portion of argv[0], possibly removing ".libs".
+ * This allows for casual running of tests directly from the commandline
+ * in the srcdir == builddir case and should also support running of
+ * installed tests, assuming the data files have been installed in the
+ * same relative path as the test binary.
+ *
+ * Returns: the path of the file, to be freed using g_free()
+ *
+ * Since: 2.38
+ **/
+/**
+ * GTestFileType:
+ * @G_TEST_DIST: a file that was included in the distribution tarball
+ * @G_TEST_BUILT: a file that was built on the compiling machine
+ *
+ * The type of file to return the filename for, when used with
+ * g_test_build_filename().
+ *
+ * These two options correspond rather directly to the 'dist' and
+ * 'built' terminology that automake uses and are explicitly used to
+ * distinguish between the 'srcdir' and 'builddir' being separate. All
+ * files in your project should either be dist (in the
+ * <literal>DIST_EXTRA</literal> or <literal>dist_schema_DATA</literal>
+ * sense, in which case they will always be in the srcdir) or built (in
+ * the <literal>BUILT_SOURCES</literal> sense, in which case they will
+ * always be in the builddir).
+ *
+ * Note: as a general rule of automake, files that are generated only as
+ * part of the build-from-git process (but then are distributed with the
+ * tarball) always go in srcdir (even if doing a srcdir != builddir
+ * build from git) and are considered as distributed files.
+ *
+ * Since: 2.38
+ **/
+gchar *
+g_test_build_filename (GTestFileType file_type,
+ const gchar *first_path,
+ ...)
+{
+ gchar *result;
+ va_list ap;
+
+ g_assert (g_test_initialized ());
+
+ va_start (ap, first_path);
+ result = g_test_build_filename_va (file_type, first_path, ap);
+ va_end (ap);
+
+ return result;
+}
+
+/**
+ * g_test_get_dir:
+ * @file_type: the type of file (built vs. distributed)
+ *
+ * Gets the pathname of the directory containing test files of the type
+ * specified by @file_type.
+ *
+ * This is approximately the same as calling g_test_build_filename("."),
+ * but you don't need to free the return value.
+ *
+ * Returns: the path of the directory, owned by GLib
+ *
+ * Since: 2.38
+ **/
+const gchar *
+g_test_get_dir (GTestFileType file_type)
+{
+ g_assert (g_test_initialized ());
+
+ if (file_type == G_TEST_DIST)
+ return test_disted_files_dir;
+ else if (file_type == G_TEST_BUILT)
+ return test_built_files_dir;
+
+ g_assert_not_reached ();
+}
+
+/**
+ * g_test_get_filename:
+ * @file_type: the type of file (built vs. distributed)
+ * @first_path: the first segment of the pathname
+ * @...: %NULL-terminated additional path segments
+ *
+ * Gets the pathname to a data file that is required for a test.
+ *
+ * This is the same as g_test_build_filename() with two differences.
+ * The first difference is that must only use this function from within
+ * a testcase function. The second difference is that you need not free
+ * the return value -- it will be automatically freed when the testcase
+ * finishes running.
+ *
+ * It is safe to use this function from a thread inside of a testcase
+ * but you must ensure that all such uses occur before the main testcase
+ * function returns (ie: it is best to ensure that all threads have been
+ * joined).
+ *
+ * Returns: the path, automatically freed at the end of the testcase
+ *
+ * Since: 2.38
+ **/
+const gchar *
+g_test_get_filename (GTestFileType file_type,
+ const gchar *first_path,
+ ...)
+{
+ gchar *result;
+ GSList *node;
+ va_list ap;
+
+ g_assert (g_test_initialized ());
+ if (test_filename_free_list == NULL)
+ g_error ("g_test_get_filename() can only be used within testcase functions");
+
+ va_start (ap, first_path);
+ result = g_test_build_filename_va (file_type, first_path, ap);
+ va_end (ap);
+
+ node = g_slist_prepend (NULL, result);
+ do
+ node->next = *test_filename_free_list;
+ while (!g_atomic_pointer_compare_and_exchange (test_filename_free_list, node->next, node));
+
+ return result;
+}
+
/* --- macros docs START --- */
/**
* g_test_add:
diff --git a/glib/glib/gtestutils.h b/glib/glib/gtestutils.h
index 3cd173c..889df44 100644
--- a/glib/glib/gtestutils.h
+++ b/glib/glib/gtestutils.h
@@ -18,13 +18,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_TEST_UTILS_H__
+#define __G_TEST_UTILS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TEST_UTILS_H__
-#define __G_TEST_UTILS_H__
-
#include <glib/gmessages.h>
#include <glib/gstring.h>
#include <glib/gerror.h>
@@ -66,32 +66,50 @@ typedef void (*GTestFixtureFunc) (gpointer fixture,
#define g_assert_error(err, dom, c) do { if (!err || (err)->domain != dom || (err)->code != c) \
g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#err, err, dom, c); } while (0)
+#define g_assert_true(expr) do { if G_LIKELY (expr) ; else \
+ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+ #expr); \
+ } while (0)
+#define g_assert_false(expr) do { if G_LIKELY (!(expr)) ; else \
+ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+ #expr); \
+ } while (0)
+#define g_assert_null(expr) do { if G_LIKELY ((expr) == NULL) ; else \
+ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+ #expr); \
+ } while (0)
#ifdef G_DISABLE_ASSERT
#define g_assert_not_reached() do { (void) 0; } while (0)
#define g_assert(expr) do { (void) 0; } while (0)
#else /* !G_DISABLE_ASSERT */
-#define g_assert_not_reached() do { g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } while (0)
+#define g_assert_not_reached() do { g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } while (0)
#define g_assert(expr) do { if G_LIKELY (expr) ; else \
g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
- #expr); } while (0)
+ #expr); \
+ } while (0)
#endif /* !G_DISABLE_ASSERT */
+GLIB_AVAILABLE_IN_ALL
int g_strcmp0 (const char *str1,
const char *str2);
/* report performance results */
+GLIB_AVAILABLE_IN_ALL
void g_test_minimized_result (double minimized_quantity,
const char *format,
...) G_GNUC_PRINTF (2, 3);
+GLIB_AVAILABLE_IN_ALL
void g_test_maximized_result (double maximized_quantity,
const char *format,
...) G_GNUC_PRINTF (2, 3);
/* initialize testing framework */
+GLIB_AVAILABLE_IN_ALL
void g_test_init (int *argc,
char ***argv,
...);
/* query testing framework config */
+#define g_test_initialized() (g_test_config_vars->test_initialized)
#define g_test_quick() (g_test_config_vars->test_quick)
#define g_test_slow() (!g_test_config_vars->test_quick)
#define g_test_thorough() (!g_test_config_vars->test_quick)
@@ -99,17 +117,39 @@ void g_test_init (int *argc,
#define g_test_verbose() (g_test_config_vars->test_verbose)
#define g_test_quiet() (g_test_config_vars->test_quiet)
#define g_test_undefined() (g_test_config_vars->test_undefined)
+GLIB_AVAILABLE_IN_2_38
+gboolean g_test_subprocess (void);
+
/* run all tests under toplevel suite (path: /) */
+GLIB_AVAILABLE_IN_ALL
int g_test_run (void);
/* hook up a test functions under test path */
+GLIB_AVAILABLE_IN_ALL
void g_test_add_func (const char *testpath,
GTestFunc test_func);
+GLIB_AVAILABLE_IN_ALL
void g_test_add_data_func (const char *testpath,
gconstpointer test_data,
GTestDataFunc test_func);
+
+GLIB_AVAILABLE_IN_2_34
+void g_test_add_data_func_full (const char *testpath,
+ gpointer test_data,
+ GTestDataFunc test_func,
+ GDestroyNotify data_free_func);
+
/* tell about failure */
+GLIB_AVAILABLE_IN_2_30
void g_test_fail (void);
+GLIB_AVAILABLE_IN_2_38
+void g_test_incomplete (const gchar *msg);
+GLIB_AVAILABLE_IN_2_38
+void g_test_skip (const gchar *msg);
+GLIB_AVAILABLE_IN_2_38
+gboolean g_test_failed (void);
+GLIB_AVAILABLE_IN_2_38
+void g_test_set_nonfatal_assertions (void);
/* hook up a test with fixture under test path */
#define g_test_add(testpath, Fixture, tdata, fsetup, ftest, fteardown) \
@@ -125,30 +165,53 @@ void g_test_fail (void);
} G_STMT_END
/* add test messages to the test report */
+GLIB_AVAILABLE_IN_ALL
void g_test_message (const char *format,
...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
void g_test_bug_base (const char *uri_pattern);
+GLIB_AVAILABLE_IN_ALL
void g_test_bug (const char *bug_uri_snippet);
/* measure test timings */
+GLIB_AVAILABLE_IN_ALL
void g_test_timer_start (void);
+GLIB_AVAILABLE_IN_ALL
double g_test_timer_elapsed (void); /* elapsed seconds */
+GLIB_AVAILABLE_IN_ALL
double g_test_timer_last (void); /* repeat last elapsed() result */
/* automatically g_free or g_object_unref upon teardown */
+GLIB_AVAILABLE_IN_ALL
void g_test_queue_free (gpointer gfree_pointer);
+GLIB_AVAILABLE_IN_ALL
void g_test_queue_destroy (GDestroyNotify destroy_func,
gpointer destroy_data);
#define g_test_queue_unref(gobject) g_test_queue_destroy (g_object_unref, gobject)
-/* test traps are guards used around forked tests */
typedef enum {
G_TEST_TRAP_SILENCE_STDOUT = 1 << 7,
G_TEST_TRAP_SILENCE_STDERR = 1 << 8,
G_TEST_TRAP_INHERIT_STDIN = 1 << 9
} GTestTrapFlags;
+
+GLIB_DEPRECATED_IN_2_38_FOR (g_test_trap_subprocess)
gboolean g_test_trap_fork (guint64 usec_timeout,
GTestTrapFlags test_trap_flags);
+
+typedef enum {
+ G_TEST_SUBPROCESS_INHERIT_STDIN = 1 << 0,
+ G_TEST_SUBPROCESS_INHERIT_STDOUT = 1 << 1,
+ G_TEST_SUBPROCESS_INHERIT_STDERR = 1 << 2
+} GTestSubprocessFlags;
+
+GLIB_AVAILABLE_IN_2_38
+void g_test_trap_subprocess (const char *test_path,
+ guint64 usec_timeout,
+ GTestSubprocessFlags test_flags);
+
+GLIB_AVAILABLE_IN_ALL
gboolean g_test_trap_has_passed (void);
+GLIB_AVAILABLE_IN_ALL
gboolean g_test_trap_reached_timeout (void);
#define g_test_trap_assert_passed() g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 0, 0)
#define g_test_trap_assert_failed() g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 1, 0)
@@ -159,45 +222,59 @@ gboolean g_test_trap_reached_timeout (void);
/* provide seed-able random numbers for tests */
#define g_test_rand_bit() (0 != (g_test_rand_int() & (1 << 15)))
+GLIB_AVAILABLE_IN_ALL
gint32 g_test_rand_int (void);
+GLIB_AVAILABLE_IN_ALL
gint32 g_test_rand_int_range (gint32 begin,
gint32 end);
+GLIB_AVAILABLE_IN_ALL
double g_test_rand_double (void);
+GLIB_AVAILABLE_IN_ALL
double g_test_rand_double_range (double range_start,
double range_end);
/* semi-internal API */
+GLIB_AVAILABLE_IN_ALL
GTestCase* g_test_create_case (const char *test_name,
gsize data_size,
gconstpointer test_data,
GTestFixtureFunc data_setup,
GTestFixtureFunc data_test,
GTestFixtureFunc data_teardown);
+GLIB_AVAILABLE_IN_ALL
GTestSuite* g_test_create_suite (const char *suite_name);
+GLIB_AVAILABLE_IN_ALL
GTestSuite* g_test_get_root (void);
+GLIB_AVAILABLE_IN_ALL
void g_test_suite_add (GTestSuite *suite,
GTestCase *test_case);
+GLIB_AVAILABLE_IN_ALL
void g_test_suite_add_suite (GTestSuite *suite,
GTestSuite *nestedsuite);
+GLIB_AVAILABLE_IN_ALL
int g_test_run_suite (GTestSuite *suite);
/* internal ABI */
+GLIB_AVAILABLE_IN_ALL
void g_test_trap_assertions (const char *domain,
const char *file,
int line,
const char *func,
guint64 assertion_flags, /* 0-pass, 1-fail, 2-outpattern, 4-errpattern */
const char *pattern);
+GLIB_AVAILABLE_IN_ALL
void g_assertion_message (const char *domain,
const char *file,
int line,
const char *func,
- const char *message) G_GNUC_NORETURN;
+ const char *message);
+GLIB_AVAILABLE_IN_ALL
void g_assertion_message_expr (const char *domain,
const char *file,
int line,
const char *func,
const char *expr) G_GNUC_NORETURN;
+GLIB_AVAILABLE_IN_ALL
void g_assertion_message_cmpstr (const char *domain,
const char *file,
int line,
@@ -205,7 +282,8 @@ void g_assertion_message_cmpstr (const char *domain,
const char *expr,
const char *arg1,
const char *cmp,
- const char *arg2) G_GNUC_NORETURN;
+ const char *arg2);
+GLIB_AVAILABLE_IN_ALL
void g_assertion_message_cmpnum (const char *domain,
const char *file,
int line,
@@ -214,7 +292,8 @@ void g_assertion_message_cmpnum (const char *domain,
long double arg1,
const char *cmp,
long double arg2,
- char numtype) G_GNUC_NORETURN;
+ char numtype);
+GLIB_AVAILABLE_IN_ALL
void g_assertion_message_error (const char *domain,
const char *file,
int line,
@@ -222,7 +301,8 @@ void g_assertion_message_error (const char *domain,
const char *expr,
const GError *error,
GQuark error_domain,
- int error_code) G_GNUC_NORETURN;
+ int error_code);
+GLIB_AVAILABLE_IN_ALL
void g_test_add_vtable (const char *testpath,
gsize data_size,
gconstpointer test_data,
@@ -250,7 +330,9 @@ typedef enum {
G_TEST_LOG_STOP_CASE, /* d:status d:nforks d:elapsed */
G_TEST_LOG_MIN_RESULT, /* s:blurb d:result */
G_TEST_LOG_MAX_RESULT, /* s:blurb d:result */
- G_TEST_LOG_MESSAGE /* s:blurb */
+ G_TEST_LOG_MESSAGE, /* s:blurb */
+ G_TEST_LOG_START_SUITE,
+ G_TEST_LOG_STOP_SUITE
} GTestLogType;
typedef struct {
@@ -266,13 +348,19 @@ typedef struct {
GSList *msgs;
} GTestLogBuffer;
+GLIB_AVAILABLE_IN_ALL
const char* g_test_log_type_name (GTestLogType log_type);
+GLIB_AVAILABLE_IN_ALL
GTestLogBuffer* g_test_log_buffer_new (void);
+GLIB_AVAILABLE_IN_ALL
void g_test_log_buffer_free (GTestLogBuffer *tbuffer);
+GLIB_AVAILABLE_IN_ALL
void g_test_log_buffer_push (GTestLogBuffer *tbuffer,
guint n_bytes,
const guint8 *bytes);
+GLIB_AVAILABLE_IN_ALL
GTestLogMsg* g_test_log_buffer_pop (GTestLogBuffer *tbuffer);
+GLIB_AVAILABLE_IN_ALL
void g_test_log_msg_free (GTestLogMsg *tmsg);
/**
@@ -292,10 +380,40 @@ typedef gboolean (*GTestLogFatalFunc) (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
void
g_test_log_set_fatal_handler (GTestLogFatalFunc log_func,
gpointer user_data);
+GLIB_AVAILABLE_IN_2_34
+void g_test_expect_message (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *pattern);
+GLIB_AVAILABLE_IN_2_34
+void g_test_assert_expected_messages_internal (const char *domain,
+ const char *file,
+ int line,
+ const char *func);
+
+typedef enum
+{
+ G_TEST_DIST,
+ G_TEST_BUILT
+} GTestFileType;
+
+GLIB_AVAILABLE_IN_2_38
+gchar * g_test_build_filename (GTestFileType file_type,
+ const gchar *first_path,
+ ...) G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_2_38
+const gchar *g_test_get_dir (GTestFileType file_type);
+GLIB_AVAILABLE_IN_2_38
+const gchar *g_test_get_filename (GTestFileType file_type,
+ const gchar *first_path,
+ ...) G_GNUC_NULL_TERMINATED;
+
+#define g_test_assert_expected_messages() g_test_assert_expected_messages_internal (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC)
+
G_END_DECLS
#endif /* __G_TEST_UTILS_H__ */
diff --git a/glib/glib/gthread-posix.c b/glib/glib/gthread-posix.c
index 3f74aa4..c7b68a0 100644
--- a/glib/glib/gthread-posix.c
+++ b/glib/glib/gthread-posix.c
@@ -66,6 +66,9 @@
#ifdef HAVE_SYS_PRCTL_H
#include <sys/prctl.h>
#endif
+#ifdef G_OS_WIN32
+#include <windows.h>
+#endif
static void
g_thread_abort (gint status,
@@ -90,10 +93,12 @@ g_mutex_impl_new (void)
g_thread_abort (errno, "malloc");
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
- pthread_mutexattr_t attr;
- pthread_mutexattr_init (&attr);
- pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
- pattr = &attr;
+ {
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init (&attr);
+ pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
+ pattr = &attr;
+ }
#endif
if G_UNLIKELY ((status = pthread_mutex_init (mutex, pattr)) != 0)
@@ -116,7 +121,7 @@ g_mutex_impl_free (pthread_mutex_t *mutex)
static pthread_mutex_t *
g_mutex_get_impl (GMutex *mutex)
{
- pthread_mutex_t *impl = mutex->p;
+ pthread_mutex_t *impl = g_atomic_pointer_get (&mutex->p);
if G_UNLIKELY (impl == NULL)
{
@@ -139,7 +144,7 @@ g_mutex_get_impl (GMutex *mutex)
* This function is useful to initialize a mutex that has been
* allocated on the stack, or as part of a larger structure.
* It is not necessary to initialize a mutex that has been
- * created that has been statically allocated.
+ * statically allocated.
*
* |[
* typedef struct {
@@ -285,7 +290,7 @@ g_rec_mutex_impl_free (pthread_mutex_t *mutex)
static pthread_mutex_t *
g_rec_mutex_get_impl (GRecMutex *rec_mutex)
{
- pthread_mutex_t *impl = rec_mutex->p;
+ pthread_mutex_t *impl = g_atomic_pointer_get (&rec_mutex->p);
if G_UNLIKELY (impl == NULL)
{
@@ -445,7 +450,7 @@ g_rw_lock_impl_free (pthread_rwlock_t *rwlock)
static pthread_rwlock_t *
g_rw_lock_get_impl (GRWLock *lock)
{
- pthread_rwlock_t *impl = lock->p;
+ pthread_rwlock_t *impl = g_atomic_pointer_get (&lock->p);
if G_UNLIKELY (impl == NULL)
{
@@ -662,7 +667,7 @@ g_cond_impl_free (pthread_cond_t *cond)
static pthread_cond_t *
g_cond_get_impl (GCond *cond)
{
- pthread_cond_t *impl = cond->p;
+ pthread_cond_t *impl = g_atomic_pointer_get (&cond->p);
if G_UNLIKELY (impl == NULL)
{
@@ -725,6 +730,8 @@ g_cond_clear (GCond *cond)
* @mutex: a #GMutex that is currently locked
*
* Atomically releases @mutex and waits until @cond is signalled.
+ * When this function returns, @mutex is locked again and owned by the
+ * calling thread.
*
* When using condition variables, it is possible that a spurious wakeup
* may occur (ie: g_cond_wait() returns even though g_cond_signal() was
@@ -852,8 +859,17 @@ g_cond_wait_until (GCond *cond,
ts.tv_sec = end_time / 1000000;
ts.tv_nsec = (end_time % 1000000) * 1000;
+#if defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
+ if ((status = pthread_cond_timedwait_monotonic (g_cond_get_impl (cond), g_mutex_get_impl (mutex), &ts)) == 0)
+ return TRUE;
+#elif defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC_NP)
+ if ((status = pthread_cond_timedwait_monotonic_np (g_cond_get_impl (cond), g_mutex_get_impl (mutex), &ts)) == 0)
+ return TRUE;
+#else
+ /* Pray that the cond is actually using the monotonic clock */
if ((status = pthread_cond_timedwait (g_cond_get_impl (cond), g_mutex_get_impl (mutex), &ts)) == 0)
return TRUE;
+#endif
if G_UNLIKELY (status != ETIMEDOUT)
g_thread_abort (status, "pthread_cond_timedwait");
@@ -969,7 +985,7 @@ g_private_impl_free (pthread_key_t *key)
static pthread_key_t *
g_private_get_impl (GPrivate *key)
{
- pthread_key_t *impl = key->p;
+ pthread_key_t *impl = g_atomic_pointer_get (&key->p);
if G_UNLIKELY (impl == NULL)
{
@@ -1172,8 +1188,10 @@ void
g_system_thread_set_name (const gchar *name)
{
#ifdef HAVE_SYS_PRCTL_H
+#ifdef PR_SET_NAME
prctl (PR_SET_NAME, name, 0, 0, 0, 0);
#endif
+#endif
}
/* {{{1 Epilogue */
diff --git a/glib/glib/gthread-win32.c b/glib/glib/gthread-win32.c
index 5a9ac97..c54f2bd 100644
--- a/glib/glib/gthread-win32.c
+++ b/glib/glib/gthread-win32.c
@@ -43,6 +43,7 @@
#include "config.h"
#include "glib.h"
+#include "glib-init.h"
#include "gthread.h"
#include "gthreadprivate.h"
#include "gslice.h"
@@ -982,7 +983,7 @@ g_thread_lookup_native_funcs (void)
return TRUE;
}
-G_GNUC_INTERNAL void
+void
g_thread_win32_init (void)
{
if (!g_thread_lookup_native_funcs ())
@@ -991,7 +992,7 @@ g_thread_win32_init (void)
InitializeCriticalSection (&g_private_lock);
}
-G_GNUC_INTERNAL void
+void
g_thread_win32_thread_detach (void)
{
gboolean dtors_called;
diff --git a/glib/glib/gthread.c b/glib/glib/gthread.c
index c1d06ec..c4114aa 100644
--- a/glib/glib/gthread.c
+++ b/glib/glib/gthread.c
@@ -215,10 +215,11 @@
/**
* G_TRYLOCK:
* @name: the name of the lock
- * @Returns: %TRUE, if the lock could be locked.
*
* Works like g_mutex_trylock(), but for a lock defined with
* #G_LOCK_DEFINE.
+ *
+ * Returns: %TRUE, if the lock could be locked.
*/
/**
@@ -518,11 +519,7 @@
*
* The error domain of the GLib thread subsystem.
**/
-GQuark
-g_thread_error_quark (void)
-{
- return g_quark_from_static_string ("g_thread_error");
-}
+G_DEFINE_QUARK (g_thread_error, g_thread_error)
/* Local Data {{{1 -------------------------------------------------------- */
@@ -805,7 +802,7 @@ g_thread_proxy (gpointer data)
/**
* g_thread_new:
- * @name: a name for the new thread
+ * @name: (allow-none): an (optional) name for the new thread
* @func: a function to execute in the new thread
* @data: an argument to supply to the new thread
*
@@ -816,6 +813,7 @@ g_thread_proxy (gpointer data)
* with g_thread_join().
*
* The @name can be useful for discriminating threads in a debugger.
+ * It is not used for other purposes and does not have to be unique.
* Some systems restrict the length of @name to 16 bytes.
*
* If the thread can not be created the program aborts. See
@@ -846,7 +844,7 @@ g_thread_new (const gchar *name,
/**
* g_thread_try_new:
- * @name: a name for the new thread
+ * @name: (allow-none): an (optional) name for the new thread
* @func: a function to execute in the new thread
* @data: an argument to supply to the new thread
* @error: return location for error, or %NULL
@@ -1010,5 +1008,61 @@ g_thread_self (void)
return (GThread*) thread;
}
+/**
+ * g_get_num_processors:
+ *
+ * Determine the approximate number of threads that the system will
+ * schedule simultaneously for this process. This is intended to be
+ * used as a parameter to g_thread_pool_new() for CPU bound tasks and
+ * similar cases.
+ *
+ * Returns: Number of schedulable threads, always greater than 0
+ *
+ * Since: 2.36
+ */
+guint
+g_get_num_processors (void)
+{
+#ifdef G_OS_WIN32
+ DWORD_PTR process_cpus;
+ DWORD_PTR system_cpus;
+
+ if (GetProcessAffinityMask (GetCurrentProcess (),
+ &process_cpus, &system_cpus))
+ {
+ unsigned int count;
+
+ for (count = 0; process_cpus != 0; process_cpus >>= 1)
+ if (process_cpus & 1)
+ count++;
+
+ if (count > 0)
+ return count;
+ }
+#elif defined(HAVE_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN)
+ {
+ int count;
+
+ count = sysconf (_SC_NPROCESSORS_ONLN);
+ if (count > 0)
+ return count;
+ }
+#elif defined HW_NCPU
+ {
+ int mib[2], count = 0;
+ size_t len;
+
+ mib[0] = CTL_HW;
+ mib[1] = HW_NCPU;
+ len = sizeof(count);
+
+ if (sysctl (mib, 2, &count, &len, NULL, 0) == 0 && count > 0)
+ return count;
+ }
+#endif
+
+ return 1; /* Fallback */
+}
+
/* Epilogue {{{1 */
/* vim: set foldmethod=marker: */
diff --git a/glib/glib/gthread.h b/glib/glib/gthread.h
index fc927da..43c7891 100644
--- a/glib/glib/gthread.h
+++ b/glib/glib/gthread.h
@@ -24,19 +24,20 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_THREAD_H__
+#define __G_THREAD_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_THREAD_H__
-#define __G_THREAD_H__
-
#include <glib/gatomic.h>
#include <glib/gerror.h>
G_BEGIN_DECLS
#define G_THREAD_ERROR g_thread_error_quark ()
+GLIB_AVAILABLE_IN_ALL
GQuark g_thread_error_quark (void);
typedef enum
@@ -137,62 +138,100 @@ struct _GOnce
# define G_TRYLOCK(name) g_mutex_trylock (&G_LOCK_NAME (name))
#endif /* !G_DEBUG_LOCKS */
+GLIB_AVAILABLE_IN_2_32
GThread * g_thread_ref (GThread *thread);
+GLIB_AVAILABLE_IN_2_32
void g_thread_unref (GThread *thread);
+GLIB_AVAILABLE_IN_2_32
GThread * g_thread_new (const gchar *name,
GThreadFunc func,
gpointer data);
+GLIB_AVAILABLE_IN_2_32
GThread * g_thread_try_new (const gchar *name,
GThreadFunc func,
gpointer data,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GThread * g_thread_self (void);
+GLIB_AVAILABLE_IN_ALL
void g_thread_exit (gpointer retval);
+GLIB_AVAILABLE_IN_ALL
gpointer g_thread_join (GThread *thread);
+GLIB_AVAILABLE_IN_ALL
void g_thread_yield (void);
+GLIB_AVAILABLE_IN_2_32
void g_mutex_init (GMutex *mutex);
+GLIB_AVAILABLE_IN_2_32
void g_mutex_clear (GMutex *mutex);
+GLIB_AVAILABLE_IN_ALL
void g_mutex_lock (GMutex *mutex);
+GLIB_AVAILABLE_IN_ALL
gboolean g_mutex_trylock (GMutex *mutex);
+GLIB_AVAILABLE_IN_ALL
void g_mutex_unlock (GMutex *mutex);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_init (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_clear (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_writer_lock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
gboolean g_rw_lock_writer_trylock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_writer_unlock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_reader_lock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
gboolean g_rw_lock_reader_trylock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rw_lock_reader_unlock (GRWLock *rw_lock);
+GLIB_AVAILABLE_IN_2_32
void g_rec_mutex_init (GRecMutex *rec_mutex);
+GLIB_AVAILABLE_IN_2_32
void g_rec_mutex_clear (GRecMutex *rec_mutex);
+GLIB_AVAILABLE_IN_2_32
void g_rec_mutex_lock (GRecMutex *rec_mutex);
+GLIB_AVAILABLE_IN_2_32
gboolean g_rec_mutex_trylock (GRecMutex *rec_mutex);
+GLIB_AVAILABLE_IN_2_32
void g_rec_mutex_unlock (GRecMutex *rec_mutex);
+GLIB_AVAILABLE_IN_2_32
void g_cond_init (GCond *cond);
+GLIB_AVAILABLE_IN_2_32
void g_cond_clear (GCond *cond);
+GLIB_AVAILABLE_IN_ALL
void g_cond_wait (GCond *cond,
GMutex *mutex);
+GLIB_AVAILABLE_IN_ALL
void g_cond_signal (GCond *cond);
+GLIB_AVAILABLE_IN_ALL
void g_cond_broadcast (GCond *cond);
+GLIB_AVAILABLE_IN_2_32
gboolean g_cond_wait_until (GCond *cond,
GMutex *mutex,
gint64 end_time);
+GLIB_AVAILABLE_IN_ALL
gpointer g_private_get (GPrivate *key);
+GLIB_AVAILABLE_IN_ALL
void g_private_set (GPrivate *key,
gpointer value);
+GLIB_AVAILABLE_IN_2_32
void g_private_replace (GPrivate *key,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
gpointer g_once_impl (GOnce *once,
GThreadFunc func,
gpointer arg);
+GLIB_AVAILABLE_IN_ALL
gboolean g_once_init_enter (volatile void *location);
+GLIB_AVAILABLE_IN_ALL
void g_once_init_leave (volatile void *location,
gsize result);
@@ -226,6 +265,9 @@ void g_once_init_leave (volatile void *location,
(g_once_init_leave((location), (gsize) (result)))
#endif
+GLIB_AVAILABLE_IN_2_36
+guint g_get_num_processors (void);
+
G_END_DECLS
#endif /* __G_THREAD_H__ */
diff --git a/glib/glib/gthreadpool.c b/glib/glib/gthreadpool.c
index de5b9de..78684ab 100644
--- a/glib/glib/gthreadpool.c
+++ b/glib/glib/gthreadpool.c
@@ -110,9 +110,9 @@ static gint wakeup_thread_serial = 0;
/* Here all unused threads are waiting */
static GAsyncQueue *unused_thread_queue = NULL;
static gint unused_threads = 0;
-static gint max_unused_threads = 0;
+static gint max_unused_threads = 2;
static gint kill_unused_threads = 0;
-static guint max_idle_time = 0;
+static guint max_idle_time = 15 * 1000;
static void g_thread_pool_queue_push_unlocked (GRealThreadPool *pool,
gpointer data);
@@ -829,6 +829,8 @@ g_thread_pool_wakeup_and_stop_all (GRealThreadPool *pool)
* Sets the maximal number of unused threads to @max_threads.
* If @max_threads is -1, no limit is imposed on the number
* of unused threads.
+ *
+ * The default value is 2.
*/
void
g_thread_pool_set_max_unused_threads (gint max_threads)
@@ -964,8 +966,7 @@ g_thread_pool_set_sort_function (GThreadPool *pool,
*
* By setting @interval to 0, idle threads will not be stopped.
*
- * This function makes use of g_async_queue_timed_pop () using
- * @interval.
+ * The default value is 15000 (15 seconds).
*
* Since: 2.10
*/
diff --git a/glib/glib/gthreadpool.h b/glib/glib/gthreadpool.h
index 3a1f298..c05d700 100644
--- a/glib/glib/gthreadpool.h
+++ b/glib/glib/gthreadpool.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_THREADPOOL_H__
+#define __G_THREADPOOL_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_THREADPOOL_H__
-#define __G_THREADPOOL_H__
-
#include <glib/gthread.h>
G_BEGIN_DECLS
@@ -47,32 +47,46 @@ struct _GThreadPool
gboolean exclusive;
};
+GLIB_AVAILABLE_IN_ALL
GThreadPool * g_thread_pool_new (GFunc func,
gpointer user_data,
gint max_threads,
gboolean exclusive,
GError **error);
+GLIB_AVAILABLE_IN_ALL
void g_thread_pool_free (GThreadPool *pool,
gboolean immediate,
gboolean wait_);
+GLIB_AVAILABLE_IN_ALL
gboolean g_thread_pool_push (GThreadPool *pool,
gpointer data,
GError **error);
+GLIB_AVAILABLE_IN_ALL
guint g_thread_pool_unprocessed (GThreadPool *pool);
+GLIB_AVAILABLE_IN_ALL
void g_thread_pool_set_sort_function (GThreadPool *pool,
GCompareDataFunc func,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gboolean g_thread_pool_set_max_threads (GThreadPool *pool,
gint max_threads,
GError **error);
+GLIB_AVAILABLE_IN_ALL
gint g_thread_pool_get_max_threads (GThreadPool *pool);
+GLIB_AVAILABLE_IN_ALL
guint g_thread_pool_get_num_threads (GThreadPool *pool);
+GLIB_AVAILABLE_IN_ALL
void g_thread_pool_set_max_unused_threads (gint max_threads);
+GLIB_AVAILABLE_IN_ALL
gint g_thread_pool_get_max_unused_threads (void);
+GLIB_AVAILABLE_IN_ALL
guint g_thread_pool_get_num_unused_threads (void);
+GLIB_AVAILABLE_IN_ALL
void g_thread_pool_stop_unused_threads (void);
+GLIB_AVAILABLE_IN_ALL
void g_thread_pool_set_max_idle_time (guint interval);
+GLIB_AVAILABLE_IN_ALL
guint g_thread_pool_get_max_idle_time (void);
G_END_DECLS
diff --git a/glib/glib/gthreadprivate.h b/glib/glib/gthreadprivate.h
index 6b974de..15584f4 100644
--- a/glib/glib/gthreadprivate.h
+++ b/glib/glib/gthreadprivate.h
@@ -37,24 +37,18 @@ struct _GRealThread
};
/* system thread implementation (gthread-posix.c, gthread-win32.c) */
-G_GNUC_INTERNAL
void g_system_thread_wait (GRealThread *thread);
-G_GNUC_INTERNAL
GRealThread * g_system_thread_new (GThreadFunc func,
gulong stack_size,
GError **error);
-G_GNUC_INTERNAL
void g_system_thread_free (GRealThread *thread);
-G_GNUC_INTERNAL
void g_system_thread_exit (void);
-G_GNUC_INTERNAL
void g_system_thread_set_name (const gchar *name);
/* gthread.c */
-G_GNUC_INTERNAL
GThread * g_thread_new_internal (const gchar *name,
GThreadFunc proxy,
GThreadFunc func,
@@ -62,7 +56,6 @@ GThread * g_thread_new_internal (const gchar *name,
gsize stack_size,
GError **error);
-G_GNUC_INTERNAL
gpointer g_thread_proxy (gpointer thread);
#endif /* __G_THREADPRIVATE_H__ */
diff --git a/glib/glib/gtimer.c b/glib/glib/gtimer.c
index 6e962b4..a45c3cf 100644
--- a/glib/glib/gtimer.c
+++ b/glib/glib/gtimer.c
@@ -82,10 +82,11 @@ struct _GTimer
/**
* g_timer_new:
- * @Returns: a new #GTimer.
*
* Creates a new timer, and starts timing (i.e. g_timer_start() is
* implicitly called for you).
+ *
+ * Returns: a new #GTimer.
**/
GTimer*
g_timer_new (void)
@@ -204,8 +205,6 @@ g_timer_continue (GTimer *timer)
* @microseconds: return location for the fractional part of seconds
* elapsed, in microseconds (that is, the total number
* of microseconds elapsed, modulo 1000000), or %NULL
- * @Returns: seconds elapsed as a floating point value, including any
- * fractional part.
*
* If @timer has been started but not stopped, obtains the time since
* the timer was started. If @timer has been stopped, obtains the
@@ -213,6 +212,9 @@ g_timer_continue (GTimer *timer)
* stopped. The return value is the number of seconds elapsed,
* including any fractional part. The @microseconds out parameter is
* essentially useless.
+ *
+ * Returns: seconds elapsed as a floating point value, including any
+ * fractional part.
**/
gdouble
g_timer_elapsed (GTimer *timer,
diff --git a/glib/glib/gtimer.h b/glib/glib/gtimer.h
index b927fc3..702e002 100644
--- a/glib/glib/gtimer.h
+++ b/glib/glib/gtimer.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_TIMER_H__
+#define __G_TIMER_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TIMER_H__
-#define __G_TIMER_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -43,21 +43,32 @@ typedef struct _GTimer GTimer;
#define G_USEC_PER_SEC 1000000
+GLIB_AVAILABLE_IN_ALL
GTimer* g_timer_new (void);
+GLIB_AVAILABLE_IN_ALL
void g_timer_destroy (GTimer *timer);
+GLIB_AVAILABLE_IN_ALL
void g_timer_start (GTimer *timer);
+GLIB_AVAILABLE_IN_ALL
void g_timer_stop (GTimer *timer);
+GLIB_AVAILABLE_IN_ALL
void g_timer_reset (GTimer *timer);
+GLIB_AVAILABLE_IN_ALL
void g_timer_continue (GTimer *timer);
+GLIB_AVAILABLE_IN_ALL
gdouble g_timer_elapsed (GTimer *timer,
gulong *microseconds);
+GLIB_AVAILABLE_IN_ALL
void g_usleep (gulong microseconds);
+GLIB_AVAILABLE_IN_ALL
void g_time_val_add (GTimeVal *time_,
glong microseconds);
+GLIB_AVAILABLE_IN_ALL
gboolean g_time_val_from_iso8601 (const gchar *iso_date,
GTimeVal *time_);
+GLIB_AVAILABLE_IN_ALL
gchar* g_time_val_to_iso8601 (GTimeVal *time_) G_GNUC_MALLOC;
G_END_DECLS
diff --git a/glib/glib/gtimezone.c b/glib/glib/gtimezone.c
index e513f3b..f93c825 100644
--- a/glib/glib/gtimezone.c
+++ b/glib/glib/gtimezone.c
@@ -21,6 +21,8 @@
/* Prologue {{{1 */
+#include "config.h"
+
#include "gtimezone.h"
#include <string.h>
@@ -35,6 +37,13 @@
#include "gthread.h"
#include "gbytes.h"
#include "gslice.h"
+#include "gdatetime.h"
+#include "gdate.h"
+
+#ifdef G_OS_WIN32
+#define STRICT
+#include <windows.h>
+#endif
/**
* SECTION:timezone
@@ -67,13 +76,13 @@
/**
* GTimeZone:
*
- * #GDateTime is an opaque structure whose members cannot be accessed
+ * #GTimeZone is an opaque structure whose members cannot be accessed
* directly.
*
* Since: 2.26
**/
-/* zoneinfo file format {{{1 */
+/* IANA zoneinfo file format {{{1 */
/* unaligned */
typedef struct { gchar bytes[8]; } gint64_be;
@@ -92,6 +101,7 @@ static inline guint32 guint32_from_be (const guint32_be be) {
guint32 tmp; memcpy (&tmp, &be, sizeof tmp); return GUINT32_FROM_BE (tmp);
}
+/* The layout of an IANA timezone file header */
struct tzhead
{
gchar tzh_magic[4];
@@ -113,26 +123,80 @@ struct ttinfo
guint8 tt_abbrind;
};
-/* GTimeZone structure and lifecycle {{{1 */
-struct _GTimeZone
+/* A Transition Date structure for TZ Rules, an intermediate structure
+ for parsing MSWindows and Environment-variable time zones. It
+ Generalizes MSWindows's SYSTEMTIME struct.
+ */
+typedef struct
{
- gchar *name;
-
- GBytes *zoneinfo;
+ gint year;
+ gint mon;
+ gint mday;
+ gint wday;
+ gint week;
+ gint hour;
+ gint min;
+ gint sec;
+} TimeZoneDate;
+
+/* POSIX Timezone abbreviations are typically 3 or 4 characters, but
+ Microsoft uses 32-character names. We'll use one larger to ensure
+ we have room for the terminating \0.
+ */
+#define NAME_SIZE 33
- const struct tzhead *header;
- const struct ttinfo *infos;
- const gint64_be *trans;
- const guint8 *indices;
- const gchar *abbrs;
- gint timecnt;
+/* A MSWindows-style time zone transition rule. Generalizes the
+ MSWindows TIME_ZONE_INFORMATION struct. Also used to compose time
+ zones from tzset-style identifiers.
+ */
+typedef struct
+{
+ gint start_year;
+ gint32 std_offset;
+ gint32 dlt_offset;
+ TimeZoneDate dlt_start;
+ TimeZoneDate dlt_end;
+ gchar std_name[NAME_SIZE];
+ gchar dlt_name[NAME_SIZE];
+} TimeZoneRule;
+
+/* GTimeZone's internal representation of a Daylight Savings (Summer)
+ time interval.
+ */
+typedef struct
+{
+ gint32 gmt_offset;
+ gboolean is_dst;
+ gboolean is_standard;
+ gboolean is_gmt;
+ gchar *abbrev;
+} TransitionInfo;
+
+/* GTimeZone's representation of a transition time to or from Daylight
+ Savings (Summer) time and Standard time for the zone. */
+typedef struct
+{
+ gint64 time;
+ gint info_index;
+} Transition;
+/* GTimeZone structure */
+struct _GTimeZone
+{
+ gchar *name;
+ GArray *t_info; /* Array of TransitionInfo */
+ GArray *transitions; /* Array of Transition */
gint ref_count;
};
G_LOCK_DEFINE_STATIC (time_zones);
static GHashTable/*<string?, GTimeZone>*/ *time_zones;
+#define MIN_TZYEAR 1916 /* Daylight Savings started in WWI */
+#define MAX_TZYEAR 2999 /* And it's not likely ever to go away, but
+ there's no point in getting carried
+ away. */
+
/**
* g_time_zone_unref:
* @tz: a #GTimeZone
@@ -168,9 +232,18 @@ again:
G_UNLOCK(time_zones);
}
- if (tz->zoneinfo)
- g_bytes_unref (tz->zoneinfo);
-
+ if (tz->t_info != NULL)
+ {
+ gint idx;
+ for (idx = 0; idx < tz->t_info->len; idx++)
+ {
+ TransitionInfo *info = &g_array_index (tz->t_info, TransitionInfo, idx);
+ g_free (info->abbrev);
+ }
+ g_array_free (tz->t_info, TRUE);
+ }
+ if (tz->transitions != NULL)
+ g_array_free (tz->transitions, TRUE);
g_free (tz->name);
g_slice_free (GTimeZone, tz);
@@ -204,27 +277,51 @@ g_time_zone_ref (GTimeZone *tz)
/* fake zoneinfo creation (for RFC3339/ISO 8601 timezones) {{{1 */
/*
- * parses strings of the form 'hh' 'hhmm' or 'hh:mm' where:
- * - hh is 00 to 23
+ * parses strings of the form h or hh[[:]mm[[[:]ss]]] where:
+ * - h[h] is 0 to 23
* - mm is 00 to 59
+ * - ss is 00 to 59
*/
static gboolean
parse_time (const gchar *time_,
gint32 *offset)
{
- if (*time_ < '0' || '2' < *time_)
+ if (*time_ < '0' || '9' < *time_)
return FALSE;
- *offset = 10 * 60 * 60 * (*time_++ - '0');
+ *offset = 60 * 60 * (*time_++ - '0');
- if (*time_ < '0' || '9' < *time_)
+ if (*time_ == '\0')
+ return TRUE;
+
+ if (*time_ != ':')
+ {
+ if (*time_ < '0' || '9' < *time_)
+ return FALSE;
+
+ *offset *= 10;
+ *offset += 60 * 60 * (*time_++ - '0');
+
+ if (*offset > 23 * 60 * 60)
+ return FALSE;
+
+ if (*time_ == '\0')
+ return TRUE;
+ }
+
+ if (*time_ == ':')
+ time_++;
+
+ if (*time_ < '0' || '5' < *time_)
return FALSE;
- *offset += 60 * 60 * (*time_++ - '0');
+ *offset += 10 * 60 * (*time_++ - '0');
- if (*offset > 23 * 60 * 60)
+ if (*time_ < '0' || '9' < *time_)
return FALSE;
+ *offset += 60 * (*time_++ - '0');
+
if (*time_ == '\0')
return TRUE;
@@ -234,12 +331,12 @@ parse_time (const gchar *time_,
if (*time_ < '0' || '5' < *time_)
return FALSE;
- *offset += 10 * 60 * (*time_++ - '0');
+ *offset += 10 * (*time_++ - '0');
if (*time_ < '0' || '9' < *time_)
return FALSE;
- *offset += 60 * (*time_++ - '0');
+ *offset += *time_++ - '0';
return *time_ == '\0';
}
@@ -248,6 +345,15 @@ static gboolean
parse_constant_offset (const gchar *name,
gint32 *offset)
{
+ if (g_strcmp0 (name, "UTC") == 0)
+ {
+ *offset = 0;
+ return TRUE;
+ }
+
+ if (*name >= '0' && '9' >= *name)
+ return parse_time (name, offset);
+
switch (*name++)
{
case 'Z':
@@ -269,34 +375,924 @@ parse_constant_offset (const gchar *name,
}
}
-static GBytes *
-zone_for_constant_offset (const gchar *name)
+static void
+zone_for_constant_offset (GTimeZone *gtz, const gchar *name)
{
- const gchar fake_zoneinfo_headers[] =
- "TZif" "2..." "...." "...." "...."
- "\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\0"
- "TZif" "2..." "...." "...." "...."
- "\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\0" "\0\0\0\1" "\0\0\0\7";
- struct {
- struct tzhead headers[2];
- struct ttinfo info;
- gchar abbr[8];
- } *fake;
gint32 offset;
+ TransitionInfo info;
if (name == NULL || !parse_constant_offset (name, &offset))
- return NULL;
+ return;
- offset = GINT32_TO_BE (offset);
+ info.gmt_offset = offset;
+ info.is_dst = FALSE;
+ info.is_standard = TRUE;
+ info.is_gmt = TRUE;
+ info.abbrev = g_strdup (name);
- fake = g_malloc (sizeof *fake);
- memcpy (fake, fake_zoneinfo_headers, sizeof fake_zoneinfo_headers);
- memcpy (&fake->info.tt_gmtoff, &offset, sizeof offset);
- fake->info.tt_isdst = FALSE;
- fake->info.tt_abbrind = 0;
- strcpy (fake->abbr, name);
- return g_bytes_new_take (fake, sizeof *fake);
+ gtz->t_info = g_array_sized_new (FALSE, TRUE, sizeof (TransitionInfo), 1);
+ g_array_append_val (gtz->t_info, info);
+
+ /* Constant offset, no transitions */
+ gtz->transitions = NULL;
+}
+
+#ifdef G_OS_UNIX
+static GBytes*
+zone_info_unix (const gchar *identifier)
+{
+ gchar *filename;
+ GMappedFile *file = NULL;
+ GBytes *zoneinfo = NULL;
+
+ /* identifier can be a relative or absolute path name;
+ if relative, it is interpreted starting from /usr/share/zoneinfo
+ while the POSIX standard says it should start with :,
+ glibc allows both syntaxes, so we should too */
+ if (identifier != NULL)
+ {
+ const gchar *tzdir;
+
+ tzdir = getenv ("TZDIR");
+ if (tzdir == NULL)
+ tzdir = "/usr/share/zoneinfo";
+
+ if (*identifier == ':')
+ identifier ++;
+
+ if (g_path_is_absolute (identifier))
+ filename = g_strdup (identifier);
+ else
+ filename = g_build_filename (tzdir, identifier, NULL);
+ }
+ else
+ filename = g_strdup ("/etc/localtime");
+
+ file = g_mapped_file_new (filename, FALSE, NULL);
+ if (file != NULL)
+ {
+ zoneinfo = g_bytes_new_with_free_func (g_mapped_file_get_contents (file),
+ g_mapped_file_get_length (file),
+ (GDestroyNotify)g_mapped_file_unref,
+ g_mapped_file_ref (file));
+ g_mapped_file_unref (file);
+ }
+ g_free (filename);
+ return zoneinfo;
+}
+
+static void
+init_zone_from_iana_info (GTimeZone *gtz, GBytes *zoneinfo)
+{
+ gsize size;
+ guint index;
+ guint32 time_count, type_count, leap_count, isgmt_count;
+ guint32 isstd_count, char_count ;
+ guint8 *tz_transitions, *tz_type_index, *tz_ttinfo;
+ guint8 *tz_leaps, *tz_isgmt, *tz_isstd;
+ guint8 *tz_abbrs;
+ gsize timesize = sizeof (gint32), countsize = sizeof (gint32);
+ const struct tzhead *header = g_bytes_get_data (zoneinfo, &size);
+
+ g_return_if_fail (size >= sizeof (struct tzhead) &&
+ memcmp (header, "TZif", 4) == 0);
+
+ if (header->tzh_version == '2')
+ {
+ /* Skip ahead to the newer 64-bit data if it's available. */
+ header = (const struct tzhead *)
+ (((const gchar *) (header + 1)) +
+ guint32_from_be(header->tzh_ttisgmtcnt) +
+ guint32_from_be(header->tzh_ttisstdcnt) +
+ 8 * guint32_from_be(header->tzh_leapcnt) +
+ 5 * guint32_from_be(header->tzh_timecnt) +
+ 6 * guint32_from_be(header->tzh_typecnt) +
+ guint32_from_be(header->tzh_charcnt));
+ timesize = sizeof (gint64);
+ }
+ time_count = guint32_from_be(header->tzh_timecnt);
+ type_count = guint32_from_be(header->tzh_typecnt);
+ leap_count = guint32_from_be(header->tzh_leapcnt);
+ isgmt_count = guint32_from_be(header->tzh_ttisgmtcnt);
+ isstd_count = guint32_from_be(header->tzh_ttisstdcnt);
+ char_count = guint32_from_be(header->tzh_charcnt);
+
+ g_assert (type_count == isgmt_count);
+ g_assert (type_count == isstd_count);
+
+ tz_transitions = ((guint8 *) (header) + sizeof (*header));
+ tz_type_index = tz_transitions + timesize * time_count;
+ tz_ttinfo = tz_type_index + time_count;
+ tz_abbrs = tz_ttinfo + sizeof (struct ttinfo) * type_count;
+ tz_leaps = tz_abbrs + char_count;
+ tz_isstd = tz_leaps + (timesize + countsize) * leap_count;
+ tz_isgmt = tz_isstd + isstd_count;
+
+ gtz->t_info = g_array_sized_new (FALSE, TRUE, sizeof (TransitionInfo),
+ type_count);
+ gtz->transitions = g_array_sized_new (FALSE, TRUE, sizeof (Transition),
+ time_count);
+
+ for (index = 0; index < type_count; index++)
+ {
+ TransitionInfo t_info;
+ struct ttinfo info = ((struct ttinfo*)tz_ttinfo)[index];
+ t_info.gmt_offset = gint32_from_be (info.tt_gmtoff);
+ t_info.is_dst = info.tt_isdst ? TRUE : FALSE;
+ t_info.is_standard = tz_isstd[index] ? TRUE : FALSE;
+ t_info.is_gmt = tz_isgmt[index] ? TRUE : FALSE;
+ t_info.abbrev = g_strdup ((gchar *) &tz_abbrs[info.tt_abbrind]);
+ g_array_append_val (gtz->t_info, t_info);
+ }
+
+ for (index = 0; index < time_count; index++)
+ {
+ Transition trans;
+ if (header->tzh_version == '2')
+ trans.time = gint64_from_be (((gint64_be*)tz_transitions)[index]);
+ else
+ trans.time = gint32_from_be (((gint32_be*)tz_transitions)[index]);
+ trans.info_index = tz_type_index[index];
+ g_assert (trans.info_index >= 0);
+ g_assert (trans.info_index < gtz->t_info->len);
+ g_array_append_val (gtz->transitions, trans);
+ }
+}
+
+#elif defined (G_OS_WIN32)
+
+static void
+copy_windows_systemtime (SYSTEMTIME *s_time, TimeZoneDate *tzdate)
+{
+ tzdate->sec = s_time->wSecond;
+ tzdate->min = s_time->wMinute;
+ tzdate->hour = s_time->wHour;
+ tzdate->mon = s_time->wMonth;
+ tzdate->year = s_time->wYear;
+ tzdate->wday = s_time->wDayOfWeek ? s_time->wDayOfWeek : 7;
+
+ if (s_time->wYear)
+ {
+ tzdate->mday = s_time->wDay;
+ tzdate->wday = 0;
+ }
+ else
+ tzdate->week = s_time->wDay;
+}
+
+/* UTC = local time + bias while local time = UTC + offset */
+static void
+rule_from_windows_time_zone_info (TimeZoneRule *rule,
+ TIME_ZONE_INFORMATION *tzi)
+{
+ /* Set offset */
+ if (tzi->StandardDate.wMonth)
+ {
+ rule->std_offset = -(tzi->Bias + tzi->StandardBias) * 60;
+ rule->dlt_offset = -(tzi->Bias + tzi->DaylightBias) * 60;
+ copy_windows_systemtime (&(tzi->DaylightDate), &(rule->dlt_start));
+
+ copy_windows_systemtime (&(tzi->StandardDate), &(rule->dlt_end));
+
+ }
+
+ else
+ {
+ rule->std_offset = -tzi->Bias * 60;
+ rule->dlt_start.mon = 0;
+ }
+ strncpy (rule->std_name, (gchar*)tzi->StandardName, NAME_SIZE - 1);
+ strncpy (rule->dlt_name, (gchar*)tzi->DaylightName, NAME_SIZE - 1);
+}
+
+static gchar*
+windows_default_tzname (void)
+{
+ const gchar *subkey =
+ "SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation";
+ HKEY key;
+ gchar *key_name = NULL;
+ if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey, 0,
+ KEY_QUERY_VALUE, &key) == ERROR_SUCCESS)
+ {
+ DWORD size = 0;
+ if (RegQueryValueExA (key, "TimeZoneKeyName", NULL, NULL,
+ NULL, &size) == ERROR_SUCCESS)
+ {
+ key_name = g_malloc ((gint)size);
+ if (RegQueryValueExA (key, "TimeZoneKeyName", NULL, NULL,
+ (LPBYTE)key_name, &size) != ERROR_SUCCESS)
+ {
+ g_free (key_name);
+ key_name = NULL;
+ }
+ }
+ RegCloseKey (key);
+ }
+ return key_name;
+}
+
+typedef struct
+{
+ LONG Bias;
+ LONG StandardBias;
+ LONG DaylightBias;
+ SYSTEMTIME StandardDate;
+ SYSTEMTIME DaylightDate;
+} RegTZI;
+
+static void
+system_time_copy (SYSTEMTIME *orig, SYSTEMTIME *target)
+{
+ g_return_if_fail (orig != NULL);
+ g_return_if_fail (target != NULL);
+
+ target->wYear = orig->wYear;
+ target->wMonth = orig->wMonth;
+ target->wDayOfWeek = orig->wDayOfWeek;
+ target->wDay = orig->wDay;
+ target->wHour = orig->wHour;
+ target->wMinute = orig->wMinute;
+ target->wSecond = orig->wSecond;
+ target->wMilliseconds = orig->wMilliseconds;
+}
+
+static void
+register_tzi_to_tzi (RegTZI *reg, TIME_ZONE_INFORMATION *tzi)
+{
+ g_return_if_fail (reg != NULL);
+ g_return_if_fail (tzi != NULL);
+ tzi->Bias = reg->Bias;
+ system_time_copy (&(reg->StandardDate), &(tzi->StandardDate));
+ tzi->StandardBias = reg->StandardBias;
+ system_time_copy (&(reg->DaylightDate), &(tzi->DaylightDate));
+ tzi->DaylightBias = reg->DaylightBias;
+}
+
+static gint
+rules_from_windows_time_zone (const gchar *identifier, TimeZoneRule **rules)
+{
+ HKEY key;
+ gchar *subkey, *subkey_dynamic;
+ gchar *key_name = NULL;
+ const gchar *reg_key =
+ "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\";
+ TIME_ZONE_INFORMATION tzi;
+ DWORD size;
+ gint rules_num = 0;
+ RegTZI regtzi, regtzi_prev;
+
+ *rules = NULL;
+ key_name = NULL;
+
+ if (!identifier)
+ key_name = windows_default_tzname ();
+ else
+ key_name = g_strdup (identifier);
+
+ if (!key_name)
+ return 0;
+
+ subkey = g_strconcat (reg_key, key_name, NULL);
+ subkey_dynamic = g_strconcat (subkey, "\\Dynamic DST", NULL);
+
+ if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey, 0,
+ KEY_QUERY_VALUE, &key) != ERROR_SUCCESS)
+ return 0;
+ size = sizeof tzi.StandardName;
+ if (RegQueryValueExA (key, "Std", NULL, NULL,
+ (LPBYTE)&(tzi.StandardName), &size) != ERROR_SUCCESS)
+ goto failed;
+ if (RegQueryValueExA (key, "Dlt", NULL, NULL,
+ (LPBYTE)&(tzi.DaylightName), &size) != ERROR_SUCCESS)
+ goto failed;
+
+ RegCloseKey (key);
+ if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey_dynamic, 0,
+ KEY_QUERY_VALUE, &key) == ERROR_SUCCESS)
+ {
+ DWORD first, last;
+ int year, i;
+ gchar *s;
+
+ size = sizeof first;
+ if (RegQueryValueExA (key, "FirstEntry", NULL, NULL,
+ (LPBYTE) &first, &size) != ERROR_SUCCESS)
+ goto failed;
+
+ size = sizeof last;
+ if (RegQueryValueExA (key, "LastEntry", NULL, NULL,
+ (LPBYTE) &last, &size) != ERROR_SUCCESS)
+ goto failed;
+
+ rules_num = last - first + 2;
+ *rules = g_new0 (TimeZoneRule, rules_num);
+
+ for (year = first, i = 0; year <= last; year++)
+ {
+ s = g_strdup_printf ("%d", year);
+
+ size = sizeof regtzi;
+ if (RegQueryValueExA (key, s, NULL, NULL,
+ (LPBYTE) &regtzi, &size) != ERROR_SUCCESS)
+ {
+ g_free (*rules);
+ *rules = NULL;
+ break;
+ }
+
+ g_free (s);
+
+ if (year > first && memcmp (&regtzi_prev, &regtzi, sizeof regtzi) == 0)
+ continue;
+ else
+ memcpy (&regtzi_prev, &regtzi, sizeof regtzi);
+
+ register_tzi_to_tzi (&regtzi, &tzi);
+ rule_from_windows_time_zone_info (&(*rules)[i], &tzi);
+ (*rules)[i++].start_year = year;
+ }
+
+ rules_num = i + 1;
+
+failed:
+ RegCloseKey (key);
+ }
+ else if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey, 0,
+ KEY_QUERY_VALUE, &key) == ERROR_SUCCESS)
+ {
+ size = sizeof regtzi;
+ if (RegQueryValueExA (key, "TZI", NULL, NULL,
+ (LPBYTE) &regtzi, &size) == ERROR_SUCCESS)
+ {
+ rules_num = 2;
+ *rules = g_new0 (TimeZoneRule, 2);
+ register_tzi_to_tzi (&regtzi, &tzi);
+ rule_from_windows_time_zone_info (&(*rules)[0], &tzi);
+ }
+
+ RegCloseKey (key);
+ }
+
+ g_free (subkey_dynamic);
+ g_free (subkey);
+ g_free (key_name);
+
+ if (*rules)
+ {
+ (*rules)[0].start_year = MIN_TZYEAR;
+ if ((*rules)[rules_num - 2].start_year < MAX_TZYEAR)
+ (*rules)[rules_num - 1].start_year = MAX_TZYEAR;
+ else
+ (*rules)[rules_num - 1].start_year = (*rules)[rules_num - 2].start_year + 1;
+
+ return rules_num;
+ }
+ else
+ return 0;
+}
+
+#endif
+
+static void
+find_relative_date (TimeZoneDate *buffer)
+{
+ gint wday;
+ GDate date;
+ g_date_clear (&date, 1);
+ wday = buffer->wday;
+
+ /* Get last day if last is needed, first day otherwise */
+ if (buffer->mon == 13 || buffer->mon == 14) /* Julian Date */
+ {
+ g_date_set_dmy (&date, 1, 1, buffer->year);
+ if (wday >= 59 && buffer->mon == 13 && g_date_is_leap_year (buffer->year))
+ g_date_add_days (&date, wday);
+ else
+ g_date_add_days (&date, wday - 1);
+ buffer->mon = (int) g_date_get_month (&date);
+ buffer->mday = (int) g_date_get_day (&date);
+ buffer->wday = 0;
+ }
+ else /* M.W.D */
+ {
+ guint days;
+ guint days_in_month = g_date_days_in_month (buffer->mon, buffer->year);
+ GDateWeekday first_wday;
+
+ g_date_set_dmy (&date, 1, buffer->mon, buffer->year);
+ first_wday = g_date_get_weekday (&date);
+
+ if (first_wday > wday)
+ ++(buffer->week);
+ /* week is 1 <= w <= 5, we need 0-based */
+ days = 7 * (buffer->week - 1) + wday - first_wday;
+
+ while (days > days_in_month)
+ days -= 7;
+
+ g_date_add_days (&date, days);
+
+ buffer->mday = g_date_get_day (&date);
+ }
+}
+
+/* Offset is previous offset of local time. Returns 0 if month is 0 */
+static gint64
+boundary_for_year (TimeZoneDate *boundary,
+ gint year,
+ gint32 offset)
+{
+ TimeZoneDate buffer;
+ GDate date;
+ const guint64 unix_epoch_start = 719163L;
+ const guint64 seconds_per_day = 86400L;
+
+ if (!boundary->mon)
+ return 0;
+ buffer = *boundary;
+
+ if (boundary->year == 0)
+ {
+ buffer.year = year;
+
+ if (buffer.wday)
+ find_relative_date (&buffer);
+ }
+
+ g_assert (buffer.year == year);
+ g_date_clear (&date, 1);
+ g_date_set_dmy (&date, buffer.mday, buffer.mon, buffer.year);
+ return ((g_date_get_julian (&date) - unix_epoch_start) * seconds_per_day +
+ buffer.hour * 3600 + buffer.min * 60 + buffer.sec - offset);
+}
+
+static void
+fill_transition_info_from_rule (TransitionInfo *info,
+ TimeZoneRule *rule,
+ gboolean is_dst)
+{
+ gint offset = is_dst ? rule->dlt_offset : rule->std_offset;
+ gchar *name = is_dst ? rule->dlt_name : rule->std_name;
+
+ info->gmt_offset = offset;
+ info->is_dst = is_dst;
+ info->is_standard = FALSE;
+ info->is_gmt = FALSE;
+
+ if (name)
+ info->abbrev = g_strdup (name);
+
+ else
+ info->abbrev = g_strdup_printf ("%+03d%02d",
+ (int) offset / 3600,
+ (int) abs (offset / 60) % 60);
+}
+
+static void
+init_zone_from_rules (GTimeZone *gtz,
+ TimeZoneRule *rules,
+ gint rules_num)
+{
+ guint type_count = 0, trans_count = 0, info_index = 0;
+ guint ri; /* rule index */
+ gboolean skip_first_std_trans = TRUE;
+ gint32 last_offset;
+
+ type_count = 0;
+ trans_count = 0;
+
+ /* Last rule only contains max year */
+ for (ri = 0; ri < rules_num - 1; ri++)
+ {
+ if (rules[ri].dlt_start.mon || rules[ri].dlt_end.mon)
+ {
+ guint rulespan = (rules[ri + 1].start_year - rules[ri].start_year);
+ guint transitions = rules[ri].dlt_start.mon > 0 ? 1 : 0;
+ transitions += rules[ri].dlt_end.mon > 0 ? 1 : 0;
+ type_count += rules[ri].dlt_start.mon > 0 ? 2 : 1;
+ trans_count += transitions * rulespan;
+ }
+ else
+ type_count++;
+ }
+
+ gtz->t_info = g_array_sized_new (FALSE, TRUE, sizeof (TransitionInfo), type_count);
+ gtz->transitions = g_array_sized_new (FALSE, TRUE, sizeof (Transition), trans_count);
+
+ last_offset = rules[0].std_offset;
+
+ for (ri = 0; ri < rules_num - 1; ri++)
+ {
+ if ((rules[ri].std_offset || rules[ri].dlt_offset) &&
+ rules[ri].dlt_start.mon == 0 && rules[ri].dlt_end.mon == 0)
+ {
+ TransitionInfo std_info;
+ /* Standard */
+ fill_transition_info_from_rule (&std_info, &(rules[ri]), FALSE);
+ g_array_append_val (gtz->t_info, std_info);
+
+ if (ri > 0 &&
+ ((rules[ri - 1].dlt_start.mon > 12 &&
+ rules[ri - 1].dlt_start.wday > rules[ri - 1].dlt_end.wday) ||
+ rules[ri - 1].dlt_start.mon > rules[ri - 1].dlt_end.mon))
+ {
+ /* The previous rule was a southern hemisphere rule that
+ starts the year with DST, so we need to add a
+ transition to return to standard time */
+ guint year = rules[ri].start_year;
+ gint64 std_time = boundary_for_year (&rules[ri].dlt_end,
+ year, last_offset);
+ Transition std_trans = {std_time, info_index};
+ g_array_append_val (gtz->transitions, std_trans);
+
+ }
+ last_offset = rules[ri].std_offset;
+ ++info_index;
+ skip_first_std_trans = TRUE;
+ }
+ else if (rules[ri].std_offset || rules[ri].dlt_offset)
+ {
+ const guint start_year = rules[ri].start_year;
+ const guint end_year = rules[ri + 1].start_year;
+ gboolean dlt_first;
+ guint year;
+ TransitionInfo std_info, dlt_info;
+ if (rules[ri].dlt_start.mon > 12)
+ dlt_first = rules[ri].dlt_start.wday > rules[ri].dlt_end.wday;
+ else
+ dlt_first = rules[ri].dlt_start.mon > rules[ri].dlt_end.mon;
+ /* Standard rules are always even, because before the first
+ transition is always standard time, and 0 is even. */
+ fill_transition_info_from_rule (&std_info, &(rules[ri]), FALSE);
+ fill_transition_info_from_rule (&dlt_info, &(rules[ri]), TRUE);
+
+ g_array_append_val (gtz->t_info, std_info);
+ g_array_append_val (gtz->t_info, dlt_info);
+
+ /* Transition dates. We hope that a year which ends daylight
+ time in a southern-hemisphere country (i.e., one that
+ begins the year in daylight time) will include a rule
+ which has only a dlt_end. */
+ for (year = start_year; year < end_year; year++)
+ {
+ gint32 dlt_offset = (dlt_first ? last_offset :
+ rules[ri].dlt_offset);
+ gint32 std_offset = (dlt_first ? rules[ri].std_offset :
+ last_offset);
+ /* NB: boundary_for_year returns 0 if mon == 0 */
+ gint64 std_time = boundary_for_year (&rules[ri].dlt_end,
+ year, dlt_offset);
+ gint64 dlt_time = boundary_for_year (&rules[ri].dlt_start,
+ year, std_offset);
+ Transition std_trans = {std_time, info_index};
+ Transition dlt_trans = {dlt_time, info_index + 1};
+ last_offset = (dlt_first ? rules[ri].dlt_offset :
+ rules[ri].std_offset);
+ if (dlt_first)
+ {
+ if (skip_first_std_trans)
+ skip_first_std_trans = FALSE;
+ else if (std_time)
+ g_array_append_val (gtz->transitions, std_trans);
+ if (dlt_time)
+ g_array_append_val (gtz->transitions, dlt_trans);
+ }
+ else
+ {
+ if (dlt_time)
+ g_array_append_val (gtz->transitions, dlt_trans);
+ if (std_time)
+ g_array_append_val (gtz->transitions, std_trans);
+ }
+ }
+
+ info_index += 2;
+ }
+ }
+ if (ri > 0 &&
+ ((rules[ri - 1].dlt_start.mon > 12 &&
+ rules[ri - 1].dlt_start.wday > rules[ri - 1].dlt_end.wday) ||
+ rules[ri - 1].dlt_start.mon > rules[ri - 1].dlt_end.mon))
+ {
+ /* The previous rule was a southern hemisphere rule that
+ starts the year with DST, so we need to add a
+ transition to return to standard time */
+ TransitionInfo info;
+ guint year = rules[ri].start_year;
+ Transition trans;
+ fill_transition_info_from_rule (&info, &(rules[ri - 1]), FALSE);
+ g_array_append_val (gtz->t_info, info);
+ trans.time = boundary_for_year (&rules[ri - 1].dlt_end,
+ year, last_offset);
+ trans.info_index = info_index;
+ g_array_append_val (gtz->transitions, trans);
+ }
+}
+
+/*
+ * parses date[/time] for parsing TZ environment variable
+ *
+ * date is either Mm.w.d, Jn or N
+ * - m is 1 to 12
+ * - w is 1 to 5
+ * - d is 0 to 6
+ * - n is 1 to 365
+ * - N is 0 to 365
+ *
+ * time is either h or hh[[:]mm[[[:]ss]]]
+ * - h[h] is 0 to 23
+ * - mm is 00 to 59
+ * - ss is 00 to 59
+ */
+static gboolean
+parse_mwd_boundary (gchar **pos, TimeZoneDate *boundary)
+{
+ gint month, week, day;
+
+ if (**pos == '\0' || **pos < '0' || '9' < **pos)
+ return FALSE;
+
+ month = *(*pos)++ - '0';
+
+ if ((month == 1 && **pos >= '0' && '2' >= **pos) ||
+ (month == 0 && **pos >= '0' && '9' >= **pos))
+ {
+ month *= 10;
+ month += *(*pos)++ - '0';
+ }
+
+ if (*(*pos)++ != '.' || month == 0)
+ return FALSE;
+
+ if (**pos == '\0' || **pos < '1' || '5' < **pos)
+ return FALSE;
+
+ week = *(*pos)++ - '0';
+
+ if (*(*pos)++ != '.')
+ return FALSE;
+
+ if (**pos == '\0' || **pos < '0' || '6' < **pos)
+ return FALSE;
+
+ day = *(*pos)++ - '0';
+
+ if (!day)
+ day += 7;
+
+ boundary->year = 0;
+ boundary->mon = month;
+ boundary->week = week;
+ boundary->wday = day;
+ return TRUE;
+}
+
+/* Different implementations of tzset interpret the Julian day field
+ differently. For example, Linux specifies that it should be 1-based
+ (1 Jan is JD 1) for both Jn and n formats, while zOS and BSD
+ specify that a Jn JD is 1-based while an n JD is 0-based. Rather
+ than trying to follow different specs, we will follow GDate's
+ practice thatIn order to keep it simple, we will follow Linux's
+ practice. */
+
+static gboolean
+parse_julian_boundary (gchar** pos, TimeZoneDate *boundary,
+ gboolean ignore_leap)
+{
+ gint day = 0;
+ GDate date;
+
+ while (**pos >= '0' && '9' >= **pos)
+ {
+ day *= 10;
+ day += *(*pos)++ - '0';
+ }
+
+ if (day < 1 || 365 < day)
+ return FALSE;
+
+ g_date_clear (&date, 1);
+ g_date_set_julian (&date, day);
+ boundary->year = 0;
+ boundary->mon = (int) g_date_get_month (&date);
+ boundary->mday = (int) g_date_get_day (&date);
+ boundary->wday = 0;
+
+ if (!ignore_leap && day >= 59)
+ boundary->mday++;
+
+ return TRUE;
+}
+
+static gboolean
+parse_tz_boundary (const gchar *identifier,
+ TimeZoneDate *boundary)
+{
+ gchar *pos;
+
+ pos = (gchar*)identifier;
+ /* Month-week-weekday */
+ if (*pos == 'M')
+ {
+ ++pos;
+ if (!parse_mwd_boundary (&pos, boundary))
+ return FALSE;
+ }
+ /* Julian date which ignores Feb 29 in leap years */
+ else if (*pos == 'J')
+ {
+ ++pos;
+ if (!parse_julian_boundary (&pos, boundary, FALSE))
+ return FALSE ;
+ }
+ /* Julian date which counts Feb 29 in leap years */
+ else if (*pos >= '0' && '9' >= *pos)
+ {
+ if (!parse_julian_boundary (&pos, boundary, TRUE))
+ return FALSE;
+ }
+ else
+ return FALSE;
+
+ /* Time */
+
+ if (*pos == '/')
+ {
+ gint32 offset;
+
+ if (!parse_time (++pos, &offset))
+ return FALSE;
+
+ boundary->hour = offset / 3600;
+ boundary->min = (offset / 60) % 60;
+ boundary->sec = offset % 3600;
+
+ return TRUE;
+ }
+
+ else
+ {
+ boundary->hour = 2;
+ boundary->min = 0;
+ boundary->sec = 0;
+
+ return *pos == '\0';
+ }
+}
+
+static gint
+create_ruleset_from_rule (TimeZoneRule **rules, TimeZoneRule *rule)
+{
+ *rules = g_new0 (TimeZoneRule, 2);
+
+ (*rules)[0].start_year = MIN_TZYEAR;
+ (*rules)[1].start_year = MAX_TZYEAR;
+
+ (*rules)[0].std_offset = -rule->std_offset;
+ (*rules)[0].dlt_offset = -rule->dlt_offset;
+ (*rules)[0].dlt_start = rule->dlt_start;
+ (*rules)[0].dlt_end = rule->dlt_end;
+ strcpy ((*rules)[0].std_name, rule->std_name);
+ strcpy ((*rules)[0].dlt_name, rule->dlt_name);
+ return 2;
+}
+
+static gboolean
+parse_offset (gchar **pos, gint32 *target)
+{
+ gchar *buffer;
+ gchar *target_pos = *pos;
+ gboolean ret;
+
+ while (**pos == '+' || **pos == '-' || **pos == ':' ||
+ (**pos >= '0' && '9' >= **pos))
+ ++(*pos);
+
+ buffer = g_strndup (target_pos, *pos - target_pos);
+ ret = parse_constant_offset (buffer, target);
+ g_free (buffer);
+
+ return ret;
+}
+
+static gboolean
+parse_identifier_boundary (gchar **pos, TimeZoneDate *target)
+{
+ gchar *buffer;
+ gchar *target_pos = *pos;
+ gboolean ret;
+
+ while (**pos != ',' && **pos != '\0')
+ ++(*pos);
+ buffer = g_strndup (target_pos, *pos - target_pos);
+ ret = parse_tz_boundary (buffer, target);
+ g_free (buffer);
+
+ return ret;
+}
+
+static gboolean
+set_tz_name (gchar **pos, gchar *buffer, guint size)
+{
+ gchar *name_pos = *pos;
+ guint len;
+
+ /* Name is ASCII alpha (Is this necessarily true?) */
+ while (g_ascii_isalpha (**pos))
+ ++(*pos);
+
+ /* Name should be three or more alphabetic characters */
+ if (*pos - name_pos < 3)
+ return FALSE;
+
+ memset (buffer, 0, NAME_SIZE);
+ /* name_pos isn't 0-terminated, so we have to limit the length expressly */
+ len = *pos - name_pos > size - 1 ? size - 1 : *pos - name_pos;
+ strncpy (buffer, name_pos, len);
+ return TRUE;
+}
+
+static gboolean
+parse_identifier_boundaries (gchar **pos, TimeZoneRule *tzr)
+{
+ if (*(*pos)++ != ',')
+ return FALSE;
+
+ /* Start date */
+ if (!parse_identifier_boundary (pos, &(tzr->dlt_start)) || *(*pos)++ != ',')
+ return FALSE;
+
+ /* End date */
+ if (!parse_identifier_boundary (pos, &(tzr->dlt_end)))
+ return FALSE;
+ return TRUE;
+}
+
+/*
+ * Creates an array of TimeZoneRule from a TZ environment variable
+ * type of identifier. Should free rules afterwards
+ */
+static gint
+rules_from_identifier (const gchar *identifier,
+ TimeZoneRule **rules)
+{
+ gchar *pos;
+ TimeZoneRule tzr;
+
+ if (!identifier)
+ return 0;
+
+ pos = (gchar*)identifier;
+ memset (&tzr, 0, sizeof (tzr));
+ /* Standard offset */
+ if (!(set_tz_name (&pos, tzr.std_name, NAME_SIZE)) ||
+ !parse_offset (&pos, &(tzr.std_offset)))
+ return 0;
+
+ if (*pos == 0)
+ return create_ruleset_from_rule (rules, &tzr);
+
+ /* Format 2 */
+ if (!(set_tz_name (&pos, tzr.dlt_name, NAME_SIZE)))
+ return 0;
+ parse_offset (&pos, &(tzr.dlt_offset));
+ if (tzr.dlt_offset == 0) /* No daylight offset given, assume it's 1
+ hour earlier that standard */
+ tzr.dlt_offset = tzr.std_offset - 3600;
+ if (*pos == '\0')
+#ifdef G_OS_WIN32
+ /* Windows allows us to use the US DST boundaries if they're not given */
+ {
+ int i;
+ guint rules_num = 0;
+
+ /* Use US rules, Windows' default is Pacific Standard Time */
+ if ((rules_num = rules_from_windows_time_zone ("Pacific Standard Time",
+ rules)))
+ {
+ for (i = 0; i < rules_num - 1; i++)
+ {
+ (*rules)[i].std_offset = - tzr.std_offset;
+ (*rules)[i].dlt_offset = - tzr.dlt_offset;
+ strcpy ((*rules)[i].std_name, tzr.std_name);
+ strcpy ((*rules)[i].dlt_name, tzr.dlt_name);
+ }
+
+ return rules_num;
+ }
+ else
+ return 0;
+ }
+#else
+ return 0;
+#endif
+ /* Start and end required (format 2) */
+ if (!parse_identifier_boundaries (&pos, &tzr))
+ return 0;
+
+ return create_ruleset_from_rule (rules, &tzr);
}
/* Construction {{{1 */
@@ -310,20 +1306,50 @@ zone_for_constant_offset (const gchar *name)
* something that would pass as a valid value for the
* <varname>TZ</varname> environment variable (including %NULL).
*
+ * In Windows, @identifier can also be the unlocalized name of a time
+ * zone for standard time, for example "Pacific Standard Time".
+ *
* Valid RFC3339 time offsets are <literal>"Z"</literal> (for UTC) or
* <literal>"±hh:mm"</literal>. ISO 8601 additionally specifies
- * <literal>"±hhmm"</literal> and <literal>"±hh"</literal>.
+ * <literal>"±hhmm"</literal> and <literal>"±hh"</literal>. Offsets are
+ * time values to be added to Coordinated Universal Time (UTC) to get
+ * the local time.
+ *
+ * In Unix, the <varname>TZ</varname> environment variable typically
+ * corresponds to the name of a file in the zoneinfo database, or
+ * string in "std offset [dst [offset],start[/time],end[/time]]"
+ * (POSIX) format. There are no spaces in the specification. The
+ * name of standard and daylight savings time zone must be three or more
+ * alphabetic characters. Offsets are time values to be added to local
+ * time to get Coordinated Universal Time (UTC) and should be
+ * <literal>"[±]hh[[:]mm[:ss]]"</literal>. Dates are either
+ * <literal>"Jn"</literal> (Julian day with n between 1 and 365, leap
+ * years not counted), <literal>"n"</literal> (zero-based Julian day
+ * with n between 0 and 365) or <literal>"Mm.w.d"</literal> (day d
+ * (0 <= d <= 6) of week w (1 <= w <= 5) of month m (1 <= m <= 12), day
+ * 0 is a Sunday). Times are in local wall clock time, the default is
+ * 02:00:00.
*
- * The <varname>TZ</varname> environment variable typically corresponds
- * to the name of a file in the zoneinfo database, but there are many
- * other possibilities. Note that those other possibilities are not
- * currently implemented, but are planned.
+ * In Windows, the "tzn[+|–]hh[:mm[:ss]][dzn]" format is used, but also
+ * accepts POSIX format. The Windows format uses US rules for all time
+ * zones; daylight savings time is 60 minutes behind the standard time
+ * with date and time of change taken from Pacific Standard Time.
+ * Offsets are time values to be added to the local time to get
+ * Coordinated Universal Time (UTC).
*
* g_time_zone_new_local() calls this function with the value of the
* <varname>TZ</varname> environment variable. This function itself is
* independent of the value of <varname>TZ</varname>, but if @identifier
* is %NULL then <filename>/etc/localtime</filename> will be consulted
- * to discover the correct timezone.
+ * to discover the correct time zone on Unix and the registry will be
+ * consulted or GetTimeZoneInformation() will be used to get the local
+ * time zone on Windows.
+ *
+ * If intervals are not available, only time zone rules from
+ * <varname>TZ</varname> environment variable or other means, then they
+ * will be computed from year 1900 to 2037. If the maximum year for the
+ * rules is available and it is greater than 2037, then it will followed
+ * instead.
*
* See <ulink
* url='http://tools.ietf.org/html/rfc3339#section-5.6'>RFC3339
@@ -332,7 +1358,10 @@ zone_for_constant_offset (const gchar *name)
* full list of valid time offsets. See <ulink
* url='http://www.gnu.org/s/libc/manual/html_node/TZ-Variable.html'>The
* GNU C Library manual</ulink> for an explanation of the possible
- * values of the <varname>TZ</varname> environment variable.
+ * values of the <varname>TZ</varname> environment variable. See <ulink
+ * url='http://msdn.microsoft.com/en-us/library/ms912391%28v=winembedded.11%29.aspx'>
+ * Microsoft Time Zone Index Values</ulink> for the list of time zones
+ * on Windows.
*
* You should release the return value by calling g_time_zone_unref()
* when you are done with it.
@@ -344,99 +1373,87 @@ zone_for_constant_offset (const gchar *name)
GTimeZone *
g_time_zone_new (const gchar *identifier)
{
- GTimeZone *tz;
- GMappedFile *file;
+ GTimeZone *tz = NULL;
+ TimeZoneRule *rules;
+ gint rules_num;
G_LOCK (time_zones);
if (time_zones == NULL)
time_zones = g_hash_table_new (g_str_hash, g_str_equal);
if (identifier)
- tz = g_hash_table_lookup (time_zones, identifier);
- else
- tz = NULL;
+ {
+ tz = g_hash_table_lookup (time_zones, identifier);
+ if (tz)
+ {
+ g_atomic_int_inc (&tz->ref_count);
+ G_UNLOCK (time_zones);
+ return tz;
+ }
+ }
- if (tz == NULL)
+ tz = g_slice_new0 (GTimeZone);
+ tz->name = g_strdup (identifier);
+ tz->ref_count = 0;
+
+ zone_for_constant_offset (tz, identifier);
+
+ if (tz->t_info == NULL &&
+ (rules_num = rules_from_identifier (identifier, &rules)))
{
- tz = g_slice_new0 (GTimeZone);
- tz->name = g_strdup (identifier);
- tz->ref_count = 0;
+ init_zone_from_rules (tz, rules, rules_num);
+ g_free (rules);
+ }
- tz->zoneinfo = zone_for_constant_offset (identifier);
+ if (tz->t_info == NULL)
+ {
+#ifdef G_OS_UNIX
+ GBytes *zoneinfo = zone_info_unix (identifier);
+ if (!zoneinfo)
+ zone_for_constant_offset (tz, "UTC");
+ else
+ {
+ init_zone_from_iana_info (tz, zoneinfo);
+ g_bytes_unref (zoneinfo);
+ }
+#elif defined (G_OS_WIN32)
+ if ((rules_num = rules_from_windows_time_zone (identifier, &rules)))
+ {
+ init_zone_from_rules (tz, rules, rules_num);
+ g_free (rules);
+ }
+ }
- if (tz->zoneinfo == NULL)
+ if (tz->t_info == NULL)
+ {
+ if (identifier)
+ zone_for_constant_offset (tz, "UTC");
+ else
{
- gchar *filename;
+ TIME_ZONE_INFORMATION tzi;
- /* identifier can be a relative or absolute path name;
- if relative, it is interpreted starting from /usr/share/timezone
- while the POSIX standard says it should start with :,
- glibc allows both syntaxes, so we should too */
- if (identifier != NULL)
+ if (GetTimeZoneInformation (&tzi) != TIME_ZONE_ID_INVALID)
{
- const gchar *tzdir;
+ rules = g_new0 (TimeZoneRule, 2);
- tzdir = getenv ("TZDIR");
- if (tzdir == NULL)
- tzdir = "/usr/share/zoneinfo";
+ rule_from_windows_time_zone_info (&rules[0], &tzi);
- if (*identifier == ':')
- identifier ++;
+ memset (rules[0].std_name, 0, NAME_SIZE);
+ memset (rules[0].dlt_name, 0, NAME_SIZE);
- if (g_path_is_absolute (identifier))
- filename = g_strdup (identifier);
- else
- filename = g_build_filename (tzdir, identifier, NULL);
- }
- else
- filename = g_strdup ("/etc/localtime");
+ rules[0].start_year = MIN_TZYEAR;
+ rules[1].start_year = MAX_TZYEAR;
- file = g_mapped_file_new (filename, FALSE, NULL);
- if (file != NULL)
- {
- tz->zoneinfo = g_bytes_new_with_free_func (g_mapped_file_get_contents (file),
- g_mapped_file_get_length (file),
- (GDestroyNotify)g_mapped_file_unref,
- g_mapped_file_ref (file));
- g_mapped_file_unref (file);
- }
- g_free (filename);
- }
+ init_zone_from_rules (tz, rules, 2);
- if (tz->zoneinfo != NULL)
- {
- gsize size;
- const struct tzhead *header = g_bytes_get_data (tz->zoneinfo, &size);
-
- /* we only bother to support version 2 */
- if (size < sizeof (struct tzhead) || memcmp (header, "TZif2", 5))
- {
- g_bytes_unref (tz->zoneinfo);
- tz->zoneinfo = NULL;
- }
- else
- {
- gint typecnt;
-
- /* we trust the file completely. */
- tz->header = (const struct tzhead *)
- (((const gchar *) (header + 1)) +
- guint32_from_be(header->tzh_ttisgmtcnt) +
- guint32_from_be(header->tzh_ttisstdcnt) +
- 8 * guint32_from_be(header->tzh_leapcnt) +
- 5 * guint32_from_be(header->tzh_timecnt) +
- 6 * guint32_from_be(header->tzh_typecnt) +
- guint32_from_be(header->tzh_charcnt));
-
- typecnt = guint32_from_be (tz->header->tzh_typecnt);
- tz->timecnt = guint32_from_be (tz->header->tzh_timecnt);
- tz->trans = (gconstpointer) (tz->header + 1);
- tz->indices = (gconstpointer) (tz->trans + tz->timecnt);
- tz->infos = (gconstpointer) (tz->indices + tz->timecnt);
- tz->abbrs = (gconstpointer) (tz->infos + typecnt);
+ g_free (rules);
}
}
+#endif
+ }
+ if (tz->t_info != NULL)
+ {
if (identifier)
g_hash_table_insert (time_zones, tz->name, tz);
}
@@ -491,61 +1508,103 @@ g_time_zone_new_local (void)
return g_time_zone_new (getenv ("TZ"));
}
+#define TRANSITION(n) g_array_index (tz->transitions, Transition, n)
+#define TRANSITION_INFO(n) g_array_index (tz->t_info, TransitionInfo, n)
+
/* Internal helpers {{{1 */
-inline static const struct ttinfo *
+/* NB: Interval 0 is before the first transition, so there's no
+ * transition structure to point to which TransitionInfo to
+ * use. Rule-based zones are set up so that TI 0 is always standard
+ * time (which is what's in effect before Daylight time got started
+ * in the early 20th century), but IANA tzfiles don't follow that
+ * convention. The tzfile documentation says to use the first
+ * standard-time (i.e., non-DST) tinfo, so that's what we do.
+ */
+inline static const TransitionInfo*
interval_info (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- if (interval)
- return tz->infos + tz->indices[interval - 1];
+ guint index;
+ g_return_val_if_fail (tz->t_info != NULL, NULL);
+ if (interval && tz->transitions && interval <= tz->transitions->len)
+ index = (TRANSITION(interval - 1)).info_index;
+ else
+ {
+ for (index = 0; index < tz->t_info->len; index++)
+ {
+ TransitionInfo *tzinfo = &(TRANSITION_INFO(index));
+ if (!tzinfo->is_dst)
+ return tzinfo;
+ }
+ index = 0;
+ }
- return tz->infos;
+ return &(TRANSITION_INFO(index));
}
inline static gint64
interval_start (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- if (interval)
- return gint64_from_be (tz->trans[interval - 1]);
-
- return G_MININT64;
+ if (!interval || tz->transitions == NULL || tz->transitions->len == 0)
+ return G_MININT64;
+ if (interval > tz->transitions->len)
+ interval = tz->transitions->len;
+ return (TRANSITION(interval - 1)).time;
}
inline static gint64
interval_end (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- if (interval < tz->timecnt)
- return gint64_from_be (tz->trans[interval]) - 1;
-
+ if (tz->transitions && interval < tz->transitions->len)
+ return (TRANSITION(interval)).time - 1;
return G_MAXINT64;
}
inline static gint32
interval_offset (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- return gint32_from_be (interval_info (tz, interval)->tt_gmtoff);
+ g_return_val_if_fail (tz->t_info != NULL, 0);
+ return interval_info (tz, interval)->gmt_offset;
}
inline static gboolean
interval_isdst (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- return interval_info (tz, interval)->tt_isdst;
+ g_return_val_if_fail (tz->t_info != NULL, 0);
+ return interval_info (tz, interval)->is_dst;
}
-inline static guint8
-interval_abbrind (GTimeZone *tz,
- gint interval)
+
+inline static gboolean
+interval_isgmt (GTimeZone *tz,
+ guint interval)
{
- return interval_info (tz, interval)->tt_abbrind;
+ g_return_val_if_fail (tz->t_info != NULL, 0);
+ return interval_info (tz, interval)->is_gmt;
+}
+
+inline static gboolean
+interval_isstandard (GTimeZone *tz,
+ guint interval)
+{
+ return interval_info (tz, interval)->is_standard;
+}
+
+inline static gchar*
+interval_abbrev (GTimeZone *tz,
+ guint interval)
+{
+ g_return_val_if_fail (tz->t_info != NULL, 0);
+ return interval_info (tz, interval)->abbrev;
}
inline static gint64
interval_local_start (GTimeZone *tz,
- gint interval)
+ guint interval)
{
if (interval)
return interval_start (tz, interval) + interval_offset (tz, interval);
@@ -555,9 +1614,9 @@ interval_local_start (GTimeZone *tz,
inline static gint64
interval_local_end (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- if (interval < tz->timecnt)
+ if (tz->transitions && interval < tz->transitions->len)
return interval_end (tz, interval) + interval_offset (tz, interval);
return G_MAXINT64;
@@ -565,9 +1624,11 @@ interval_local_end (GTimeZone *tz,
static gboolean
interval_valid (GTimeZone *tz,
- gint interval)
+ guint interval)
{
- return interval <= tz->timecnt;
+ if ( tz->transitions == NULL)
+ return interval == 0;
+ return interval <= tz->transitions->len;
}
/* g_time_zone_find_interval() {{{1 */
@@ -605,13 +1666,16 @@ g_time_zone_adjust_time (GTimeZone *tz,
gint64 *time_)
{
gint i;
+ guint intervals;
- if (tz->zoneinfo == NULL)
+ if (tz->transitions == NULL)
return 0;
+ intervals = tz->transitions->len;
+
/* find the interval containing *time UTC
* TODO: this could be binary searched (or better) */
- for (i = 0; i < tz->timecnt; i++)
+ for (i = 0; i <= intervals; i++)
if (*time_ <= interval_end (tz, i))
break;
@@ -651,7 +1715,7 @@ g_time_zone_adjust_time (GTimeZone *tz,
if (i && *time_ <= interval_local_end (tz, i - 1))
i--;
- else if (i < tz->timecnt &&
+ else if (i < intervals &&
*time_ >= interval_local_start (tz, i + 1))
i++;
}
@@ -695,11 +1759,12 @@ g_time_zone_find_interval (GTimeZone *tz,
gint64 time_)
{
gint i;
+ guint intervals;
- if (tz->zoneinfo == NULL)
+ if (tz->transitions == NULL)
return 0;
-
- for (i = 0; i < tz->timecnt; i++)
+ intervals = tz->transitions->len;
+ for (i = 0; i <= intervals; i++)
if (time_ <= interval_end (tz, i))
break;
@@ -723,7 +1788,7 @@ g_time_zone_find_interval (GTimeZone *tz,
if (i && time_ <= interval_local_end (tz, i - 1))
i--;
- else if (i < tz->timecnt && time_ >= interval_local_start (tz, i + 1))
+ else if (i < intervals && time_ >= interval_local_start (tz, i + 1))
i++;
}
@@ -752,12 +1817,9 @@ const gchar *
g_time_zone_get_abbreviation (GTimeZone *tz,
gint interval)
{
- g_return_val_if_fail (interval_valid (tz, interval), NULL);
-
- if (tz->header == NULL)
- return "UTC";
+ g_return_val_if_fail (interval_valid (tz, (guint)interval), NULL);
- return tz->abbrs + interval_abbrind (tz, interval);
+ return interval_abbrev (tz, (guint)interval);
}
/**
@@ -781,12 +1843,9 @@ gint32
g_time_zone_get_offset (GTimeZone *tz,
gint interval)
{
- g_return_val_if_fail (interval_valid (tz, interval), 0);
-
- if (tz->header == NULL)
- return 0;
+ g_return_val_if_fail (interval_valid (tz, (guint)interval), 0);
- return interval_offset (tz, interval);
+ return interval_offset (tz, (guint)interval);
}
/**
@@ -807,10 +1866,10 @@ g_time_zone_is_dst (GTimeZone *tz,
{
g_return_val_if_fail (interval_valid (tz, interval), FALSE);
- if (tz->header == NULL)
+ if (tz->transitions == NULL)
return FALSE;
- return interval_isdst (tz, interval);
+ return interval_isdst (tz, (guint)interval);
}
/* Epilogue {{{1 */
diff --git a/glib/glib/gtimezone.h b/glib/glib/gtimezone.h
index c877e8f..536acb1 100644
--- a/glib/glib/gtimezone.h
+++ b/glib/glib/gtimezone.h
@@ -19,13 +19,13 @@
* Author: Ryan Lortie <desrt@desrt.ca>
*/
+#ifndef __G_TIME_ZONE_H__
+#define __G_TIME_ZONE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TIME_ZONE_H__
-#define __G_TIME_ZONE_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -54,25 +54,35 @@ typedef enum
G_TIME_TYPE_UNIVERSAL
} GTimeType;
+GLIB_AVAILABLE_IN_ALL
GTimeZone * g_time_zone_new (const gchar *identifier);
+GLIB_AVAILABLE_IN_ALL
GTimeZone * g_time_zone_new_utc (void);
+GLIB_AVAILABLE_IN_ALL
GTimeZone * g_time_zone_new_local (void);
+GLIB_AVAILABLE_IN_ALL
GTimeZone * g_time_zone_ref (GTimeZone *tz);
+GLIB_AVAILABLE_IN_ALL
void g_time_zone_unref (GTimeZone *tz);
+GLIB_AVAILABLE_IN_ALL
gint g_time_zone_find_interval (GTimeZone *tz,
GTimeType type,
gint64 time_);
+GLIB_AVAILABLE_IN_ALL
gint g_time_zone_adjust_time (GTimeZone *tz,
GTimeType type,
gint64 *time_);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_time_zone_get_abbreviation (GTimeZone *tz,
gint interval);
+GLIB_AVAILABLE_IN_ALL
gint32 g_time_zone_get_offset (GTimeZone *tz,
gint interval);
+GLIB_AVAILABLE_IN_ALL
gboolean g_time_zone_is_dst (GTimeZone *tz,
gint interval);
diff --git a/glib/glib/gtrashstack.h b/glib/glib/gtrashstack.h
index 3f226fe..bff504d 100644
--- a/glib/glib/gtrashstack.h
+++ b/glib/glib/gtrashstack.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_TRASH_STACK_H__
+#define __G_TRASH_STACK_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TRASH_STACK_H__
-#define __G_TRASH_STACK_H__
-
#include <glib/gutils.h>
G_BEGIN_DECLS
diff --git a/glib/glib/gtree.c b/glib/glib/gtree.c
index d67629f..c6b3eea 100644
--- a/glib/glib/gtree.c
+++ b/glib/glib/gtree.c
@@ -888,10 +888,10 @@ g_tree_lookup_extended (GTree *tree,
/**
* g_tree_foreach:
* @tree: a #GTree.
- * @func: the function to call for each node visited. If this function
- * returns %TRUE, the traversal is stopped.
+ * @func: the function to call for each node visited.
+ * If this function returns %TRUE, the traversal is stopped.
* @user_data: user data to pass to the function.
- *
+ *
* Calls the given function for each of the key/value pairs in the #GTree.
* The function is passed the key and value of each pair, and the given
* @data parameter. The tree is traversed in sorted order.
@@ -945,12 +945,13 @@ g_tree_foreach (GTree *tree,
* @key: a key of a #GTree node.
* @value: the value corresponding to the key.
* @data: user data passed to g_tree_traverse().
- * @Returns: %TRUE to stop the traversal.
*
* Specifies the type of function passed to g_tree_traverse(). It is
* passed the key and value of each node, together with the @user_data
* parameter passed to g_tree_traverse(). If the function returns
* %TRUE, the traversal is stopped.
+ *
+ * Returns: %TRUE to stop the traversal.
**/
/**
* GTraverseType:
diff --git a/glib/glib/gtree.h b/glib/glib/gtree.h
index e17a518..34cb8bb 100644
--- a/glib/glib/gtree.h
+++ b/glib/glib/gtree.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_TREE_H__
+#define __G_TREE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TREE_H__
-#define __G_TREE_H__
-
#include <glib/gnode.h>
G_BEGIN_DECLS
@@ -43,32 +43,45 @@ typedef gboolean (*GTraverseFunc) (gpointer key,
/* Balanced binary trees
*/
+GLIB_AVAILABLE_IN_ALL
GTree* g_tree_new (GCompareFunc key_compare_func);
+GLIB_AVAILABLE_IN_ALL
GTree* g_tree_new_with_data (GCompareDataFunc key_compare_func,
gpointer key_compare_data);
+GLIB_AVAILABLE_IN_ALL
GTree* g_tree_new_full (GCompareDataFunc key_compare_func,
gpointer key_compare_data,
GDestroyNotify key_destroy_func,
GDestroyNotify value_destroy_func);
+GLIB_AVAILABLE_IN_ALL
GTree* g_tree_ref (GTree *tree);
+GLIB_AVAILABLE_IN_ALL
void g_tree_unref (GTree *tree);
+GLIB_AVAILABLE_IN_ALL
void g_tree_destroy (GTree *tree);
+GLIB_AVAILABLE_IN_ALL
void g_tree_insert (GTree *tree,
gpointer key,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
void g_tree_replace (GTree *tree,
gpointer key,
gpointer value);
+GLIB_AVAILABLE_IN_ALL
gboolean g_tree_remove (GTree *tree,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
gboolean g_tree_steal (GTree *tree,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
gpointer g_tree_lookup (GTree *tree,
gconstpointer key);
+GLIB_AVAILABLE_IN_ALL
gboolean g_tree_lookup_extended (GTree *tree,
gconstpointer lookup_key,
gpointer *orig_key,
gpointer *value);
+GLIB_AVAILABLE_IN_ALL
void g_tree_foreach (GTree *tree,
GTraverseFunc func,
gpointer user_data);
@@ -79,10 +92,13 @@ void g_tree_traverse (GTree *tree,
GTraverseType traverse_type,
gpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gpointer g_tree_search (GTree *tree,
GCompareFunc search_func,
gconstpointer user_data);
+GLIB_AVAILABLE_IN_ALL
gint g_tree_height (GTree *tree);
+GLIB_AVAILABLE_IN_ALL
gint g_tree_nnodes (GTree *tree);
G_END_DECLS
diff --git a/glib/glib/gtypes.h b/glib/glib/gtypes.h
index 7e4c8ea..c18e0bf 100644
--- a/glib/glib/gtypes.h
+++ b/glib/glib/gtypes.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_TYPES_H__
+#define __G_TYPES_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_TYPES_H__
-#define __G_TYPES_H__
-
#include <glibconfig.h>
#include <glib/gmacros.h>
#include <glib/gversionmacros.h>
@@ -183,8 +183,8 @@ typedef const gchar * (*GTranslateFunc) (const gchar *str,
#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
# if __GNUC__ >= 4 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 3
-# define GUINT32_SWAP_LE_BE(val) ((guint32) __builtin_bswap32 ((gint32) val))
-# define GUINT64_SWAP_LE_BE(val) ((guint64) __builtin_bswap64 ((gint64) val))
+# define GUINT32_SWAP_LE_BE(val) ((guint32) __builtin_bswap32 ((gint32) (val)))
+# define GUINT64_SWAP_LE_BE(val) ((guint64) __builtin_bswap64 ((gint64) (val)))
# endif
# if defined (__i386__)
@@ -477,7 +477,7 @@ G_END_DECLS
# endif /* !GLIB_COMPILATION */
# endif /* !GLIB_STATIC_COMPILATION */
# else /* !G_PLATFORM_WIN32 */
-# define GLIB_VAR extern
+# define GLIB_VAR _GLIB_EXTERN
# endif /* !G_PLATFORM_WIN32 */
#endif /* GLIB_VAR */
diff --git a/glib/glib/gunibreak.h b/glib/glib/gunibreak.h
index 5f884e8..86d0f55 100644
--- a/glib/glib/gunibreak.h
+++ b/glib/glib/gunibreak.h
@@ -7,7 +7,7 @@
#include <glib/gtypes.h>
#include <glib/gunicode.h>
-#define G_UNICODE_DATA_VERSION "6.1.0"
+#define G_UNICODE_DATA_VERSION "6.2.0"
#define G_UNICODE_LAST_CHAR 0x10FFFF
@@ -3866,7 +3866,7 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX,
G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX,
G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX,
- G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -4176,7 +4176,7 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
@@ -4283,8 +4283,8 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -4553,8 +4553,8 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
},
{ /* page 38, index 35 */
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
@@ -4563,14 +4563,12 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
@@ -4583,6 +4581,8 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC,
@@ -4605,7 +4605,7 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
@@ -4616,7 +4616,7 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
@@ -4647,49 +4647,49 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
},
{ /* page 39, index 36 */
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
@@ -17445,118 +17445,118 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
},
{ /* page 496, index 134 */
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -17690,19 +17690,19 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR
},
{ /* page 498, index 136 */
G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
@@ -17835,23 +17835,23 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
},
{ /* page 499, index 137 */
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -17859,84 +17859,84 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -17947,15 +17947,15 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -17965,161 +17965,161 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
},
{ /* page 500, index 138 */
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
},
{ /* page 501, index 139 */
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
@@ -18135,18 +18135,18 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -18220,51 +18220,51 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
},
{ /* page 502, index 140 */
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
@@ -18289,41 +18289,41 @@ static const gint8 break_property_data[][256] = {
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN,
diff --git a/glib/glib/gunichartables.h b/glib/glib/gunichartables.h
index f47d48d..e57f447 100644
--- a/glib/glib/gunichartables.h
+++ b/glib/glib/gunichartables.h
@@ -4,7 +4,7 @@
#ifndef CHARTABLES_H
#define CHARTABLES_H
-#define G_UNICODE_DATA_VERSION "6.1.0"
+#define G_UNICODE_DATA_VERSION "6.2.0"
#define G_UNICODE_LAST_CHAR 0x10ffff
@@ -3263,35 +3263,36 @@ static const char type_data[][256] = {
G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
+ G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
+ G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_ENCLOSING_MARK,
G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
+ G_UNICODE_ENCLOSING_MARK, G_UNICODE_NON_SPACING_MARK,
+ G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
+ G_UNICODE_ENCLOSING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
+ G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+ G_UNICODE_UNASSIGNED
},
{ /* page 33, index 31 */
G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
diff --git a/glib/glib/gunicode.h b/glib/glib/gunicode.h
index aafe933..fdf1086 100644
--- a/glib/glib/gunicode.h
+++ b/glib/glib/gunicode.h
@@ -19,13 +19,13 @@
* Boston, MA 02111-1307, USA.
*/
+#ifndef __G_UNICODE_H__
+#define __G_UNICODE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_UNICODE_H__
-#define __G_UNICODE_H__
-
#include <glib/gerror.h>
#include <glib/gtypes.h>
@@ -201,13 +201,12 @@ typedef enum
* @G_UNICODE_BREAK_CLOSE_PARANTHESIS: Closing Parenthesis (CP). Since 2.28
* @G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER: Conditional Japanese Starter (CJ). Since: 2.32
* @G_UNICODE_BREAK_HEBREW_LETTER: Hebrew Letter (HL). Since: 2.32
+ * @G_UNICODE_BREAK_REGIONAL_INDICATOR: Regional Indicator (RI). Since: 2.36
*
* These are the possible line break classifications.
*
- * The five Hangul types were added in Unicode 4.1, so, has been
- * introduced in GLib 2.10. Note that new types may be added in the future.
- * Applications should be ready to handle unknown values.
- * They may be regarded as %G_UNICODE_BREAK_UNKNOWN.
+ * Since new unicode versions may add new types here, applications should be ready
+ * to handle unknown values. They may be regarded as %G_UNICODE_BREAK_UNKNOWN.
*
* See <ulink url="http://www.unicode.org/unicode/reports/tr14/">http://www.unicode.org/unicode/reports/tr14/</ulink>.
*/
@@ -251,7 +250,8 @@ typedef enum
G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE,
G_UNICODE_BREAK_CLOSE_PARANTHESIS,
G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER,
- G_UNICODE_BREAK_HEBREW_LETTER
+ G_UNICODE_BREAK_HEBREW_LETTER,
+ G_UNICODE_BREAK_REGIONAL_INDICATOR
} GUnicodeBreakType;
/**
@@ -367,7 +367,7 @@ typedef enum
* @G_UNICODE_SCRIPT_MANDAIC: Mandaic. Since 2.28
* @G_UNICODE_SCRIPT_CHAKMA: Chakma. Since: 2.32
* @G_UNICODE_SCRIPT_MEROITIC_CURSIVE: Meroitic Cursive. Since: 2.32
- * @G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS, Meroitic Hieroglyphs. Since: 2.32
+ * @G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS: Meroitic Hieroglyphs. Since: 2.32
* @G_UNICODE_SCRIPT_MIAO: Miao. Since: 2.32
* @G_UNICODE_SCRIPT_SHARADA: Sharada. Since: 2.32
* @G_UNICODE_SCRIPT_SORA_SOMPENG: Sora Sompeng. Since: 2.32
@@ -506,66 +506,99 @@ typedef enum
G_UNICODE_SCRIPT_TAKRI /* Takr */
} GUnicodeScript;
+GLIB_AVAILABLE_IN_ALL
guint32 g_unicode_script_to_iso15924 (GUnicodeScript script);
+GLIB_AVAILABLE_IN_ALL
GUnicodeScript g_unicode_script_from_iso15924 (guint32 iso15924);
/* These are all analogs of the <ctype.h> functions.
*/
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isalnum (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isalpha (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_iscntrl (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isdigit (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isgraph (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_islower (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isprint (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_ispunct (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isspace (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isupper (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isxdigit (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_istitle (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_isdefined (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_iswide (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_iswide_cjk(gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_iszerowidth(gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_ismark (gunichar c) G_GNUC_CONST;
/* More <ctype.h> functions. These convert between the three cases.
* See the Unicode book to understand title case. */
+GLIB_AVAILABLE_IN_ALL
gunichar g_unichar_toupper (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gunichar g_unichar_tolower (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gunichar g_unichar_totitle (gunichar c) G_GNUC_CONST;
-/* If C is a digit (according to `g_unichar_isdigit'), then return its
+/* If C is a digit (according to 'g_unichar_isdigit'), then return its
numeric value. Otherwise return -1. */
+GLIB_AVAILABLE_IN_ALL
gint g_unichar_digit_value (gunichar c) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gint g_unichar_xdigit_value (gunichar c) G_GNUC_CONST;
/* Return the Unicode character type of a given character. */
+GLIB_AVAILABLE_IN_ALL
GUnicodeType g_unichar_type (gunichar c) G_GNUC_CONST;
/* Return the line break property for a given character */
+GLIB_AVAILABLE_IN_ALL
GUnicodeBreakType g_unichar_break_type (gunichar c) G_GNUC_CONST;
/* Returns the combining class for a given character */
+GLIB_AVAILABLE_IN_ALL
gint g_unichar_combining_class (gunichar uc) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_get_mirror_char (gunichar ch,
gunichar *mirrored_ch);
+GLIB_AVAILABLE_IN_ALL
GUnicodeScript g_unichar_get_script (gunichar ch) G_GNUC_CONST;
/* Validate a Unicode character */
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_validate (gunichar ch) G_GNUC_CONST;
/* Pairwise canonical compose/decompose */
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_compose (gunichar a,
gunichar b,
gunichar *ch);
+GLIB_AVAILABLE_IN_ALL
gboolean g_unichar_decompose (gunichar ch,
gunichar *a,
gunichar *b);
+GLIB_AVAILABLE_IN_ALL
gsize g_unichar_fully_decompose (gunichar ch,
gboolean compat,
gunichar *result,
@@ -586,6 +619,7 @@ gsize g_unichar_fully_decompose (gunichar ch,
/* Compute canonical ordering of a string in-place. This rearranges
decomposed characters in the string according to their combining
classes. See the Unicode manual for more information. */
+GLIB_AVAILABLE_IN_ALL
void g_unicode_canonical_ordering (gunichar *string,
gsize len);
@@ -611,20 +645,28 @@ GLIB_VAR const gchar * const g_utf8_skip;
*/
#define g_utf8_next_char(p) (char *)((p) + g_utf8_skip[*(const guchar *)(p)])
+GLIB_AVAILABLE_IN_ALL
gunichar g_utf8_get_char (const gchar *p) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gunichar g_utf8_get_char_validated (const gchar *p,
gssize max_len) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_offset_to_pointer (const gchar *str,
glong offset) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
glong g_utf8_pointer_to_offset (const gchar *str,
const gchar *pos) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_prev_char (const gchar *p) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_find_next_char (const gchar *p,
const gchar *end) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_find_prev_char (const gchar *str,
const gchar *p) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
glong g_utf8_strlen (const gchar *p,
gssize max) G_GNUC_PURE;
@@ -633,66 +675,82 @@ gchar *g_utf8_substring (const gchar *str,
glong start_pos,
glong end_pos) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_strncpy (gchar *dest,
const gchar *src,
gsize n);
/* Find the UTF-8 character corresponding to ch, in string p. These
functions are equivalants to strchr and strrchr */
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_strchr (const gchar *p,
gssize len,
gunichar c);
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_strrchr (const gchar *p,
gssize len,
gunichar c);
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf8_strreverse (const gchar *str,
gssize len);
+GLIB_AVAILABLE_IN_ALL
gunichar2 *g_utf8_to_utf16 (const gchar *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gunichar * g_utf8_to_ucs4 (const gchar *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gunichar * g_utf8_to_ucs4_fast (const gchar *str,
glong len,
glong *items_written) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gunichar * g_utf16_to_ucs4 (const gunichar2 *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_utf16_to_utf8 (const gunichar2 *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gunichar2 *g_ucs4_to_utf16 (const gunichar *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar* g_ucs4_to_utf8 (const gunichar *str,
glong len,
glong *items_read,
glong *items_written,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gint g_unichar_to_utf8 (gunichar c,
gchar *outbuf);
+GLIB_AVAILABLE_IN_ALL
gboolean g_utf8_validate (const gchar *str,
gssize max_len,
const gchar **end);
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_strup (const gchar *str,
gssize len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_strdown (const gchar *str,
gssize len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_casefold (const gchar *str,
gssize len) G_GNUC_MALLOC;
@@ -731,20 +789,23 @@ typedef enum {
G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE
} GNormalizeMode;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_normalize (const gchar *str,
gssize len,
GNormalizeMode mode) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gint g_utf8_collate (const gchar *str1,
const gchar *str2) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_collate_key (const gchar *str,
gssize len) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_ALL
gchar *g_utf8_collate_key_for_filename (const gchar *str,
gssize len) G_GNUC_MALLOC;
/* private */
-
gchar *_g_utf8_make_valid (const gchar *name);
G_END_DECLS
diff --git a/glib/glib/gunicodeprivate.h b/glib/glib/gunicodeprivate.h
index c6cca84..c5af3b5 100644
--- a/glib/glib/gunicodeprivate.h
+++ b/glib/glib/gunicodeprivate.h
@@ -25,9 +25,8 @@
G_BEGIN_DECLS
-G_GNUC_INTERNAL gunichar *_g_utf8_normalize_wc
- (const gchar *str,
- gssize max_len,
+gunichar *_g_utf8_normalize_wc (const gchar *str,
+ gssize max_len,
GNormalizeMode mode);
G_END_DECLS
diff --git a/glib/glib/gunicollate.c b/glib/glib/gunicollate.c
index 3649786..050dd60 100644
--- a/glib/glib/gunicollate.c
+++ b/glib/glib/gunicollate.c
@@ -217,29 +217,28 @@ collate_key_to_string (UCCollationValue *key,
gsize key_len)
{
gchar *result;
- gsize result_len;
+ gsize result_len = 0;
+ const gsize start = 2 * sizeof (void *) / sizeof (UCCollationValue);
gsize i;
- /* Pretty smart algorithm here: ignore first eight bytes of the
- * collation key. It doesn't produce results equivalent to
- * UCCompareCollationKeys's, but the difference seems to be only
- * that UCCompareCollationKeys in some cases produces 0 where our
- * comparison gets -1 or 1. */
-
- if (key_len * sizeof (UCCollationValue) <= 8)
+ /* The first codes should be skipped: the same string on the same
+ * system can get different values at runtime in those positions,
+ * and they do not sort correctly. The exact size of the prefix
+ * depends on whether we are building 64 or 32 bit.
+ */
+ if (key_len <= start)
return g_strdup ("");
- result_len = 0;
- for (i = 8; i < key_len * sizeof (UCCollationValue); i++)
- /* there may be nul bytes, encode byteval+1 */
- result_len += utf8_encode (NULL, *((guchar*)key + i) + 1);
+ for (i = start; i < key_len; i++)
+ result_len += utf8_encode (NULL, g_htonl (key[i] + 1));
result = g_malloc (result_len + 1);
result_len = 0;
- for (i = 8; i < key_len * sizeof (UCCollationValue); i++)
- result_len += utf8_encode (result + result_len, *((guchar*)key + i) + 1);
+ for (i = start; i < key_len; i++)
+ result_len += utf8_encode (result + result_len, g_htonl (key[i] + 1));
+
+ result[result_len] = '\0';
- result[result_len] = 0;
return result;
}
diff --git a/glib/glib/gunicomp.h b/glib/glib/gunicomp.h
index a686553..f389279 100644
--- a/glib/glib/gunicomp.h
+++ b/glib/glib/gunicomp.h
@@ -1,9 +1,9 @@
#define COMPOSE_FIRST_START 1
#define COMPOSE_FIRST_SINGLE_START 147
-#define COMPOSE_SECOND_START 371
-#define COMPOSE_SECOND_SINGLE_START 402
+#define COMPOSE_SECOND_START 373
+#define COMPOSE_SECOND_SINGLE_START 404
-#define COMPOSE_TABLE_LAST 272
+#define COMPOSE_TABLE_LAST 273
static const guint16 compose_data[][256] = {
{ /* page 0, index 0 */
@@ -48,10 +48,10 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 3, index 3 */
- 371, 372, 373, 374, 375, 0, 376, 377, 378, 379, 380, 381, 382, 0, 0, 383,
- 0, 384, 0, 385, 386, 0, 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, 0, 0, 0, 388,
- 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, 395, 0, 396, 397, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0,
+ 373, 374, 375, 376, 377, 0, 378, 379, 380, 381, 382, 383, 384, 0, 0, 385,
+ 0, 386, 0, 387, 388, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, 390,
+ 391, 392, 393, 394, 395, 0, 0, 0, 0, 396, 397, 0, 398, 399, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0,
@@ -79,7 +79,7 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 210, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 402, 403, 404, 0, 0, 0, 0, 0, 0, 0,
+ 210, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 404, 405, 406, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -96,22 +96,22 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 407,
0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 11, index 7 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 0,
- 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0, 0, 0, 0, 0,
+ 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 410, 411, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 410, 0, 0, 0, 0, 0, 0, 0, 102, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 102, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 12, index 8 */
@@ -123,21 +123,21 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221,
- 0, 0, 412, 0, 0, 0, 103, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413,
- 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 414, 0, 0, 0, 103, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415,
+ 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 13, index 9 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 104,
- 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 104,
+ 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, 418, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 105, 0, 0, 224, 0, 0, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 0, 0, 0, 420, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 105, 0, 0, 224, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 16, index 10 */
@@ -228,7 +228,7 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 331, 0, 332, 0, 333, 0, 334, 0, 335, 0, 336, 0, 337, 0, 338, 0,
339, 0, 340, 0, 341, 0, 342, 0, 0, 343, 0, 344, 0, 345, 0, 0, 0, 0, 0, 0,
137, 0, 0, 138, 0, 0, 139, 0, 0, 140, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 401,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 403,
0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 348, 0, 349, 0, 350,
0, 351, 0, 352, 0, 353, 0, 354, 0, 355, 0, 356, 0, 357, 0, 358, 0, 359,
0, 0, 360, 0, 361, 0, 362, 0, 0, 0, 0, 0, 0, 142, 0, 0, 143, 0, 0, 144,
@@ -247,6 +247,19 @@ static const guint16 compose_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ },
+ { /* page 273, index 18 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
};
@@ -523,7 +536,8 @@ static const gint16 compose_table[COMPOSE_TABLE_LAST + 1] = {
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
- 17 /* page 272 */
+ 17 /* page 272 */,
+ 18 /* page 273 */
};
static const gunichar compose_first_single[][2] = {
@@ -750,7 +764,9 @@ static const gunichar compose_first_single[][2] = {
{ 0x3099, 0x30fe },
{ 0x110ba, 0x1109a },
{ 0x110ba, 0x1109c },
- { 0x110ba, 0x110ab }
+ { 0x110ba, 0x110ab },
+ { 0x11127, 0x1112e },
+ { 0x11127, 0x1112f }
};
static const guint16 compose_second_single[][2] = {
{ 0x0627, 0x0622 },
diff --git a/glib/glib/gunidecomp.h b/glib/glib/gunidecomp.h
index cf41100..0e94779 100644
--- a/glib/glib/gunidecomp.h
+++ b/glib/glib/gunidecomp.h
@@ -96,8 +96,9 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, 220,
+ 27, 28, 29, 230, 230, 230, 220, 230, 230, 220, 220, 230, 230, 230, 230,
+ 0
},
{ /* page 9, index 6 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -277,7 +278,7 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230, 230,
230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
@@ -293,8 +294,8 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 1, 220,
220, 220, 220, 220, 230, 230, 220, 220, 220, 220, 230, 0, 1, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0
+ 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
},
{ /* page 29, index 21 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -369,13 +370,13 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 168, index 27 */
0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -415,7 +416,7 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0,
0, 0, 230, 230, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
{ /* page 171, index 30 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -495,7 +496,33 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
- { /* page 465, index 36 */
+ { /* page 273, index 36 */
+ 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ },
+ { /* page 278, index 37 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ },
+ { /* page 465, index 38 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -509,7 +536,7 @@ static const guchar cclass_data[][256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0
},
- { /* page 466, index 37 */
+ { /* page 466, index 39 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0,
@@ -798,10 +825,12 @@ static const gint16 combining_class_table_part1[763] = {
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
35 /* page 272 */,
+ 36 /* page 273 */,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
+ 37 /* page 278 */,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
@@ -988,10 +1017,8 @@ static const gint16 combining_class_table_part1[763] = {
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
- 0 + G_UNICODE_MAX_TABLE_INDEX,
- 0 + G_UNICODE_MAX_TABLE_INDEX,
- 36 /* page 465 */,
- 37 /* page 466 */,
+ 38 /* page 465 */,
+ 39 /* page 466 */,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
0 + G_UNICODE_MAX_TABLE_INDEX,
@@ -4406,1194 +4433,1198 @@ static const decomposition decomp_table[] =
{ 0x33fe, G_UNICODE_NOT_PRESENT_OFFSET, 10866 },
{ 0x33ff, G_UNICODE_NOT_PRESENT_OFFSET, 10872 },
{ 0xa770, G_UNICODE_NOT_PRESENT_OFFSET, 10876 },
- { 0xf900, 10880, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf901, 10884, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xa7f8, G_UNICODE_NOT_PRESENT_OFFSET, 10880 },
+ { 0xa7f9, G_UNICODE_NOT_PRESENT_OFFSET, 10883 },
+ { 0xf900, 10886, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf901, 10890, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf902, 6813, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf903, 10888, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf904, 10892, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf905, 10896, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf906, 10900, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf903, 10894, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf904, 10898, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf905, 10902, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf906, 10906, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf907, 7029, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf908, 7029, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf909, 10904, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf909, 10910, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf90a, 6845, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf90b, 10908, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf90c, 10912, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf90d, 10916, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf90e, 10920, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf90f, 10924, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf910, 10928, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf911, 10932, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf912, 10936, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf913, 10940, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf914, 10944, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf915, 10948, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf916, 10952, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf917, 10956, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf918, 10960, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf919, 10964, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91a, 10968, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91b, 10972, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91c, 10976, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91d, 10980, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91e, 10984, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf91f, 10988, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf920, 10992, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf921, 10996, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf922, 11000, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf923, 11004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf924, 11008, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf925, 11012, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf926, 11016, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf927, 11020, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf928, 11024, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf929, 11028, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92a, 11032, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92b, 11036, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92c, 11040, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92d, 11044, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92e, 11048, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf92f, 11052, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf930, 11056, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf931, 11060, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf932, 11064, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf933, 11068, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf90b, 10914, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf90c, 10918, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf90d, 10922, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf90e, 10926, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf90f, 10930, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf910, 10934, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf911, 10938, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf912, 10942, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf913, 10946, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf914, 10950, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf915, 10954, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf916, 10958, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf917, 10962, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf918, 10966, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf919, 10970, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91a, 10974, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91b, 10978, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91c, 10982, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91d, 10986, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91e, 10990, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf91f, 10994, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf920, 10998, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf921, 11002, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf922, 11006, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf923, 11010, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf924, 11014, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf925, 11018, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf926, 11022, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf927, 11026, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf928, 11030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf929, 11034, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92a, 11038, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92b, 11042, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92c, 11046, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92d, 11050, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92e, 11054, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf92f, 11058, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf930, 11062, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf931, 11066, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf932, 11070, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf933, 11074, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf934, 6677, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf935, 11072, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf936, 11076, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf937, 11080, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf938, 11084, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf939, 11088, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93a, 11092, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93b, 11096, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93c, 11100, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93d, 11104, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93e, 11108, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf93f, 11112, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf935, 11078, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf936, 11082, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf937, 11086, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf938, 11090, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf939, 11094, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93a, 11098, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93b, 11102, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93c, 11106, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93d, 11110, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93e, 11114, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf93f, 11118, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf940, 6969, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf941, 11116, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf942, 11120, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf943, 11124, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf944, 11128, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf945, 11132, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf946, 11136, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf947, 11140, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf948, 11144, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf949, 11148, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94a, 11152, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94b, 11156, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94c, 11160, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94d, 11164, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94e, 11168, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf94f, 11172, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf950, 11176, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf951, 11180, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf952, 11184, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf953, 11188, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf954, 11192, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf955, 11196, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf956, 11200, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf957, 11204, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf958, 11208, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf959, 11212, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95a, 11216, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95b, 11220, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95c, 10944, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95d, 11224, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95e, 11228, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf95f, 11232, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf960, 11236, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf961, 11240, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf962, 11244, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf963, 11248, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf964, 11252, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf965, 11256, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf966, 11260, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf967, 11264, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf968, 11268, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf969, 11272, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96a, 11276, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96b, 11280, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96c, 11284, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96d, 11288, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96e, 11292, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf96f, 11296, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf970, 11300, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf941, 11122, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf942, 11126, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf943, 11130, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf944, 11134, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf945, 11138, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf946, 11142, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf947, 11146, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf948, 11150, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf949, 11154, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94a, 11158, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94b, 11162, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94c, 11166, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94d, 11170, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94e, 11174, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf94f, 11178, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf950, 11182, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf951, 11186, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf952, 11190, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf953, 11194, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf954, 11198, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf955, 11202, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf956, 11206, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf957, 11210, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf958, 11214, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf959, 11218, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95a, 11222, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95b, 11226, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95c, 10950, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95d, 11230, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95e, 11234, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf95f, 11238, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf960, 11242, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf961, 11246, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf962, 11250, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf963, 11254, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf964, 11258, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf965, 11262, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf966, 11266, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf967, 11270, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf968, 11274, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf969, 11278, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96a, 11282, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96b, 11286, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96c, 11290, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96d, 11294, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96e, 11298, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf96f, 11302, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf970, 11306, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf971, 6821, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf972, 11304, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf973, 11308, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf974, 11312, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf975, 11316, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf976, 11320, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf977, 11324, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf978, 11328, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf979, 11332, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97a, 11336, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97b, 11340, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97c, 11344, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97d, 11348, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97e, 11352, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf97f, 11356, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf980, 11360, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf972, 11310, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf973, 11314, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf974, 11318, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf975, 11322, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf976, 11326, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf977, 11330, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf978, 11334, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf979, 11338, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97a, 11342, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97b, 11346, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97c, 11350, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97d, 11354, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97e, 11358, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf97f, 11362, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf980, 11366, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf981, 6329, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf982, 11364, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf983, 11368, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf984, 11372, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf985, 11376, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf986, 11380, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf987, 11384, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf988, 11388, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf989, 11392, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf982, 11370, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf983, 11374, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf984, 11378, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf985, 11382, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf986, 11386, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf987, 11390, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf988, 11394, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf989, 11398, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf98a, 6253, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf98b, 11396, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf98c, 11400, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf98d, 11404, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf98e, 11408, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf98f, 11412, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf990, 11416, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf991, 11420, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf992, 11424, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf993, 11428, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf994, 11432, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf995, 11436, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf996, 11440, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf997, 11444, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf998, 11448, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf999, 11452, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99a, 11456, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99b, 11460, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99c, 11464, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99d, 11468, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99e, 11472, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf99f, 11476, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a0, 11480, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a1, 11296, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a2, 11484, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a3, 11488, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a4, 11492, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a5, 11496, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a6, 11500, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a7, 11504, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a8, 11508, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9a9, 11512, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9aa, 11232, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ab, 11516, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ac, 11520, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ad, 11524, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ae, 11528, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9af, 11532, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b0, 11536, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b1, 11540, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b2, 11544, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b3, 11548, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b4, 11552, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b5, 11556, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b6, 11560, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b7, 11564, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b8, 11568, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9b9, 11572, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ba, 11576, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9bb, 11580, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9bc, 11584, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9bd, 11588, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9be, 11592, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9bf, 10944, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c0, 11596, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c1, 11600, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c2, 11604, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c3, 11608, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf98b, 11402, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf98c, 11406, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf98d, 11410, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf98e, 11414, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf98f, 11418, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf990, 11422, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf991, 11426, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf992, 11430, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf993, 11434, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf994, 11438, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf995, 11442, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf996, 11446, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf997, 11450, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf998, 11454, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf999, 11458, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99a, 11462, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99b, 11466, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99c, 11470, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99d, 11474, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99e, 11478, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf99f, 11482, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a0, 11486, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a1, 11302, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a2, 11490, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a3, 11494, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a4, 11498, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a5, 11502, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a6, 11506, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a7, 11510, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a8, 11514, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9a9, 11518, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9aa, 11238, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ab, 11522, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ac, 11526, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ad, 11530, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ae, 11534, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9af, 11538, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b0, 11542, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b1, 11546, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b2, 11550, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b3, 11554, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b4, 11558, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b5, 11562, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b6, 11566, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b7, 11570, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b8, 11574, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9b9, 11578, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ba, 11582, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9bb, 11586, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9bc, 11590, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9bd, 11594, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9be, 11598, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9bf, 10950, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c0, 11602, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c1, 11606, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c2, 11610, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c3, 11614, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf9c4, 7025, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c5, 11612, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c6, 11616, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c7, 11620, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c8, 11624, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9c9, 11628, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ca, 11632, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9cb, 11636, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9cc, 11640, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9cd, 11644, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ce, 11648, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9cf, 11652, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d0, 11656, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c5, 11618, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c6, 11622, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c7, 11626, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c8, 11630, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9c9, 11634, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ca, 11638, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9cb, 11642, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9cc, 11646, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9cd, 11650, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ce, 11654, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9cf, 11658, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d0, 11662, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf9d1, 8562, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d2, 11660, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d3, 11664, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d4, 11668, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d5, 11672, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d6, 11676, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d7, 11680, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d8, 11684, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9d9, 11688, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9da, 11692, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9db, 11240, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9dc, 11696, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9dd, 11700, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9de, 11704, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9df, 11708, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e0, 11712, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e1, 11716, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e2, 11720, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e3, 11724, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e4, 11728, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e5, 11732, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e6, 11736, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e7, 11740, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9e8, 11744, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d2, 11666, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d3, 11670, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d4, 11674, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d5, 11678, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d6, 11682, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d7, 11686, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d8, 11690, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9d9, 11694, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9da, 11698, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9db, 11246, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9dc, 11702, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9dd, 11706, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9de, 11710, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9df, 11714, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e0, 11718, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e1, 11722, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e2, 11726, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e3, 11730, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e4, 11734, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e5, 11738, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e6, 11742, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e7, 11746, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9e8, 11750, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf9e9, 6841, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ea, 11748, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9eb, 11752, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ec, 11756, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ed, 11760, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ee, 11764, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ef, 11768, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f0, 11772, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f1, 11776, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f2, 11780, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f3, 11784, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f4, 11788, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f5, 11792, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f6, 11796, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ea, 11754, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9eb, 11758, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ec, 11762, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ed, 11766, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ee, 11770, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ef, 11774, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f0, 11778, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f1, 11782, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f2, 11786, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f3, 11790, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f4, 11794, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f5, 11798, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f6, 11802, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xf9f7, 6645, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f8, 11800, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9f9, 11804, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9fa, 11808, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9fb, 11812, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9fc, 11816, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9fd, 11820, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9fe, 11824, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xf9ff, 11828, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa00, 11832, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa01, 11836, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa02, 11840, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa03, 11844, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa04, 11848, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa05, 11852, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa06, 11856, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa07, 11860, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f8, 11806, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9f9, 11810, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9fa, 11814, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9fb, 11818, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9fc, 11822, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9fd, 11826, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9fe, 11830, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xf9ff, 11834, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa00, 11838, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa01, 11842, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa02, 11846, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa03, 11850, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa04, 11854, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa05, 11858, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa06, 11862, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa07, 11866, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa08, 6753, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa09, 11864, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa09, 11870, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa0a, 6765, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa0b, 11868, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa0c, 11872, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa0d, 11876, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa10, 11880, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa12, 11884, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa15, 11888, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa16, 11892, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa17, 11896, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa18, 11900, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa19, 11904, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa1a, 11908, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa1b, 11912, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa1c, 11916, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa1d, 11920, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa0b, 11874, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa0c, 11878, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa0d, 11882, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa10, 11886, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa12, 11890, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa15, 11894, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa16, 11898, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa17, 11902, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa18, 11906, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa19, 11910, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa1a, 11914, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa1b, 11918, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa1c, 11922, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa1d, 11926, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa1e, 6673, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa20, 11924, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa22, 11928, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa25, 11932, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa26, 11936, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa2a, 11940, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa2b, 11944, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa2c, 11948, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa2d, 11952, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa30, 11956, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa31, 11960, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa32, 11964, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa33, 11968, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa34, 11972, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa35, 11976, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa36, 11980, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa37, 11984, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa38, 11988, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa39, 11992, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa3a, 11996, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa3b, 12000, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa20, 11930, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa22, 11934, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa25, 11938, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa26, 11942, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2a, 11946, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2b, 11950, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2c, 11954, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2d, 11958, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2e, 11962, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa2f, 11966, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa30, 11970, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa31, 11974, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa32, 11978, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa33, 11982, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa34, 11986, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa35, 11990, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa36, 11994, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa37, 11998, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa38, 12002, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa39, 12006, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa3a, 12010, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa3b, 12014, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa3c, 6357, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa3d, 12004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa3e, 12008, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa3f, 12012, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa40, 12016, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa41, 12020, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa42, 12024, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa43, 12028, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa44, 12032, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa45, 12036, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa46, 12040, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa47, 12044, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa48, 12048, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa49, 12052, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa4a, 12056, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa4b, 12060, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa3d, 12018, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa3e, 12022, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa3f, 12026, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa40, 12030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa41, 12034, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa42, 12038, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa43, 12042, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa44, 12046, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa45, 12050, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa46, 12054, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa47, 12058, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa48, 12062, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa49, 12066, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa4a, 12070, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa4b, 12074, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa4c, 8582, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa4d, 12064, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa4e, 12068, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa4f, 12072, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa50, 12076, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa4d, 12078, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa4e, 12082, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa4f, 12086, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa50, 12090, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa51, 8598, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa52, 12080, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa53, 12084, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa54, 12088, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa55, 12092, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa56, 12096, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa57, 11440, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa58, 12100, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa59, 12104, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5a, 12108, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5b, 12112, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5c, 12116, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5d, 12120, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5e, 12120, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa5f, 12124, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa60, 12128, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa61, 12132, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa62, 12136, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa63, 12140, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa64, 12144, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa65, 12148, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa66, 12152, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa67, 11932, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa68, 12156, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa69, 12160, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa6a, 12164, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa6b, 12168, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa6c, 12172, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa6d, 12177, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa70, 12181, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa71, 12185, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa72, 12189, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa73, 12193, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa74, 12197, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa75, 12201, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa76, 12205, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa77, 12209, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa78, 11980, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa79, 12213, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7a, 12217, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7b, 12221, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7c, 11880, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7d, 12225, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7e, 12229, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa7f, 12233, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa80, 12237, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa81, 12241, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa82, 12245, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa83, 12249, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa84, 12253, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa85, 12257, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa86, 12261, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa87, 12265, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa88, 12269, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa89, 12012, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8a, 12273, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8b, 12016, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8c, 12277, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8d, 12281, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8e, 12285, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa8f, 12289, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa90, 12293, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa91, 11884, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa92, 11028, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa93, 12297, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa94, 12301, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa52, 12094, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa53, 12098, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa54, 12102, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa55, 12106, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa56, 12110, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa57, 11446, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa58, 12114, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa59, 12118, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5a, 12122, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5b, 12126, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5c, 12130, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5d, 12134, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5e, 12134, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa5f, 12138, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa60, 12142, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa61, 12146, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa62, 12150, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa63, 12154, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa64, 12158, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa65, 12162, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa66, 12166, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa67, 11938, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa68, 12170, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa69, 12174, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa6a, 12178, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa6b, 12182, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa6c, 12186, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa6d, 12191, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa70, 12195, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa71, 12199, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa72, 12203, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa73, 12207, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa74, 12211, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa75, 12215, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa76, 12219, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa77, 12223, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa78, 11994, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa79, 12227, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7a, 12231, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7b, 12235, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7c, 11886, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7d, 12239, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7e, 12243, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa7f, 12247, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa80, 12251, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa81, 12255, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa82, 12259, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa83, 12263, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa84, 12267, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa85, 12271, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa86, 12275, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa87, 12279, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa88, 12283, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa89, 12026, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8a, 12287, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8b, 12030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8c, 12291, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8d, 12295, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8e, 12299, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa8f, 12303, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa90, 12307, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa91, 11890, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa92, 11034, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa93, 12311, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa94, 12315, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xfa95, 6489, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa96, 11300, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa97, 11632, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa98, 12305, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa99, 12309, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9a, 12044, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9b, 12313, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9c, 12048, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9d, 12317, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9e, 12321, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfa9f, 12325, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa0, 11892, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa1, 12329, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa2, 12333, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa3, 12337, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa4, 12341, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa5, 12345, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa6, 11896, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa7, 12349, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa8, 12353, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaa9, 12357, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaaa, 12361, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaab, 12365, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaac, 12369, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaad, 12096, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaae, 12373, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaaf, 12377, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab0, 11440, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab1, 12381, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab2, 12112, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab3, 12385, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab4, 12389, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab5, 12393, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab6, 12397, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab7, 12401, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab8, 12132, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfab9, 12405, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaba, 11928, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfabb, 12409, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfabc, 12136, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfabd, 11224, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfabe, 12413, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfabf, 12140, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac0, 12417, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac1, 12148, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac2, 12421, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac3, 12425, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac4, 12429, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac5, 12433, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac6, 12437, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac7, 12156, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac8, 11916, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfac9, 12441, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfaca, 12160, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfacb, 12445, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfacc, 12164, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfacd, 12449, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa96, 11306, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa97, 11638, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa98, 12319, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa99, 12323, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9a, 12058, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9b, 12327, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9c, 12062, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9d, 12331, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9e, 12335, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfa9f, 12339, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa0, 11898, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa1, 12343, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa2, 12347, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa3, 12351, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa4, 12355, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa5, 12359, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa6, 11902, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa7, 12363, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa8, 12367, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaa9, 12371, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaaa, 12375, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaab, 12379, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaac, 12383, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaad, 12110, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaae, 12387, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaaf, 12391, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab0, 11446, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab1, 12395, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab2, 12126, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab3, 12399, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab4, 12403, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab5, 12407, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab6, 12411, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab7, 12415, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab8, 12146, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfab9, 12419, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaba, 11934, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfabb, 12423, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfabc, 12150, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfabd, 11230, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfabe, 12427, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfabf, 12154, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac0, 12431, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac1, 12162, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac2, 12435, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac3, 12439, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac4, 12443, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac5, 12447, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac6, 12451, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac7, 12170, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac8, 11922, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfac9, 12455, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfaca, 12174, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfacb, 12459, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfacc, 12178, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfacd, 12463, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0xface, 7029, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfacf, 12453, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad0, 12458, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad1, 12463, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad2, 12468, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad3, 12472, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad4, 12476, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad5, 12480, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad6, 12485, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad7, 12490, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad8, 12495, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfad9, 12499, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb00, G_UNICODE_NOT_PRESENT_OFFSET, 12503 },
- { 0xfb01, G_UNICODE_NOT_PRESENT_OFFSET, 12506 },
- { 0xfb02, G_UNICODE_NOT_PRESENT_OFFSET, 12509 },
- { 0xfb03, G_UNICODE_NOT_PRESENT_OFFSET, 12512 },
- { 0xfb04, G_UNICODE_NOT_PRESENT_OFFSET, 12516 },
- { 0xfb05, G_UNICODE_NOT_PRESENT_OFFSET, 12520 },
- { 0xfb06, G_UNICODE_NOT_PRESENT_OFFSET, 12520 },
- { 0xfb13, G_UNICODE_NOT_PRESENT_OFFSET, 12523 },
- { 0xfb14, G_UNICODE_NOT_PRESENT_OFFSET, 12528 },
- { 0xfb15, G_UNICODE_NOT_PRESENT_OFFSET, 12533 },
- { 0xfb16, G_UNICODE_NOT_PRESENT_OFFSET, 12538 },
- { 0xfb17, G_UNICODE_NOT_PRESENT_OFFSET, 12543 },
- { 0xfb1d, 12548, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb1f, 12553, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb20, G_UNICODE_NOT_PRESENT_OFFSET, 12558 },
+ { 0xfacf, 12467, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad0, 12472, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad1, 12477, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad2, 12482, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad3, 12486, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad4, 12490, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad5, 12494, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad6, 12499, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad7, 12504, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad8, 12509, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfad9, 12513, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb00, G_UNICODE_NOT_PRESENT_OFFSET, 12517 },
+ { 0xfb01, G_UNICODE_NOT_PRESENT_OFFSET, 12520 },
+ { 0xfb02, G_UNICODE_NOT_PRESENT_OFFSET, 12523 },
+ { 0xfb03, G_UNICODE_NOT_PRESENT_OFFSET, 12526 },
+ { 0xfb04, G_UNICODE_NOT_PRESENT_OFFSET, 12530 },
+ { 0xfb05, G_UNICODE_NOT_PRESENT_OFFSET, 12534 },
+ { 0xfb06, G_UNICODE_NOT_PRESENT_OFFSET, 12534 },
+ { 0xfb13, G_UNICODE_NOT_PRESENT_OFFSET, 12537 },
+ { 0xfb14, G_UNICODE_NOT_PRESENT_OFFSET, 12542 },
+ { 0xfb15, G_UNICODE_NOT_PRESENT_OFFSET, 12547 },
+ { 0xfb16, G_UNICODE_NOT_PRESENT_OFFSET, 12552 },
+ { 0xfb17, G_UNICODE_NOT_PRESENT_OFFSET, 12557 },
+ { 0xfb1d, 12562, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb1f, 12567, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb20, G_UNICODE_NOT_PRESENT_OFFSET, 12572 },
{ 0xfb21, G_UNICODE_NOT_PRESENT_OFFSET, 5338 },
{ 0xfb22, G_UNICODE_NOT_PRESENT_OFFSET, 5347 },
- { 0xfb23, G_UNICODE_NOT_PRESENT_OFFSET, 12561 },
- { 0xfb24, G_UNICODE_NOT_PRESENT_OFFSET, 12564 },
- { 0xfb25, G_UNICODE_NOT_PRESENT_OFFSET, 12567 },
- { 0xfb26, G_UNICODE_NOT_PRESENT_OFFSET, 12570 },
- { 0xfb27, G_UNICODE_NOT_PRESENT_OFFSET, 12573 },
- { 0xfb28, G_UNICODE_NOT_PRESENT_OFFSET, 12576 },
+ { 0xfb23, G_UNICODE_NOT_PRESENT_OFFSET, 12575 },
+ { 0xfb24, G_UNICODE_NOT_PRESENT_OFFSET, 12578 },
+ { 0xfb25, G_UNICODE_NOT_PRESENT_OFFSET, 12581 },
+ { 0xfb26, G_UNICODE_NOT_PRESENT_OFFSET, 12584 },
+ { 0xfb27, G_UNICODE_NOT_PRESENT_OFFSET, 12587 },
+ { 0xfb28, G_UNICODE_NOT_PRESENT_OFFSET, 12590 },
{ 0xfb29, G_UNICODE_NOT_PRESENT_OFFSET, 5267 },
- { 0xfb2a, 12579, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb2b, 12584, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb2c, 12589, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb2d, 12596, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb2e, 12603, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb2f, 12608, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb30, 12613, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb31, 12618, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb32, 12623, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb33, 12628, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb34, 12633, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb35, 12638, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb36, 12643, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb38, 12648, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb39, 12653, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb3a, 12658, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb3b, 12663, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb3c, 12668, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb3e, 12673, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb40, 12678, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb41, 12683, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb43, 12688, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb44, 12693, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb46, 12698, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb47, 12703, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb48, 12708, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb49, 12713, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4a, 12718, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4b, 12723, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4c, 12728, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4d, 12733, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4e, 12738, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0xfb4f, G_UNICODE_NOT_PRESENT_OFFSET, 12743 },
- { 0xfb50, G_UNICODE_NOT_PRESENT_OFFSET, 12748 },
- { 0xfb51, G_UNICODE_NOT_PRESENT_OFFSET, 12748 },
- { 0xfb52, G_UNICODE_NOT_PRESENT_OFFSET, 12751 },
- { 0xfb53, G_UNICODE_NOT_PRESENT_OFFSET, 12751 },
- { 0xfb54, G_UNICODE_NOT_PRESENT_OFFSET, 12751 },
- { 0xfb55, G_UNICODE_NOT_PRESENT_OFFSET, 12751 },
- { 0xfb56, G_UNICODE_NOT_PRESENT_OFFSET, 12754 },
- { 0xfb57, G_UNICODE_NOT_PRESENT_OFFSET, 12754 },
- { 0xfb58, G_UNICODE_NOT_PRESENT_OFFSET, 12754 },
- { 0xfb59, G_UNICODE_NOT_PRESENT_OFFSET, 12754 },
- { 0xfb5a, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
- { 0xfb5b, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
- { 0xfb5c, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
- { 0xfb5d, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
- { 0xfb5e, G_UNICODE_NOT_PRESENT_OFFSET, 12760 },
- { 0xfb5f, G_UNICODE_NOT_PRESENT_OFFSET, 12760 },
- { 0xfb60, G_UNICODE_NOT_PRESENT_OFFSET, 12760 },
- { 0xfb61, G_UNICODE_NOT_PRESENT_OFFSET, 12760 },
- { 0xfb62, G_UNICODE_NOT_PRESENT_OFFSET, 12763 },
- { 0xfb63, G_UNICODE_NOT_PRESENT_OFFSET, 12763 },
- { 0xfb64, G_UNICODE_NOT_PRESENT_OFFSET, 12763 },
- { 0xfb65, G_UNICODE_NOT_PRESENT_OFFSET, 12763 },
- { 0xfb66, G_UNICODE_NOT_PRESENT_OFFSET, 12766 },
- { 0xfb67, G_UNICODE_NOT_PRESENT_OFFSET, 12766 },
- { 0xfb68, G_UNICODE_NOT_PRESENT_OFFSET, 12766 },
- { 0xfb69, G_UNICODE_NOT_PRESENT_OFFSET, 12766 },
- { 0xfb6a, G_UNICODE_NOT_PRESENT_OFFSET, 12769 },
- { 0xfb6b, G_UNICODE_NOT_PRESENT_OFFSET, 12769 },
- { 0xfb6c, G_UNICODE_NOT_PRESENT_OFFSET, 12769 },
- { 0xfb6d, G_UNICODE_NOT_PRESENT_OFFSET, 12769 },
- { 0xfb6e, G_UNICODE_NOT_PRESENT_OFFSET, 12772 },
- { 0xfb6f, G_UNICODE_NOT_PRESENT_OFFSET, 12772 },
- { 0xfb70, G_UNICODE_NOT_PRESENT_OFFSET, 12772 },
- { 0xfb71, G_UNICODE_NOT_PRESENT_OFFSET, 12772 },
- { 0xfb72, G_UNICODE_NOT_PRESENT_OFFSET, 12775 },
- { 0xfb73, G_UNICODE_NOT_PRESENT_OFFSET, 12775 },
- { 0xfb74, G_UNICODE_NOT_PRESENT_OFFSET, 12775 },
- { 0xfb75, G_UNICODE_NOT_PRESENT_OFFSET, 12775 },
- { 0xfb76, G_UNICODE_NOT_PRESENT_OFFSET, 12778 },
- { 0xfb77, G_UNICODE_NOT_PRESENT_OFFSET, 12778 },
- { 0xfb78, G_UNICODE_NOT_PRESENT_OFFSET, 12778 },
- { 0xfb79, G_UNICODE_NOT_PRESENT_OFFSET, 12778 },
- { 0xfb7a, G_UNICODE_NOT_PRESENT_OFFSET, 12781 },
- { 0xfb7b, G_UNICODE_NOT_PRESENT_OFFSET, 12781 },
- { 0xfb7c, G_UNICODE_NOT_PRESENT_OFFSET, 12781 },
- { 0xfb7d, G_UNICODE_NOT_PRESENT_OFFSET, 12781 },
- { 0xfb7e, G_UNICODE_NOT_PRESENT_OFFSET, 12784 },
- { 0xfb7f, G_UNICODE_NOT_PRESENT_OFFSET, 12784 },
- { 0xfb80, G_UNICODE_NOT_PRESENT_OFFSET, 12784 },
- { 0xfb81, G_UNICODE_NOT_PRESENT_OFFSET, 12784 },
- { 0xfb82, G_UNICODE_NOT_PRESENT_OFFSET, 12787 },
- { 0xfb83, G_UNICODE_NOT_PRESENT_OFFSET, 12787 },
- { 0xfb84, G_UNICODE_NOT_PRESENT_OFFSET, 12790 },
- { 0xfb85, G_UNICODE_NOT_PRESENT_OFFSET, 12790 },
- { 0xfb86, G_UNICODE_NOT_PRESENT_OFFSET, 12793 },
- { 0xfb87, G_UNICODE_NOT_PRESENT_OFFSET, 12793 },
- { 0xfb88, G_UNICODE_NOT_PRESENT_OFFSET, 12796 },
- { 0xfb89, G_UNICODE_NOT_PRESENT_OFFSET, 12796 },
- { 0xfb8a, G_UNICODE_NOT_PRESENT_OFFSET, 12799 },
- { 0xfb8b, G_UNICODE_NOT_PRESENT_OFFSET, 12799 },
- { 0xfb8c, G_UNICODE_NOT_PRESENT_OFFSET, 12802 },
- { 0xfb8d, G_UNICODE_NOT_PRESENT_OFFSET, 12802 },
- { 0xfb8e, G_UNICODE_NOT_PRESENT_OFFSET, 12805 },
- { 0xfb8f, G_UNICODE_NOT_PRESENT_OFFSET, 12805 },
- { 0xfb90, G_UNICODE_NOT_PRESENT_OFFSET, 12805 },
- { 0xfb91, G_UNICODE_NOT_PRESENT_OFFSET, 12805 },
- { 0xfb92, G_UNICODE_NOT_PRESENT_OFFSET, 12808 },
- { 0xfb93, G_UNICODE_NOT_PRESENT_OFFSET, 12808 },
- { 0xfb94, G_UNICODE_NOT_PRESENT_OFFSET, 12808 },
- { 0xfb95, G_UNICODE_NOT_PRESENT_OFFSET, 12808 },
- { 0xfb96, G_UNICODE_NOT_PRESENT_OFFSET, 12811 },
- { 0xfb97, G_UNICODE_NOT_PRESENT_OFFSET, 12811 },
- { 0xfb98, G_UNICODE_NOT_PRESENT_OFFSET, 12811 },
- { 0xfb99, G_UNICODE_NOT_PRESENT_OFFSET, 12811 },
- { 0xfb9a, G_UNICODE_NOT_PRESENT_OFFSET, 12814 },
- { 0xfb9b, G_UNICODE_NOT_PRESENT_OFFSET, 12814 },
- { 0xfb9c, G_UNICODE_NOT_PRESENT_OFFSET, 12814 },
- { 0xfb9d, G_UNICODE_NOT_PRESENT_OFFSET, 12814 },
- { 0xfb9e, G_UNICODE_NOT_PRESENT_OFFSET, 12817 },
- { 0xfb9f, G_UNICODE_NOT_PRESENT_OFFSET, 12817 },
- { 0xfba0, G_UNICODE_NOT_PRESENT_OFFSET, 12820 },
- { 0xfba1, G_UNICODE_NOT_PRESENT_OFFSET, 12820 },
- { 0xfba2, G_UNICODE_NOT_PRESENT_OFFSET, 12820 },
- { 0xfba3, G_UNICODE_NOT_PRESENT_OFFSET, 12820 },
+ { 0xfb2a, 12593, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb2b, 12598, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb2c, 12603, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb2d, 12610, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb2e, 12617, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb2f, 12622, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb30, 12627, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb31, 12632, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb32, 12637, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb33, 12642, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb34, 12647, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb35, 12652, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb36, 12657, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb38, 12662, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb39, 12667, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb3a, 12672, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb3b, 12677, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb3c, 12682, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb3e, 12687, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb40, 12692, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb41, 12697, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb43, 12702, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb44, 12707, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb46, 12712, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb47, 12717, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb48, 12722, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb49, 12727, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4a, 12732, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4b, 12737, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4c, 12742, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4d, 12747, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4e, 12752, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xfb4f, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
+ { 0xfb50, G_UNICODE_NOT_PRESENT_OFFSET, 12762 },
+ { 0xfb51, G_UNICODE_NOT_PRESENT_OFFSET, 12762 },
+ { 0xfb52, G_UNICODE_NOT_PRESENT_OFFSET, 12765 },
+ { 0xfb53, G_UNICODE_NOT_PRESENT_OFFSET, 12765 },
+ { 0xfb54, G_UNICODE_NOT_PRESENT_OFFSET, 12765 },
+ { 0xfb55, G_UNICODE_NOT_PRESENT_OFFSET, 12765 },
+ { 0xfb56, G_UNICODE_NOT_PRESENT_OFFSET, 12768 },
+ { 0xfb57, G_UNICODE_NOT_PRESENT_OFFSET, 12768 },
+ { 0xfb58, G_UNICODE_NOT_PRESENT_OFFSET, 12768 },
+ { 0xfb59, G_UNICODE_NOT_PRESENT_OFFSET, 12768 },
+ { 0xfb5a, G_UNICODE_NOT_PRESENT_OFFSET, 12771 },
+ { 0xfb5b, G_UNICODE_NOT_PRESENT_OFFSET, 12771 },
+ { 0xfb5c, G_UNICODE_NOT_PRESENT_OFFSET, 12771 },
+ { 0xfb5d, G_UNICODE_NOT_PRESENT_OFFSET, 12771 },
+ { 0xfb5e, G_UNICODE_NOT_PRESENT_OFFSET, 12774 },
+ { 0xfb5f, G_UNICODE_NOT_PRESENT_OFFSET, 12774 },
+ { 0xfb60, G_UNICODE_NOT_PRESENT_OFFSET, 12774 },
+ { 0xfb61, G_UNICODE_NOT_PRESENT_OFFSET, 12774 },
+ { 0xfb62, G_UNICODE_NOT_PRESENT_OFFSET, 12777 },
+ { 0xfb63, G_UNICODE_NOT_PRESENT_OFFSET, 12777 },
+ { 0xfb64, G_UNICODE_NOT_PRESENT_OFFSET, 12777 },
+ { 0xfb65, G_UNICODE_NOT_PRESENT_OFFSET, 12777 },
+ { 0xfb66, G_UNICODE_NOT_PRESENT_OFFSET, 12780 },
+ { 0xfb67, G_UNICODE_NOT_PRESENT_OFFSET, 12780 },
+ { 0xfb68, G_UNICODE_NOT_PRESENT_OFFSET, 12780 },
+ { 0xfb69, G_UNICODE_NOT_PRESENT_OFFSET, 12780 },
+ { 0xfb6a, G_UNICODE_NOT_PRESENT_OFFSET, 12783 },
+ { 0xfb6b, G_UNICODE_NOT_PRESENT_OFFSET, 12783 },
+ { 0xfb6c, G_UNICODE_NOT_PRESENT_OFFSET, 12783 },
+ { 0xfb6d, G_UNICODE_NOT_PRESENT_OFFSET, 12783 },
+ { 0xfb6e, G_UNICODE_NOT_PRESENT_OFFSET, 12786 },
+ { 0xfb6f, G_UNICODE_NOT_PRESENT_OFFSET, 12786 },
+ { 0xfb70, G_UNICODE_NOT_PRESENT_OFFSET, 12786 },
+ { 0xfb71, G_UNICODE_NOT_PRESENT_OFFSET, 12786 },
+ { 0xfb72, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+ { 0xfb73, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+ { 0xfb74, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+ { 0xfb75, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+ { 0xfb76, G_UNICODE_NOT_PRESENT_OFFSET, 12792 },
+ { 0xfb77, G_UNICODE_NOT_PRESENT_OFFSET, 12792 },
+ { 0xfb78, G_UNICODE_NOT_PRESENT_OFFSET, 12792 },
+ { 0xfb79, G_UNICODE_NOT_PRESENT_OFFSET, 12792 },
+ { 0xfb7a, G_UNICODE_NOT_PRESENT_OFFSET, 12795 },
+ { 0xfb7b, G_UNICODE_NOT_PRESENT_OFFSET, 12795 },
+ { 0xfb7c, G_UNICODE_NOT_PRESENT_OFFSET, 12795 },
+ { 0xfb7d, G_UNICODE_NOT_PRESENT_OFFSET, 12795 },
+ { 0xfb7e, G_UNICODE_NOT_PRESENT_OFFSET, 12798 },
+ { 0xfb7f, G_UNICODE_NOT_PRESENT_OFFSET, 12798 },
+ { 0xfb80, G_UNICODE_NOT_PRESENT_OFFSET, 12798 },
+ { 0xfb81, G_UNICODE_NOT_PRESENT_OFFSET, 12798 },
+ { 0xfb82, G_UNICODE_NOT_PRESENT_OFFSET, 12801 },
+ { 0xfb83, G_UNICODE_NOT_PRESENT_OFFSET, 12801 },
+ { 0xfb84, G_UNICODE_NOT_PRESENT_OFFSET, 12804 },
+ { 0xfb85, G_UNICODE_NOT_PRESENT_OFFSET, 12804 },
+ { 0xfb86, G_UNICODE_NOT_PRESENT_OFFSET, 12807 },
+ { 0xfb87, G_UNICODE_NOT_PRESENT_OFFSET, 12807 },
+ { 0xfb88, G_UNICODE_NOT_PRESENT_OFFSET, 12810 },
+ { 0xfb89, G_UNICODE_NOT_PRESENT_OFFSET, 12810 },
+ { 0xfb8a, G_UNICODE_NOT_PRESENT_OFFSET, 12813 },
+ { 0xfb8b, G_UNICODE_NOT_PRESENT_OFFSET, 12813 },
+ { 0xfb8c, G_UNICODE_NOT_PRESENT_OFFSET, 12816 },
+ { 0xfb8d, G_UNICODE_NOT_PRESENT_OFFSET, 12816 },
+ { 0xfb8e, G_UNICODE_NOT_PRESENT_OFFSET, 12819 },
+ { 0xfb8f, G_UNICODE_NOT_PRESENT_OFFSET, 12819 },
+ { 0xfb90, G_UNICODE_NOT_PRESENT_OFFSET, 12819 },
+ { 0xfb91, G_UNICODE_NOT_PRESENT_OFFSET, 12819 },
+ { 0xfb92, G_UNICODE_NOT_PRESENT_OFFSET, 12822 },
+ { 0xfb93, G_UNICODE_NOT_PRESENT_OFFSET, 12822 },
+ { 0xfb94, G_UNICODE_NOT_PRESENT_OFFSET, 12822 },
+ { 0xfb95, G_UNICODE_NOT_PRESENT_OFFSET, 12822 },
+ { 0xfb96, G_UNICODE_NOT_PRESENT_OFFSET, 12825 },
+ { 0xfb97, G_UNICODE_NOT_PRESENT_OFFSET, 12825 },
+ { 0xfb98, G_UNICODE_NOT_PRESENT_OFFSET, 12825 },
+ { 0xfb99, G_UNICODE_NOT_PRESENT_OFFSET, 12825 },
+ { 0xfb9a, G_UNICODE_NOT_PRESENT_OFFSET, 12828 },
+ { 0xfb9b, G_UNICODE_NOT_PRESENT_OFFSET, 12828 },
+ { 0xfb9c, G_UNICODE_NOT_PRESENT_OFFSET, 12828 },
+ { 0xfb9d, G_UNICODE_NOT_PRESENT_OFFSET, 12828 },
+ { 0xfb9e, G_UNICODE_NOT_PRESENT_OFFSET, 12831 },
+ { 0xfb9f, G_UNICODE_NOT_PRESENT_OFFSET, 12831 },
+ { 0xfba0, G_UNICODE_NOT_PRESENT_OFFSET, 12834 },
+ { 0xfba1, G_UNICODE_NOT_PRESENT_OFFSET, 12834 },
+ { 0xfba2, G_UNICODE_NOT_PRESENT_OFFSET, 12834 },
+ { 0xfba3, G_UNICODE_NOT_PRESENT_OFFSET, 12834 },
{ 0xfba4, G_UNICODE_NOT_PRESENT_OFFSET, 1721 },
{ 0xfba5, G_UNICODE_NOT_PRESENT_OFFSET, 1721 },
- { 0xfba6, G_UNICODE_NOT_PRESENT_OFFSET, 12823 },
- { 0xfba7, G_UNICODE_NOT_PRESENT_OFFSET, 12823 },
- { 0xfba8, G_UNICODE_NOT_PRESENT_OFFSET, 12823 },
- { 0xfba9, G_UNICODE_NOT_PRESENT_OFFSET, 12823 },
- { 0xfbaa, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
- { 0xfbab, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
- { 0xfbac, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
- { 0xfbad, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
- { 0xfbae, G_UNICODE_NOT_PRESENT_OFFSET, 12829 },
- { 0xfbaf, G_UNICODE_NOT_PRESENT_OFFSET, 12829 },
+ { 0xfba6, G_UNICODE_NOT_PRESENT_OFFSET, 12837 },
+ { 0xfba7, G_UNICODE_NOT_PRESENT_OFFSET, 12837 },
+ { 0xfba8, G_UNICODE_NOT_PRESENT_OFFSET, 12837 },
+ { 0xfba9, G_UNICODE_NOT_PRESENT_OFFSET, 12837 },
+ { 0xfbaa, G_UNICODE_NOT_PRESENT_OFFSET, 12840 },
+ { 0xfbab, G_UNICODE_NOT_PRESENT_OFFSET, 12840 },
+ { 0xfbac, G_UNICODE_NOT_PRESENT_OFFSET, 12840 },
+ { 0xfbad, G_UNICODE_NOT_PRESENT_OFFSET, 12840 },
+ { 0xfbae, G_UNICODE_NOT_PRESENT_OFFSET, 12843 },
+ { 0xfbaf, G_UNICODE_NOT_PRESENT_OFFSET, 12843 },
{ 0xfbb0, G_UNICODE_NOT_PRESENT_OFFSET, 1731 },
{ 0xfbb1, G_UNICODE_NOT_PRESENT_OFFSET, 1731 },
- { 0xfbd3, G_UNICODE_NOT_PRESENT_OFFSET, 12832 },
- { 0xfbd4, G_UNICODE_NOT_PRESENT_OFFSET, 12832 },
- { 0xfbd5, G_UNICODE_NOT_PRESENT_OFFSET, 12832 },
- { 0xfbd6, G_UNICODE_NOT_PRESENT_OFFSET, 12832 },
- { 0xfbd7, G_UNICODE_NOT_PRESENT_OFFSET, 12835 },
- { 0xfbd8, G_UNICODE_NOT_PRESENT_OFFSET, 12835 },
- { 0xfbd9, G_UNICODE_NOT_PRESENT_OFFSET, 12838 },
- { 0xfbda, G_UNICODE_NOT_PRESENT_OFFSET, 12838 },
- { 0xfbdb, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
- { 0xfbdc, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
+ { 0xfbd3, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+ { 0xfbd4, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+ { 0xfbd5, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+ { 0xfbd6, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+ { 0xfbd7, G_UNICODE_NOT_PRESENT_OFFSET, 12849 },
+ { 0xfbd8, G_UNICODE_NOT_PRESENT_OFFSET, 12849 },
+ { 0xfbd9, G_UNICODE_NOT_PRESENT_OFFSET, 12852 },
+ { 0xfbda, G_UNICODE_NOT_PRESENT_OFFSET, 12852 },
+ { 0xfbdb, G_UNICODE_NOT_PRESENT_OFFSET, 12855 },
+ { 0xfbdc, G_UNICODE_NOT_PRESENT_OFFSET, 12855 },
{ 0xfbdd, G_UNICODE_NOT_PRESENT_OFFSET, 1711 },
- { 0xfbde, G_UNICODE_NOT_PRESENT_OFFSET, 12844 },
- { 0xfbdf, G_UNICODE_NOT_PRESENT_OFFSET, 12844 },
- { 0xfbe0, G_UNICODE_NOT_PRESENT_OFFSET, 12847 },
- { 0xfbe1, G_UNICODE_NOT_PRESENT_OFFSET, 12847 },
- { 0xfbe2, G_UNICODE_NOT_PRESENT_OFFSET, 12850 },
- { 0xfbe3, G_UNICODE_NOT_PRESENT_OFFSET, 12850 },
- { 0xfbe4, G_UNICODE_NOT_PRESENT_OFFSET, 12853 },
- { 0xfbe5, G_UNICODE_NOT_PRESENT_OFFSET, 12853 },
- { 0xfbe6, G_UNICODE_NOT_PRESENT_OFFSET, 12853 },
- { 0xfbe7, G_UNICODE_NOT_PRESENT_OFFSET, 12853 },
- { 0xfbe8, G_UNICODE_NOT_PRESENT_OFFSET, 12856 },
- { 0xfbe9, G_UNICODE_NOT_PRESENT_OFFSET, 12856 },
- { 0xfbea, G_UNICODE_NOT_PRESENT_OFFSET, 12859 },
- { 0xfbeb, G_UNICODE_NOT_PRESENT_OFFSET, 12859 },
- { 0xfbec, G_UNICODE_NOT_PRESENT_OFFSET, 12866 },
- { 0xfbed, G_UNICODE_NOT_PRESENT_OFFSET, 12866 },
- { 0xfbee, G_UNICODE_NOT_PRESENT_OFFSET, 12873 },
- { 0xfbef, G_UNICODE_NOT_PRESENT_OFFSET, 12873 },
- { 0xfbf0, G_UNICODE_NOT_PRESENT_OFFSET, 12880 },
- { 0xfbf1, G_UNICODE_NOT_PRESENT_OFFSET, 12880 },
- { 0xfbf2, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
- { 0xfbf3, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
- { 0xfbf4, G_UNICODE_NOT_PRESENT_OFFSET, 12894 },
- { 0xfbf5, G_UNICODE_NOT_PRESENT_OFFSET, 12894 },
- { 0xfbf6, G_UNICODE_NOT_PRESENT_OFFSET, 12901 },
- { 0xfbf7, G_UNICODE_NOT_PRESENT_OFFSET, 12901 },
- { 0xfbf8, G_UNICODE_NOT_PRESENT_OFFSET, 12901 },
- { 0xfbf9, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
- { 0xfbfa, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
- { 0xfbfb, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
- { 0xfbfc, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
- { 0xfbfd, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
- { 0xfbfe, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
- { 0xfbff, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
- { 0xfc00, G_UNICODE_NOT_PRESENT_OFFSET, 12918 },
- { 0xfc01, G_UNICODE_NOT_PRESENT_OFFSET, 12925 },
- { 0xfc02, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
- { 0xfc03, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
- { 0xfc04, G_UNICODE_NOT_PRESENT_OFFSET, 12939 },
- { 0xfc05, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
- { 0xfc06, G_UNICODE_NOT_PRESENT_OFFSET, 12951 },
- { 0xfc07, G_UNICODE_NOT_PRESENT_OFFSET, 12956 },
- { 0xfc08, G_UNICODE_NOT_PRESENT_OFFSET, 12961 },
- { 0xfc09, G_UNICODE_NOT_PRESENT_OFFSET, 12966 },
- { 0xfc0a, G_UNICODE_NOT_PRESENT_OFFSET, 12971 },
- { 0xfc0b, G_UNICODE_NOT_PRESENT_OFFSET, 12976 },
- { 0xfc0c, G_UNICODE_NOT_PRESENT_OFFSET, 12981 },
- { 0xfc0d, G_UNICODE_NOT_PRESENT_OFFSET, 12986 },
- { 0xfc0e, G_UNICODE_NOT_PRESENT_OFFSET, 12991 },
- { 0xfc0f, G_UNICODE_NOT_PRESENT_OFFSET, 12996 },
- { 0xfc10, G_UNICODE_NOT_PRESENT_OFFSET, 13001 },
- { 0xfc11, G_UNICODE_NOT_PRESENT_OFFSET, 13006 },
- { 0xfc12, G_UNICODE_NOT_PRESENT_OFFSET, 13011 },
- { 0xfc13, G_UNICODE_NOT_PRESENT_OFFSET, 13016 },
- { 0xfc14, G_UNICODE_NOT_PRESENT_OFFSET, 13021 },
- { 0xfc15, G_UNICODE_NOT_PRESENT_OFFSET, 13026 },
- { 0xfc16, G_UNICODE_NOT_PRESENT_OFFSET, 13031 },
- { 0xfc17, G_UNICODE_NOT_PRESENT_OFFSET, 13036 },
- { 0xfc18, G_UNICODE_NOT_PRESENT_OFFSET, 13041 },
- { 0xfc19, G_UNICODE_NOT_PRESENT_OFFSET, 13046 },
- { 0xfc1a, G_UNICODE_NOT_PRESENT_OFFSET, 13051 },
- { 0xfc1b, G_UNICODE_NOT_PRESENT_OFFSET, 13056 },
- { 0xfc1c, G_UNICODE_NOT_PRESENT_OFFSET, 13061 },
- { 0xfc1d, G_UNICODE_NOT_PRESENT_OFFSET, 13066 },
- { 0xfc1e, G_UNICODE_NOT_PRESENT_OFFSET, 13071 },
- { 0xfc1f, G_UNICODE_NOT_PRESENT_OFFSET, 13076 },
- { 0xfc20, G_UNICODE_NOT_PRESENT_OFFSET, 13081 },
- { 0xfc21, G_UNICODE_NOT_PRESENT_OFFSET, 13086 },
- { 0xfc22, G_UNICODE_NOT_PRESENT_OFFSET, 13091 },
- { 0xfc23, G_UNICODE_NOT_PRESENT_OFFSET, 13096 },
- { 0xfc24, G_UNICODE_NOT_PRESENT_OFFSET, 13101 },
- { 0xfc25, G_UNICODE_NOT_PRESENT_OFFSET, 13106 },
- { 0xfc26, G_UNICODE_NOT_PRESENT_OFFSET, 13111 },
- { 0xfc27, G_UNICODE_NOT_PRESENT_OFFSET, 13116 },
- { 0xfc28, G_UNICODE_NOT_PRESENT_OFFSET, 13121 },
- { 0xfc29, G_UNICODE_NOT_PRESENT_OFFSET, 13126 },
- { 0xfc2a, G_UNICODE_NOT_PRESENT_OFFSET, 13131 },
- { 0xfc2b, G_UNICODE_NOT_PRESENT_OFFSET, 13136 },
- { 0xfc2c, G_UNICODE_NOT_PRESENT_OFFSET, 13141 },
- { 0xfc2d, G_UNICODE_NOT_PRESENT_OFFSET, 13146 },
- { 0xfc2e, G_UNICODE_NOT_PRESENT_OFFSET, 13151 },
- { 0xfc2f, G_UNICODE_NOT_PRESENT_OFFSET, 13156 },
- { 0xfc30, G_UNICODE_NOT_PRESENT_OFFSET, 13161 },
- { 0xfc31, G_UNICODE_NOT_PRESENT_OFFSET, 13166 },
- { 0xfc32, G_UNICODE_NOT_PRESENT_OFFSET, 13171 },
- { 0xfc33, G_UNICODE_NOT_PRESENT_OFFSET, 13176 },
- { 0xfc34, G_UNICODE_NOT_PRESENT_OFFSET, 13181 },
- { 0xfc35, G_UNICODE_NOT_PRESENT_OFFSET, 13186 },
- { 0xfc36, G_UNICODE_NOT_PRESENT_OFFSET, 13191 },
- { 0xfc37, G_UNICODE_NOT_PRESENT_OFFSET, 13196 },
- { 0xfc38, G_UNICODE_NOT_PRESENT_OFFSET, 13201 },
- { 0xfc39, G_UNICODE_NOT_PRESENT_OFFSET, 13206 },
- { 0xfc3a, G_UNICODE_NOT_PRESENT_OFFSET, 13211 },
- { 0xfc3b, G_UNICODE_NOT_PRESENT_OFFSET, 13216 },
- { 0xfc3c, G_UNICODE_NOT_PRESENT_OFFSET, 13221 },
- { 0xfc3d, G_UNICODE_NOT_PRESENT_OFFSET, 13226 },
- { 0xfc3e, G_UNICODE_NOT_PRESENT_OFFSET, 13231 },
- { 0xfc3f, G_UNICODE_NOT_PRESENT_OFFSET, 13236 },
- { 0xfc40, G_UNICODE_NOT_PRESENT_OFFSET, 13241 },
- { 0xfc41, G_UNICODE_NOT_PRESENT_OFFSET, 13246 },
- { 0xfc42, G_UNICODE_NOT_PRESENT_OFFSET, 13251 },
- { 0xfc43, G_UNICODE_NOT_PRESENT_OFFSET, 13256 },
- { 0xfc44, G_UNICODE_NOT_PRESENT_OFFSET, 13261 },
- { 0xfc45, G_UNICODE_NOT_PRESENT_OFFSET, 13266 },
- { 0xfc46, G_UNICODE_NOT_PRESENT_OFFSET, 13271 },
- { 0xfc47, G_UNICODE_NOT_PRESENT_OFFSET, 13276 },
- { 0xfc48, G_UNICODE_NOT_PRESENT_OFFSET, 13281 },
- { 0xfc49, G_UNICODE_NOT_PRESENT_OFFSET, 13286 },
- { 0xfc4a, G_UNICODE_NOT_PRESENT_OFFSET, 13291 },
- { 0xfc4b, G_UNICODE_NOT_PRESENT_OFFSET, 13296 },
- { 0xfc4c, G_UNICODE_NOT_PRESENT_OFFSET, 13301 },
- { 0xfc4d, G_UNICODE_NOT_PRESENT_OFFSET, 13306 },
- { 0xfc4e, G_UNICODE_NOT_PRESENT_OFFSET, 13311 },
- { 0xfc4f, G_UNICODE_NOT_PRESENT_OFFSET, 13316 },
- { 0xfc50, G_UNICODE_NOT_PRESENT_OFFSET, 13321 },
- { 0xfc51, G_UNICODE_NOT_PRESENT_OFFSET, 13326 },
- { 0xfc52, G_UNICODE_NOT_PRESENT_OFFSET, 13331 },
- { 0xfc53, G_UNICODE_NOT_PRESENT_OFFSET, 13336 },
- { 0xfc54, G_UNICODE_NOT_PRESENT_OFFSET, 13341 },
- { 0xfc55, G_UNICODE_NOT_PRESENT_OFFSET, 13346 },
- { 0xfc56, G_UNICODE_NOT_PRESENT_OFFSET, 13351 },
- { 0xfc57, G_UNICODE_NOT_PRESENT_OFFSET, 13356 },
- { 0xfc58, G_UNICODE_NOT_PRESENT_OFFSET, 13361 },
- { 0xfc59, G_UNICODE_NOT_PRESENT_OFFSET, 13366 },
- { 0xfc5a, G_UNICODE_NOT_PRESENT_OFFSET, 13371 },
- { 0xfc5b, G_UNICODE_NOT_PRESENT_OFFSET, 13376 },
- { 0xfc5c, G_UNICODE_NOT_PRESENT_OFFSET, 13381 },
- { 0xfc5d, G_UNICODE_NOT_PRESENT_OFFSET, 13386 },
- { 0xfc5e, G_UNICODE_NOT_PRESENT_OFFSET, 13391 },
- { 0xfc5f, G_UNICODE_NOT_PRESENT_OFFSET, 13397 },
- { 0xfc60, G_UNICODE_NOT_PRESENT_OFFSET, 13403 },
- { 0xfc61, G_UNICODE_NOT_PRESENT_OFFSET, 13409 },
- { 0xfc62, G_UNICODE_NOT_PRESENT_OFFSET, 13415 },
- { 0xfc63, G_UNICODE_NOT_PRESENT_OFFSET, 13421 },
- { 0xfc64, G_UNICODE_NOT_PRESENT_OFFSET, 13427 },
- { 0xfc65, G_UNICODE_NOT_PRESENT_OFFSET, 13434 },
- { 0xfc66, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
- { 0xfc67, G_UNICODE_NOT_PRESENT_OFFSET, 13441 },
- { 0xfc68, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
- { 0xfc69, G_UNICODE_NOT_PRESENT_OFFSET, 12939 },
- { 0xfc6a, G_UNICODE_NOT_PRESENT_OFFSET, 13448 },
- { 0xfc6b, G_UNICODE_NOT_PRESENT_OFFSET, 13453 },
- { 0xfc6c, G_UNICODE_NOT_PRESENT_OFFSET, 12961 },
- { 0xfc6d, G_UNICODE_NOT_PRESENT_OFFSET, 13458 },
- { 0xfc6e, G_UNICODE_NOT_PRESENT_OFFSET, 12966 },
- { 0xfc6f, G_UNICODE_NOT_PRESENT_OFFSET, 12971 },
- { 0xfc70, G_UNICODE_NOT_PRESENT_OFFSET, 13463 },
- { 0xfc71, G_UNICODE_NOT_PRESENT_OFFSET, 13468 },
- { 0xfc72, G_UNICODE_NOT_PRESENT_OFFSET, 12991 },
- { 0xfc73, G_UNICODE_NOT_PRESENT_OFFSET, 13473 },
- { 0xfc74, G_UNICODE_NOT_PRESENT_OFFSET, 12996 },
- { 0xfc75, G_UNICODE_NOT_PRESENT_OFFSET, 13001 },
- { 0xfc76, G_UNICODE_NOT_PRESENT_OFFSET, 13478 },
- { 0xfc77, G_UNICODE_NOT_PRESENT_OFFSET, 13483 },
- { 0xfc78, G_UNICODE_NOT_PRESENT_OFFSET, 13011 },
- { 0xfc79, G_UNICODE_NOT_PRESENT_OFFSET, 13488 },
- { 0xfc7a, G_UNICODE_NOT_PRESENT_OFFSET, 13016 },
- { 0xfc7b, G_UNICODE_NOT_PRESENT_OFFSET, 13021 },
- { 0xfc7c, G_UNICODE_NOT_PRESENT_OFFSET, 13166 },
- { 0xfc7d, G_UNICODE_NOT_PRESENT_OFFSET, 13171 },
- { 0xfc7e, G_UNICODE_NOT_PRESENT_OFFSET, 13186 },
- { 0xfc7f, G_UNICODE_NOT_PRESENT_OFFSET, 13191 },
- { 0xfc80, G_UNICODE_NOT_PRESENT_OFFSET, 13196 },
- { 0xfc81, G_UNICODE_NOT_PRESENT_OFFSET, 13216 },
- { 0xfc82, G_UNICODE_NOT_PRESENT_OFFSET, 13221 },
- { 0xfc83, G_UNICODE_NOT_PRESENT_OFFSET, 13226 },
- { 0xfc84, G_UNICODE_NOT_PRESENT_OFFSET, 13231 },
- { 0xfc85, G_UNICODE_NOT_PRESENT_OFFSET, 13251 },
- { 0xfc86, G_UNICODE_NOT_PRESENT_OFFSET, 13256 },
- { 0xfc87, G_UNICODE_NOT_PRESENT_OFFSET, 13261 },
- { 0xfc88, G_UNICODE_NOT_PRESENT_OFFSET, 13493 },
- { 0xfc89, G_UNICODE_NOT_PRESENT_OFFSET, 13281 },
- { 0xfc8a, G_UNICODE_NOT_PRESENT_OFFSET, 13498 },
- { 0xfc8b, G_UNICODE_NOT_PRESENT_OFFSET, 13503 },
- { 0xfc8c, G_UNICODE_NOT_PRESENT_OFFSET, 13311 },
- { 0xfc8d, G_UNICODE_NOT_PRESENT_OFFSET, 13508 },
- { 0xfc8e, G_UNICODE_NOT_PRESENT_OFFSET, 13316 },
- { 0xfc8f, G_UNICODE_NOT_PRESENT_OFFSET, 13321 },
- { 0xfc90, G_UNICODE_NOT_PRESENT_OFFSET, 13386 },
- { 0xfc91, G_UNICODE_NOT_PRESENT_OFFSET, 13513 },
- { 0xfc92, G_UNICODE_NOT_PRESENT_OFFSET, 13518 },
- { 0xfc93, G_UNICODE_NOT_PRESENT_OFFSET, 13361 },
- { 0xfc94, G_UNICODE_NOT_PRESENT_OFFSET, 13523 },
- { 0xfc95, G_UNICODE_NOT_PRESENT_OFFSET, 13366 },
- { 0xfc96, G_UNICODE_NOT_PRESENT_OFFSET, 13371 },
- { 0xfc97, G_UNICODE_NOT_PRESENT_OFFSET, 12918 },
- { 0xfc98, G_UNICODE_NOT_PRESENT_OFFSET, 12925 },
- { 0xfc99, G_UNICODE_NOT_PRESENT_OFFSET, 13528 },
- { 0xfc9a, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
- { 0xfc9b, G_UNICODE_NOT_PRESENT_OFFSET, 13535 },
- { 0xfc9c, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
- { 0xfc9d, G_UNICODE_NOT_PRESENT_OFFSET, 12951 },
- { 0xfc9e, G_UNICODE_NOT_PRESENT_OFFSET, 12956 },
- { 0xfc9f, G_UNICODE_NOT_PRESENT_OFFSET, 12961 },
- { 0xfca0, G_UNICODE_NOT_PRESENT_OFFSET, 13542 },
- { 0xfca1, G_UNICODE_NOT_PRESENT_OFFSET, 12976 },
- { 0xfca2, G_UNICODE_NOT_PRESENT_OFFSET, 12981 },
- { 0xfca3, G_UNICODE_NOT_PRESENT_OFFSET, 12986 },
- { 0xfca4, G_UNICODE_NOT_PRESENT_OFFSET, 12991 },
- { 0xfca5, G_UNICODE_NOT_PRESENT_OFFSET, 13547 },
- { 0xfca6, G_UNICODE_NOT_PRESENT_OFFSET, 13011 },
- { 0xfca7, G_UNICODE_NOT_PRESENT_OFFSET, 13026 },
- { 0xfca8, G_UNICODE_NOT_PRESENT_OFFSET, 13031 },
- { 0xfca9, G_UNICODE_NOT_PRESENT_OFFSET, 13036 },
- { 0xfcaa, G_UNICODE_NOT_PRESENT_OFFSET, 13041 },
- { 0xfcab, G_UNICODE_NOT_PRESENT_OFFSET, 13046 },
- { 0xfcac, G_UNICODE_NOT_PRESENT_OFFSET, 13056 },
- { 0xfcad, G_UNICODE_NOT_PRESENT_OFFSET, 13061 },
- { 0xfcae, G_UNICODE_NOT_PRESENT_OFFSET, 13066 },
- { 0xfcaf, G_UNICODE_NOT_PRESENT_OFFSET, 13071 },
- { 0xfcb0, G_UNICODE_NOT_PRESENT_OFFSET, 13076 },
- { 0xfcb1, G_UNICODE_NOT_PRESENT_OFFSET, 13081 },
- { 0xfcb2, G_UNICODE_NOT_PRESENT_OFFSET, 13552 },
- { 0xfcb3, G_UNICODE_NOT_PRESENT_OFFSET, 13086 },
- { 0xfcb4, G_UNICODE_NOT_PRESENT_OFFSET, 13091 },
- { 0xfcb5, G_UNICODE_NOT_PRESENT_OFFSET, 13096 },
- { 0xfcb6, G_UNICODE_NOT_PRESENT_OFFSET, 13101 },
- { 0xfcb7, G_UNICODE_NOT_PRESENT_OFFSET, 13106 },
- { 0xfcb8, G_UNICODE_NOT_PRESENT_OFFSET, 13111 },
- { 0xfcb9, G_UNICODE_NOT_PRESENT_OFFSET, 13121 },
- { 0xfcba, G_UNICODE_NOT_PRESENT_OFFSET, 13126 },
- { 0xfcbb, G_UNICODE_NOT_PRESENT_OFFSET, 13131 },
- { 0xfcbc, G_UNICODE_NOT_PRESENT_OFFSET, 13136 },
- { 0xfcbd, G_UNICODE_NOT_PRESENT_OFFSET, 13141 },
- { 0xfcbe, G_UNICODE_NOT_PRESENT_OFFSET, 13146 },
- { 0xfcbf, G_UNICODE_NOT_PRESENT_OFFSET, 13151 },
- { 0xfcc0, G_UNICODE_NOT_PRESENT_OFFSET, 13156 },
- { 0xfcc1, G_UNICODE_NOT_PRESENT_OFFSET, 13161 },
- { 0xfcc2, G_UNICODE_NOT_PRESENT_OFFSET, 13176 },
- { 0xfcc3, G_UNICODE_NOT_PRESENT_OFFSET, 13181 },
- { 0xfcc4, G_UNICODE_NOT_PRESENT_OFFSET, 13201 },
- { 0xfcc5, G_UNICODE_NOT_PRESENT_OFFSET, 13206 },
- { 0xfcc6, G_UNICODE_NOT_PRESENT_OFFSET, 13211 },
- { 0xfcc7, G_UNICODE_NOT_PRESENT_OFFSET, 13216 },
- { 0xfcc8, G_UNICODE_NOT_PRESENT_OFFSET, 13221 },
- { 0xfcc9, G_UNICODE_NOT_PRESENT_OFFSET, 13236 },
- { 0xfcca, G_UNICODE_NOT_PRESENT_OFFSET, 13241 },
- { 0xfccb, G_UNICODE_NOT_PRESENT_OFFSET, 13246 },
- { 0xfccc, G_UNICODE_NOT_PRESENT_OFFSET, 13251 },
- { 0xfccd, G_UNICODE_NOT_PRESENT_OFFSET, 13557 },
- { 0xfcce, G_UNICODE_NOT_PRESENT_OFFSET, 13266 },
- { 0xfccf, G_UNICODE_NOT_PRESENT_OFFSET, 13271 },
- { 0xfcd0, G_UNICODE_NOT_PRESENT_OFFSET, 13276 },
- { 0xfcd1, G_UNICODE_NOT_PRESENT_OFFSET, 13281 },
- { 0xfcd2, G_UNICODE_NOT_PRESENT_OFFSET, 13296 },
- { 0xfcd3, G_UNICODE_NOT_PRESENT_OFFSET, 13301 },
- { 0xfcd4, G_UNICODE_NOT_PRESENT_OFFSET, 13306 },
- { 0xfcd5, G_UNICODE_NOT_PRESENT_OFFSET, 13311 },
- { 0xfcd6, G_UNICODE_NOT_PRESENT_OFFSET, 13562 },
- { 0xfcd7, G_UNICODE_NOT_PRESENT_OFFSET, 13326 },
- { 0xfcd8, G_UNICODE_NOT_PRESENT_OFFSET, 13331 },
- { 0xfcd9, G_UNICODE_NOT_PRESENT_OFFSET, 13567 },
- { 0xfcda, G_UNICODE_NOT_PRESENT_OFFSET, 13346 },
- { 0xfcdb, G_UNICODE_NOT_PRESENT_OFFSET, 13351 },
- { 0xfcdc, G_UNICODE_NOT_PRESENT_OFFSET, 13356 },
- { 0xfcdd, G_UNICODE_NOT_PRESENT_OFFSET, 13361 },
- { 0xfcde, G_UNICODE_NOT_PRESENT_OFFSET, 13572 },
- { 0xfcdf, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
- { 0xfce0, G_UNICODE_NOT_PRESENT_OFFSET, 13535 },
- { 0xfce1, G_UNICODE_NOT_PRESENT_OFFSET, 12961 },
- { 0xfce2, G_UNICODE_NOT_PRESENT_OFFSET, 13542 },
- { 0xfce3, G_UNICODE_NOT_PRESENT_OFFSET, 12991 },
- { 0xfce4, G_UNICODE_NOT_PRESENT_OFFSET, 13547 },
- { 0xfce5, G_UNICODE_NOT_PRESENT_OFFSET, 13011 },
- { 0xfce6, G_UNICODE_NOT_PRESENT_OFFSET, 13577 },
- { 0xfce7, G_UNICODE_NOT_PRESENT_OFFSET, 13076 },
- { 0xfce8, G_UNICODE_NOT_PRESENT_OFFSET, 13582 },
- { 0xfce9, G_UNICODE_NOT_PRESENT_OFFSET, 13587 },
- { 0xfcea, G_UNICODE_NOT_PRESENT_OFFSET, 13592 },
- { 0xfceb, G_UNICODE_NOT_PRESENT_OFFSET, 13216 },
- { 0xfcec, G_UNICODE_NOT_PRESENT_OFFSET, 13221 },
- { 0xfced, G_UNICODE_NOT_PRESENT_OFFSET, 13251 },
- { 0xfcee, G_UNICODE_NOT_PRESENT_OFFSET, 13311 },
- { 0xfcef, G_UNICODE_NOT_PRESENT_OFFSET, 13562 },
- { 0xfcf0, G_UNICODE_NOT_PRESENT_OFFSET, 13361 },
- { 0xfcf1, G_UNICODE_NOT_PRESENT_OFFSET, 13572 },
- { 0xfcf2, G_UNICODE_NOT_PRESENT_OFFSET, 13597 },
- { 0xfcf3, G_UNICODE_NOT_PRESENT_OFFSET, 13604 },
- { 0xfcf4, G_UNICODE_NOT_PRESENT_OFFSET, 13611 },
- { 0xfcf5, G_UNICODE_NOT_PRESENT_OFFSET, 13618 },
- { 0xfcf6, G_UNICODE_NOT_PRESENT_OFFSET, 13623 },
- { 0xfcf7, G_UNICODE_NOT_PRESENT_OFFSET, 13628 },
- { 0xfcf8, G_UNICODE_NOT_PRESENT_OFFSET, 13633 },
- { 0xfcf9, G_UNICODE_NOT_PRESENT_OFFSET, 13638 },
- { 0xfcfa, G_UNICODE_NOT_PRESENT_OFFSET, 13643 },
- { 0xfcfb, G_UNICODE_NOT_PRESENT_OFFSET, 13648 },
- { 0xfcfc, G_UNICODE_NOT_PRESENT_OFFSET, 13653 },
- { 0xfcfd, G_UNICODE_NOT_PRESENT_OFFSET, 13658 },
- { 0xfcfe, G_UNICODE_NOT_PRESENT_OFFSET, 13663 },
- { 0xfcff, G_UNICODE_NOT_PRESENT_OFFSET, 13668 },
- { 0xfd00, G_UNICODE_NOT_PRESENT_OFFSET, 13673 },
- { 0xfd01, G_UNICODE_NOT_PRESENT_OFFSET, 13678 },
- { 0xfd02, G_UNICODE_NOT_PRESENT_OFFSET, 13683 },
- { 0xfd03, G_UNICODE_NOT_PRESENT_OFFSET, 13688 },
- { 0xfd04, G_UNICODE_NOT_PRESENT_OFFSET, 13693 },
- { 0xfd05, G_UNICODE_NOT_PRESENT_OFFSET, 13698 },
- { 0xfd06, G_UNICODE_NOT_PRESENT_OFFSET, 13703 },
- { 0xfd07, G_UNICODE_NOT_PRESENT_OFFSET, 13708 },
- { 0xfd08, G_UNICODE_NOT_PRESENT_OFFSET, 13713 },
- { 0xfd09, G_UNICODE_NOT_PRESENT_OFFSET, 13718 },
- { 0xfd0a, G_UNICODE_NOT_PRESENT_OFFSET, 13723 },
- { 0xfd0b, G_UNICODE_NOT_PRESENT_OFFSET, 13728 },
- { 0xfd0c, G_UNICODE_NOT_PRESENT_OFFSET, 13587 },
- { 0xfd0d, G_UNICODE_NOT_PRESENT_OFFSET, 13733 },
- { 0xfd0e, G_UNICODE_NOT_PRESENT_OFFSET, 13738 },
- { 0xfd0f, G_UNICODE_NOT_PRESENT_OFFSET, 13743 },
- { 0xfd10, G_UNICODE_NOT_PRESENT_OFFSET, 13748 },
- { 0xfd11, G_UNICODE_NOT_PRESENT_OFFSET, 13618 },
- { 0xfd12, G_UNICODE_NOT_PRESENT_OFFSET, 13623 },
- { 0xfd13, G_UNICODE_NOT_PRESENT_OFFSET, 13628 },
- { 0xfd14, G_UNICODE_NOT_PRESENT_OFFSET, 13633 },
- { 0xfd15, G_UNICODE_NOT_PRESENT_OFFSET, 13638 },
- { 0xfd16, G_UNICODE_NOT_PRESENT_OFFSET, 13643 },
- { 0xfd17, G_UNICODE_NOT_PRESENT_OFFSET, 13648 },
- { 0xfd18, G_UNICODE_NOT_PRESENT_OFFSET, 13653 },
- { 0xfd19, G_UNICODE_NOT_PRESENT_OFFSET, 13658 },
- { 0xfd1a, G_UNICODE_NOT_PRESENT_OFFSET, 13663 },
- { 0xfd1b, G_UNICODE_NOT_PRESENT_OFFSET, 13668 },
- { 0xfd1c, G_UNICODE_NOT_PRESENT_OFFSET, 13673 },
- { 0xfd1d, G_UNICODE_NOT_PRESENT_OFFSET, 13678 },
- { 0xfd1e, G_UNICODE_NOT_PRESENT_OFFSET, 13683 },
- { 0xfd1f, G_UNICODE_NOT_PRESENT_OFFSET, 13688 },
- { 0xfd20, G_UNICODE_NOT_PRESENT_OFFSET, 13693 },
- { 0xfd21, G_UNICODE_NOT_PRESENT_OFFSET, 13698 },
- { 0xfd22, G_UNICODE_NOT_PRESENT_OFFSET, 13703 },
- { 0xfd23, G_UNICODE_NOT_PRESENT_OFFSET, 13708 },
- { 0xfd24, G_UNICODE_NOT_PRESENT_OFFSET, 13713 },
- { 0xfd25, G_UNICODE_NOT_PRESENT_OFFSET, 13718 },
- { 0xfd26, G_UNICODE_NOT_PRESENT_OFFSET, 13723 },
- { 0xfd27, G_UNICODE_NOT_PRESENT_OFFSET, 13728 },
- { 0xfd28, G_UNICODE_NOT_PRESENT_OFFSET, 13587 },
- { 0xfd29, G_UNICODE_NOT_PRESENT_OFFSET, 13733 },
- { 0xfd2a, G_UNICODE_NOT_PRESENT_OFFSET, 13738 },
- { 0xfd2b, G_UNICODE_NOT_PRESENT_OFFSET, 13743 },
- { 0xfd2c, G_UNICODE_NOT_PRESENT_OFFSET, 13748 },
- { 0xfd2d, G_UNICODE_NOT_PRESENT_OFFSET, 13718 },
- { 0xfd2e, G_UNICODE_NOT_PRESENT_OFFSET, 13723 },
- { 0xfd2f, G_UNICODE_NOT_PRESENT_OFFSET, 13728 },
- { 0xfd30, G_UNICODE_NOT_PRESENT_OFFSET, 13587 },
- { 0xfd31, G_UNICODE_NOT_PRESENT_OFFSET, 13582 },
- { 0xfd32, G_UNICODE_NOT_PRESENT_OFFSET, 13592 },
- { 0xfd33, G_UNICODE_NOT_PRESENT_OFFSET, 13116 },
- { 0xfd34, G_UNICODE_NOT_PRESENT_OFFSET, 13061 },
- { 0xfd35, G_UNICODE_NOT_PRESENT_OFFSET, 13066 },
- { 0xfd36, G_UNICODE_NOT_PRESENT_OFFSET, 13071 },
- { 0xfd37, G_UNICODE_NOT_PRESENT_OFFSET, 13718 },
- { 0xfd38, G_UNICODE_NOT_PRESENT_OFFSET, 13723 },
- { 0xfd39, G_UNICODE_NOT_PRESENT_OFFSET, 13728 },
- { 0xfd3a, G_UNICODE_NOT_PRESENT_OFFSET, 13116 },
- { 0xfd3b, G_UNICODE_NOT_PRESENT_OFFSET, 13121 },
- { 0xfd3c, G_UNICODE_NOT_PRESENT_OFFSET, 13753 },
- { 0xfd3d, G_UNICODE_NOT_PRESENT_OFFSET, 13753 },
- { 0xfd50, G_UNICODE_NOT_PRESENT_OFFSET, 13758 },
- { 0xfd51, G_UNICODE_NOT_PRESENT_OFFSET, 13765 },
- { 0xfd52, G_UNICODE_NOT_PRESENT_OFFSET, 13765 },
- { 0xfd53, G_UNICODE_NOT_PRESENT_OFFSET, 13772 },
- { 0xfd54, G_UNICODE_NOT_PRESENT_OFFSET, 13779 },
- { 0xfd55, G_UNICODE_NOT_PRESENT_OFFSET, 13786 },
- { 0xfd56, G_UNICODE_NOT_PRESENT_OFFSET, 13793 },
- { 0xfd57, G_UNICODE_NOT_PRESENT_OFFSET, 13800 },
- { 0xfd58, G_UNICODE_NOT_PRESENT_OFFSET, 13807 },
- { 0xfd59, G_UNICODE_NOT_PRESENT_OFFSET, 13807 },
- { 0xfd5a, G_UNICODE_NOT_PRESENT_OFFSET, 13814 },
- { 0xfd5b, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
- { 0xfd5c, G_UNICODE_NOT_PRESENT_OFFSET, 13828 },
- { 0xfd5d, G_UNICODE_NOT_PRESENT_OFFSET, 13835 },
- { 0xfd5e, G_UNICODE_NOT_PRESENT_OFFSET, 13842 },
- { 0xfd5f, G_UNICODE_NOT_PRESENT_OFFSET, 13849 },
- { 0xfd60, G_UNICODE_NOT_PRESENT_OFFSET, 13849 },
- { 0xfd61, G_UNICODE_NOT_PRESENT_OFFSET, 13856 },
- { 0xfd62, G_UNICODE_NOT_PRESENT_OFFSET, 13863 },
- { 0xfd63, G_UNICODE_NOT_PRESENT_OFFSET, 13863 },
- { 0xfd64, G_UNICODE_NOT_PRESENT_OFFSET, 13870 },
- { 0xfd65, G_UNICODE_NOT_PRESENT_OFFSET, 13870 },
- { 0xfd66, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
- { 0xfd67, G_UNICODE_NOT_PRESENT_OFFSET, 13884 },
- { 0xfd68, G_UNICODE_NOT_PRESENT_OFFSET, 13884 },
- { 0xfd69, G_UNICODE_NOT_PRESENT_OFFSET, 13891 },
- { 0xfd6a, G_UNICODE_NOT_PRESENT_OFFSET, 13898 },
- { 0xfd6b, G_UNICODE_NOT_PRESENT_OFFSET, 13898 },
- { 0xfd6c, G_UNICODE_NOT_PRESENT_OFFSET, 13905 },
- { 0xfd6d, G_UNICODE_NOT_PRESENT_OFFSET, 13905 },
- { 0xfd6e, G_UNICODE_NOT_PRESENT_OFFSET, 13912 },
- { 0xfd6f, G_UNICODE_NOT_PRESENT_OFFSET, 13919 },
- { 0xfd70, G_UNICODE_NOT_PRESENT_OFFSET, 13919 },
- { 0xfd71, G_UNICODE_NOT_PRESENT_OFFSET, 13926 },
- { 0xfd72, G_UNICODE_NOT_PRESENT_OFFSET, 13926 },
- { 0xfd73, G_UNICODE_NOT_PRESENT_OFFSET, 13933 },
- { 0xfd74, G_UNICODE_NOT_PRESENT_OFFSET, 13940 },
- { 0xfd75, G_UNICODE_NOT_PRESENT_OFFSET, 13947 },
- { 0xfd76, G_UNICODE_NOT_PRESENT_OFFSET, 13954 },
- { 0xfd77, G_UNICODE_NOT_PRESENT_OFFSET, 13954 },
- { 0xfd78, G_UNICODE_NOT_PRESENT_OFFSET, 13961 },
- { 0xfd79, G_UNICODE_NOT_PRESENT_OFFSET, 13968 },
- { 0xfd7a, G_UNICODE_NOT_PRESENT_OFFSET, 13975 },
- { 0xfd7b, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
- { 0xfd7c, G_UNICODE_NOT_PRESENT_OFFSET, 13989 },
- { 0xfd7d, G_UNICODE_NOT_PRESENT_OFFSET, 13989 },
- { 0xfd7e, G_UNICODE_NOT_PRESENT_OFFSET, 13996 },
- { 0xfd7f, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
- { 0xfd80, G_UNICODE_NOT_PRESENT_OFFSET, 14010 },
- { 0xfd81, G_UNICODE_NOT_PRESENT_OFFSET, 14017 },
- { 0xfd82, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
- { 0xfd83, G_UNICODE_NOT_PRESENT_OFFSET, 14031 },
- { 0xfd84, G_UNICODE_NOT_PRESENT_OFFSET, 14031 },
- { 0xfd85, G_UNICODE_NOT_PRESENT_OFFSET, 14038 },
- { 0xfd86, G_UNICODE_NOT_PRESENT_OFFSET, 14038 },
- { 0xfd87, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
- { 0xfd88, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
- { 0xfd89, G_UNICODE_NOT_PRESENT_OFFSET, 14052 },
- { 0xfd8a, G_UNICODE_NOT_PRESENT_OFFSET, 14059 },
- { 0xfd8b, G_UNICODE_NOT_PRESENT_OFFSET, 14066 },
- { 0xfd8c, G_UNICODE_NOT_PRESENT_OFFSET, 14073 },
- { 0xfd8d, G_UNICODE_NOT_PRESENT_OFFSET, 14080 },
- { 0xfd8e, G_UNICODE_NOT_PRESENT_OFFSET, 14087 },
- { 0xfd8f, G_UNICODE_NOT_PRESENT_OFFSET, 14094 },
- { 0xfd92, G_UNICODE_NOT_PRESENT_OFFSET, 14101 },
- { 0xfd93, G_UNICODE_NOT_PRESENT_OFFSET, 14108 },
- { 0xfd94, G_UNICODE_NOT_PRESENT_OFFSET, 14115 },
- { 0xfd95, G_UNICODE_NOT_PRESENT_OFFSET, 14122 },
- { 0xfd96, G_UNICODE_NOT_PRESENT_OFFSET, 14129 },
- { 0xfd97, G_UNICODE_NOT_PRESENT_OFFSET, 14136 },
- { 0xfd98, G_UNICODE_NOT_PRESENT_OFFSET, 14136 },
- { 0xfd99, G_UNICODE_NOT_PRESENT_OFFSET, 14143 },
- { 0xfd9a, G_UNICODE_NOT_PRESENT_OFFSET, 14150 },
- { 0xfd9b, G_UNICODE_NOT_PRESENT_OFFSET, 14157 },
- { 0xfd9c, G_UNICODE_NOT_PRESENT_OFFSET, 14164 },
- { 0xfd9d, G_UNICODE_NOT_PRESENT_OFFSET, 14164 },
- { 0xfd9e, G_UNICODE_NOT_PRESENT_OFFSET, 14171 },
- { 0xfd9f, G_UNICODE_NOT_PRESENT_OFFSET, 14178 },
- { 0xfda0, G_UNICODE_NOT_PRESENT_OFFSET, 14185 },
- { 0xfda1, G_UNICODE_NOT_PRESENT_OFFSET, 14192 },
- { 0xfda2, G_UNICODE_NOT_PRESENT_OFFSET, 14199 },
- { 0xfda3, G_UNICODE_NOT_PRESENT_OFFSET, 14206 },
- { 0xfda4, G_UNICODE_NOT_PRESENT_OFFSET, 14213 },
- { 0xfda5, G_UNICODE_NOT_PRESENT_OFFSET, 14220 },
- { 0xfda6, G_UNICODE_NOT_PRESENT_OFFSET, 14227 },
- { 0xfda7, G_UNICODE_NOT_PRESENT_OFFSET, 14234 },
- { 0xfda8, G_UNICODE_NOT_PRESENT_OFFSET, 14241 },
- { 0xfda9, G_UNICODE_NOT_PRESENT_OFFSET, 14248 },
- { 0xfdaa, G_UNICODE_NOT_PRESENT_OFFSET, 14255 },
- { 0xfdab, G_UNICODE_NOT_PRESENT_OFFSET, 14262 },
- { 0xfdac, G_UNICODE_NOT_PRESENT_OFFSET, 14269 },
- { 0xfdad, G_UNICODE_NOT_PRESENT_OFFSET, 14276 },
- { 0xfdae, G_UNICODE_NOT_PRESENT_OFFSET, 14283 },
- { 0xfdaf, G_UNICODE_NOT_PRESENT_OFFSET, 14290 },
- { 0xfdb0, G_UNICODE_NOT_PRESENT_OFFSET, 14297 },
- { 0xfdb1, G_UNICODE_NOT_PRESENT_OFFSET, 14304 },
- { 0xfdb2, G_UNICODE_NOT_PRESENT_OFFSET, 14311 },
- { 0xfdb3, G_UNICODE_NOT_PRESENT_OFFSET, 14318 },
- { 0xfdb4, G_UNICODE_NOT_PRESENT_OFFSET, 13996 },
- { 0xfdb5, G_UNICODE_NOT_PRESENT_OFFSET, 14010 },
- { 0xfdb6, G_UNICODE_NOT_PRESENT_OFFSET, 14325 },
- { 0xfdb7, G_UNICODE_NOT_PRESENT_OFFSET, 14332 },
- { 0xfdb8, G_UNICODE_NOT_PRESENT_OFFSET, 14339 },
- { 0xfdb9, G_UNICODE_NOT_PRESENT_OFFSET, 14346 },
- { 0xfdba, G_UNICODE_NOT_PRESENT_OFFSET, 14353 },
- { 0xfdbb, G_UNICODE_NOT_PRESENT_OFFSET, 14360 },
- { 0xfdbc, G_UNICODE_NOT_PRESENT_OFFSET, 14353 },
- { 0xfdbd, G_UNICODE_NOT_PRESENT_OFFSET, 14339 },
- { 0xfdbe, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
- { 0xfdbf, G_UNICODE_NOT_PRESENT_OFFSET, 14374 },
- { 0xfdc0, G_UNICODE_NOT_PRESENT_OFFSET, 14381 },
- { 0xfdc1, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
- { 0xfdc2, G_UNICODE_NOT_PRESENT_OFFSET, 14395 },
- { 0xfdc3, G_UNICODE_NOT_PRESENT_OFFSET, 14360 },
- { 0xfdc4, G_UNICODE_NOT_PRESENT_OFFSET, 13947 },
- { 0xfdc5, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
- { 0xfdc6, G_UNICODE_NOT_PRESENT_OFFSET, 14402 },
- { 0xfdc7, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
- { 0xfdf0, G_UNICODE_NOT_PRESENT_OFFSET, 14416 },
- { 0xfdf1, G_UNICODE_NOT_PRESENT_OFFSET, 14423 },
- { 0xfdf2, G_UNICODE_NOT_PRESENT_OFFSET, 14430 },
- { 0xfdf3, G_UNICODE_NOT_PRESENT_OFFSET, 14439 },
- { 0xfdf4, G_UNICODE_NOT_PRESENT_OFFSET, 14448 },
- { 0xfdf5, G_UNICODE_NOT_PRESENT_OFFSET, 14457 },
- { 0xfdf6, G_UNICODE_NOT_PRESENT_OFFSET, 14466 },
- { 0xfdf7, G_UNICODE_NOT_PRESENT_OFFSET, 14475 },
- { 0xfdf8, G_UNICODE_NOT_PRESENT_OFFSET, 14484 },
- { 0xfdf9, G_UNICODE_NOT_PRESENT_OFFSET, 14493 },
- { 0xfdfa, G_UNICODE_NOT_PRESENT_OFFSET, 14500 },
- { 0xfdfb, G_UNICODE_NOT_PRESENT_OFFSET, 14534 },
- { 0xfdfc, G_UNICODE_NOT_PRESENT_OFFSET, 14550 },
- { 0xfe10, G_UNICODE_NOT_PRESENT_OFFSET, 14559 },
- { 0xfe11, G_UNICODE_NOT_PRESENT_OFFSET, 14561 },
- { 0xfe12, G_UNICODE_NOT_PRESENT_OFFSET, 14565 },
- { 0xfe13, G_UNICODE_NOT_PRESENT_OFFSET, 14569 },
+ { 0xfbde, G_UNICODE_NOT_PRESENT_OFFSET, 12858 },
+ { 0xfbdf, G_UNICODE_NOT_PRESENT_OFFSET, 12858 },
+ { 0xfbe0, G_UNICODE_NOT_PRESENT_OFFSET, 12861 },
+ { 0xfbe1, G_UNICODE_NOT_PRESENT_OFFSET, 12861 },
+ { 0xfbe2, G_UNICODE_NOT_PRESENT_OFFSET, 12864 },
+ { 0xfbe3, G_UNICODE_NOT_PRESENT_OFFSET, 12864 },
+ { 0xfbe4, G_UNICODE_NOT_PRESENT_OFFSET, 12867 },
+ { 0xfbe5, G_UNICODE_NOT_PRESENT_OFFSET, 12867 },
+ { 0xfbe6, G_UNICODE_NOT_PRESENT_OFFSET, 12867 },
+ { 0xfbe7, G_UNICODE_NOT_PRESENT_OFFSET, 12867 },
+ { 0xfbe8, G_UNICODE_NOT_PRESENT_OFFSET, 12870 },
+ { 0xfbe9, G_UNICODE_NOT_PRESENT_OFFSET, 12870 },
+ { 0xfbea, G_UNICODE_NOT_PRESENT_OFFSET, 12873 },
+ { 0xfbeb, G_UNICODE_NOT_PRESENT_OFFSET, 12873 },
+ { 0xfbec, G_UNICODE_NOT_PRESENT_OFFSET, 12880 },
+ { 0xfbed, G_UNICODE_NOT_PRESENT_OFFSET, 12880 },
+ { 0xfbee, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
+ { 0xfbef, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
+ { 0xfbf0, G_UNICODE_NOT_PRESENT_OFFSET, 12894 },
+ { 0xfbf1, G_UNICODE_NOT_PRESENT_OFFSET, 12894 },
+ { 0xfbf2, G_UNICODE_NOT_PRESENT_OFFSET, 12901 },
+ { 0xfbf3, G_UNICODE_NOT_PRESENT_OFFSET, 12901 },
+ { 0xfbf4, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
+ { 0xfbf5, G_UNICODE_NOT_PRESENT_OFFSET, 12908 },
+ { 0xfbf6, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
+ { 0xfbf7, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
+ { 0xfbf8, G_UNICODE_NOT_PRESENT_OFFSET, 12915 },
+ { 0xfbf9, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+ { 0xfbfa, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+ { 0xfbfb, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+ { 0xfbfc, G_UNICODE_NOT_PRESENT_OFFSET, 12929 },
+ { 0xfbfd, G_UNICODE_NOT_PRESENT_OFFSET, 12929 },
+ { 0xfbfe, G_UNICODE_NOT_PRESENT_OFFSET, 12929 },
+ { 0xfbff, G_UNICODE_NOT_PRESENT_OFFSET, 12929 },
+ { 0xfc00, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
+ { 0xfc01, G_UNICODE_NOT_PRESENT_OFFSET, 12939 },
+ { 0xfc02, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
+ { 0xfc03, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+ { 0xfc04, G_UNICODE_NOT_PRESENT_OFFSET, 12953 },
+ { 0xfc05, G_UNICODE_NOT_PRESENT_OFFSET, 12960 },
+ { 0xfc06, G_UNICODE_NOT_PRESENT_OFFSET, 12965 },
+ { 0xfc07, G_UNICODE_NOT_PRESENT_OFFSET, 12970 },
+ { 0xfc08, G_UNICODE_NOT_PRESENT_OFFSET, 12975 },
+ { 0xfc09, G_UNICODE_NOT_PRESENT_OFFSET, 12980 },
+ { 0xfc0a, G_UNICODE_NOT_PRESENT_OFFSET, 12985 },
+ { 0xfc0b, G_UNICODE_NOT_PRESENT_OFFSET, 12990 },
+ { 0xfc0c, G_UNICODE_NOT_PRESENT_OFFSET, 12995 },
+ { 0xfc0d, G_UNICODE_NOT_PRESENT_OFFSET, 13000 },
+ { 0xfc0e, G_UNICODE_NOT_PRESENT_OFFSET, 13005 },
+ { 0xfc0f, G_UNICODE_NOT_PRESENT_OFFSET, 13010 },
+ { 0xfc10, G_UNICODE_NOT_PRESENT_OFFSET, 13015 },
+ { 0xfc11, G_UNICODE_NOT_PRESENT_OFFSET, 13020 },
+ { 0xfc12, G_UNICODE_NOT_PRESENT_OFFSET, 13025 },
+ { 0xfc13, G_UNICODE_NOT_PRESENT_OFFSET, 13030 },
+ { 0xfc14, G_UNICODE_NOT_PRESENT_OFFSET, 13035 },
+ { 0xfc15, G_UNICODE_NOT_PRESENT_OFFSET, 13040 },
+ { 0xfc16, G_UNICODE_NOT_PRESENT_OFFSET, 13045 },
+ { 0xfc17, G_UNICODE_NOT_PRESENT_OFFSET, 13050 },
+ { 0xfc18, G_UNICODE_NOT_PRESENT_OFFSET, 13055 },
+ { 0xfc19, G_UNICODE_NOT_PRESENT_OFFSET, 13060 },
+ { 0xfc1a, G_UNICODE_NOT_PRESENT_OFFSET, 13065 },
+ { 0xfc1b, G_UNICODE_NOT_PRESENT_OFFSET, 13070 },
+ { 0xfc1c, G_UNICODE_NOT_PRESENT_OFFSET, 13075 },
+ { 0xfc1d, G_UNICODE_NOT_PRESENT_OFFSET, 13080 },
+ { 0xfc1e, G_UNICODE_NOT_PRESENT_OFFSET, 13085 },
+ { 0xfc1f, G_UNICODE_NOT_PRESENT_OFFSET, 13090 },
+ { 0xfc20, G_UNICODE_NOT_PRESENT_OFFSET, 13095 },
+ { 0xfc21, G_UNICODE_NOT_PRESENT_OFFSET, 13100 },
+ { 0xfc22, G_UNICODE_NOT_PRESENT_OFFSET, 13105 },
+ { 0xfc23, G_UNICODE_NOT_PRESENT_OFFSET, 13110 },
+ { 0xfc24, G_UNICODE_NOT_PRESENT_OFFSET, 13115 },
+ { 0xfc25, G_UNICODE_NOT_PRESENT_OFFSET, 13120 },
+ { 0xfc26, G_UNICODE_NOT_PRESENT_OFFSET, 13125 },
+ { 0xfc27, G_UNICODE_NOT_PRESENT_OFFSET, 13130 },
+ { 0xfc28, G_UNICODE_NOT_PRESENT_OFFSET, 13135 },
+ { 0xfc29, G_UNICODE_NOT_PRESENT_OFFSET, 13140 },
+ { 0xfc2a, G_UNICODE_NOT_PRESENT_OFFSET, 13145 },
+ { 0xfc2b, G_UNICODE_NOT_PRESENT_OFFSET, 13150 },
+ { 0xfc2c, G_UNICODE_NOT_PRESENT_OFFSET, 13155 },
+ { 0xfc2d, G_UNICODE_NOT_PRESENT_OFFSET, 13160 },
+ { 0xfc2e, G_UNICODE_NOT_PRESENT_OFFSET, 13165 },
+ { 0xfc2f, G_UNICODE_NOT_PRESENT_OFFSET, 13170 },
+ { 0xfc30, G_UNICODE_NOT_PRESENT_OFFSET, 13175 },
+ { 0xfc31, G_UNICODE_NOT_PRESENT_OFFSET, 13180 },
+ { 0xfc32, G_UNICODE_NOT_PRESENT_OFFSET, 13185 },
+ { 0xfc33, G_UNICODE_NOT_PRESENT_OFFSET, 13190 },
+ { 0xfc34, G_UNICODE_NOT_PRESENT_OFFSET, 13195 },
+ { 0xfc35, G_UNICODE_NOT_PRESENT_OFFSET, 13200 },
+ { 0xfc36, G_UNICODE_NOT_PRESENT_OFFSET, 13205 },
+ { 0xfc37, G_UNICODE_NOT_PRESENT_OFFSET, 13210 },
+ { 0xfc38, G_UNICODE_NOT_PRESENT_OFFSET, 13215 },
+ { 0xfc39, G_UNICODE_NOT_PRESENT_OFFSET, 13220 },
+ { 0xfc3a, G_UNICODE_NOT_PRESENT_OFFSET, 13225 },
+ { 0xfc3b, G_UNICODE_NOT_PRESENT_OFFSET, 13230 },
+ { 0xfc3c, G_UNICODE_NOT_PRESENT_OFFSET, 13235 },
+ { 0xfc3d, G_UNICODE_NOT_PRESENT_OFFSET, 13240 },
+ { 0xfc3e, G_UNICODE_NOT_PRESENT_OFFSET, 13245 },
+ { 0xfc3f, G_UNICODE_NOT_PRESENT_OFFSET, 13250 },
+ { 0xfc40, G_UNICODE_NOT_PRESENT_OFFSET, 13255 },
+ { 0xfc41, G_UNICODE_NOT_PRESENT_OFFSET, 13260 },
+ { 0xfc42, G_UNICODE_NOT_PRESENT_OFFSET, 13265 },
+ { 0xfc43, G_UNICODE_NOT_PRESENT_OFFSET, 13270 },
+ { 0xfc44, G_UNICODE_NOT_PRESENT_OFFSET, 13275 },
+ { 0xfc45, G_UNICODE_NOT_PRESENT_OFFSET, 13280 },
+ { 0xfc46, G_UNICODE_NOT_PRESENT_OFFSET, 13285 },
+ { 0xfc47, G_UNICODE_NOT_PRESENT_OFFSET, 13290 },
+ { 0xfc48, G_UNICODE_NOT_PRESENT_OFFSET, 13295 },
+ { 0xfc49, G_UNICODE_NOT_PRESENT_OFFSET, 13300 },
+ { 0xfc4a, G_UNICODE_NOT_PRESENT_OFFSET, 13305 },
+ { 0xfc4b, G_UNICODE_NOT_PRESENT_OFFSET, 13310 },
+ { 0xfc4c, G_UNICODE_NOT_PRESENT_OFFSET, 13315 },
+ { 0xfc4d, G_UNICODE_NOT_PRESENT_OFFSET, 13320 },
+ { 0xfc4e, G_UNICODE_NOT_PRESENT_OFFSET, 13325 },
+ { 0xfc4f, G_UNICODE_NOT_PRESENT_OFFSET, 13330 },
+ { 0xfc50, G_UNICODE_NOT_PRESENT_OFFSET, 13335 },
+ { 0xfc51, G_UNICODE_NOT_PRESENT_OFFSET, 13340 },
+ { 0xfc52, G_UNICODE_NOT_PRESENT_OFFSET, 13345 },
+ { 0xfc53, G_UNICODE_NOT_PRESENT_OFFSET, 13350 },
+ { 0xfc54, G_UNICODE_NOT_PRESENT_OFFSET, 13355 },
+ { 0xfc55, G_UNICODE_NOT_PRESENT_OFFSET, 13360 },
+ { 0xfc56, G_UNICODE_NOT_PRESENT_OFFSET, 13365 },
+ { 0xfc57, G_UNICODE_NOT_PRESENT_OFFSET, 13370 },
+ { 0xfc58, G_UNICODE_NOT_PRESENT_OFFSET, 13375 },
+ { 0xfc59, G_UNICODE_NOT_PRESENT_OFFSET, 13380 },
+ { 0xfc5a, G_UNICODE_NOT_PRESENT_OFFSET, 13385 },
+ { 0xfc5b, G_UNICODE_NOT_PRESENT_OFFSET, 13390 },
+ { 0xfc5c, G_UNICODE_NOT_PRESENT_OFFSET, 13395 },
+ { 0xfc5d, G_UNICODE_NOT_PRESENT_OFFSET, 13400 },
+ { 0xfc5e, G_UNICODE_NOT_PRESENT_OFFSET, 13405 },
+ { 0xfc5f, G_UNICODE_NOT_PRESENT_OFFSET, 13411 },
+ { 0xfc60, G_UNICODE_NOT_PRESENT_OFFSET, 13417 },
+ { 0xfc61, G_UNICODE_NOT_PRESENT_OFFSET, 13423 },
+ { 0xfc62, G_UNICODE_NOT_PRESENT_OFFSET, 13429 },
+ { 0xfc63, G_UNICODE_NOT_PRESENT_OFFSET, 13435 },
+ { 0xfc64, G_UNICODE_NOT_PRESENT_OFFSET, 13441 },
+ { 0xfc65, G_UNICODE_NOT_PRESENT_OFFSET, 13448 },
+ { 0xfc66, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
+ { 0xfc67, G_UNICODE_NOT_PRESENT_OFFSET, 13455 },
+ { 0xfc68, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+ { 0xfc69, G_UNICODE_NOT_PRESENT_OFFSET, 12953 },
+ { 0xfc6a, G_UNICODE_NOT_PRESENT_OFFSET, 13462 },
+ { 0xfc6b, G_UNICODE_NOT_PRESENT_OFFSET, 13467 },
+ { 0xfc6c, G_UNICODE_NOT_PRESENT_OFFSET, 12975 },
+ { 0xfc6d, G_UNICODE_NOT_PRESENT_OFFSET, 13472 },
+ { 0xfc6e, G_UNICODE_NOT_PRESENT_OFFSET, 12980 },
+ { 0xfc6f, G_UNICODE_NOT_PRESENT_OFFSET, 12985 },
+ { 0xfc70, G_UNICODE_NOT_PRESENT_OFFSET, 13477 },
+ { 0xfc71, G_UNICODE_NOT_PRESENT_OFFSET, 13482 },
+ { 0xfc72, G_UNICODE_NOT_PRESENT_OFFSET, 13005 },
+ { 0xfc73, G_UNICODE_NOT_PRESENT_OFFSET, 13487 },
+ { 0xfc74, G_UNICODE_NOT_PRESENT_OFFSET, 13010 },
+ { 0xfc75, G_UNICODE_NOT_PRESENT_OFFSET, 13015 },
+ { 0xfc76, G_UNICODE_NOT_PRESENT_OFFSET, 13492 },
+ { 0xfc77, G_UNICODE_NOT_PRESENT_OFFSET, 13497 },
+ { 0xfc78, G_UNICODE_NOT_PRESENT_OFFSET, 13025 },
+ { 0xfc79, G_UNICODE_NOT_PRESENT_OFFSET, 13502 },
+ { 0xfc7a, G_UNICODE_NOT_PRESENT_OFFSET, 13030 },
+ { 0xfc7b, G_UNICODE_NOT_PRESENT_OFFSET, 13035 },
+ { 0xfc7c, G_UNICODE_NOT_PRESENT_OFFSET, 13180 },
+ { 0xfc7d, G_UNICODE_NOT_PRESENT_OFFSET, 13185 },
+ { 0xfc7e, G_UNICODE_NOT_PRESENT_OFFSET, 13200 },
+ { 0xfc7f, G_UNICODE_NOT_PRESENT_OFFSET, 13205 },
+ { 0xfc80, G_UNICODE_NOT_PRESENT_OFFSET, 13210 },
+ { 0xfc81, G_UNICODE_NOT_PRESENT_OFFSET, 13230 },
+ { 0xfc82, G_UNICODE_NOT_PRESENT_OFFSET, 13235 },
+ { 0xfc83, G_UNICODE_NOT_PRESENT_OFFSET, 13240 },
+ { 0xfc84, G_UNICODE_NOT_PRESENT_OFFSET, 13245 },
+ { 0xfc85, G_UNICODE_NOT_PRESENT_OFFSET, 13265 },
+ { 0xfc86, G_UNICODE_NOT_PRESENT_OFFSET, 13270 },
+ { 0xfc87, G_UNICODE_NOT_PRESENT_OFFSET, 13275 },
+ { 0xfc88, G_UNICODE_NOT_PRESENT_OFFSET, 13507 },
+ { 0xfc89, G_UNICODE_NOT_PRESENT_OFFSET, 13295 },
+ { 0xfc8a, G_UNICODE_NOT_PRESENT_OFFSET, 13512 },
+ { 0xfc8b, G_UNICODE_NOT_PRESENT_OFFSET, 13517 },
+ { 0xfc8c, G_UNICODE_NOT_PRESENT_OFFSET, 13325 },
+ { 0xfc8d, G_UNICODE_NOT_PRESENT_OFFSET, 13522 },
+ { 0xfc8e, G_UNICODE_NOT_PRESENT_OFFSET, 13330 },
+ { 0xfc8f, G_UNICODE_NOT_PRESENT_OFFSET, 13335 },
+ { 0xfc90, G_UNICODE_NOT_PRESENT_OFFSET, 13400 },
+ { 0xfc91, G_UNICODE_NOT_PRESENT_OFFSET, 13527 },
+ { 0xfc92, G_UNICODE_NOT_PRESENT_OFFSET, 13532 },
+ { 0xfc93, G_UNICODE_NOT_PRESENT_OFFSET, 13375 },
+ { 0xfc94, G_UNICODE_NOT_PRESENT_OFFSET, 13537 },
+ { 0xfc95, G_UNICODE_NOT_PRESENT_OFFSET, 13380 },
+ { 0xfc96, G_UNICODE_NOT_PRESENT_OFFSET, 13385 },
+ { 0xfc97, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
+ { 0xfc98, G_UNICODE_NOT_PRESENT_OFFSET, 12939 },
+ { 0xfc99, G_UNICODE_NOT_PRESENT_OFFSET, 13542 },
+ { 0xfc9a, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
+ { 0xfc9b, G_UNICODE_NOT_PRESENT_OFFSET, 13549 },
+ { 0xfc9c, G_UNICODE_NOT_PRESENT_OFFSET, 12960 },
+ { 0xfc9d, G_UNICODE_NOT_PRESENT_OFFSET, 12965 },
+ { 0xfc9e, G_UNICODE_NOT_PRESENT_OFFSET, 12970 },
+ { 0xfc9f, G_UNICODE_NOT_PRESENT_OFFSET, 12975 },
+ { 0xfca0, G_UNICODE_NOT_PRESENT_OFFSET, 13556 },
+ { 0xfca1, G_UNICODE_NOT_PRESENT_OFFSET, 12990 },
+ { 0xfca2, G_UNICODE_NOT_PRESENT_OFFSET, 12995 },
+ { 0xfca3, G_UNICODE_NOT_PRESENT_OFFSET, 13000 },
+ { 0xfca4, G_UNICODE_NOT_PRESENT_OFFSET, 13005 },
+ { 0xfca5, G_UNICODE_NOT_PRESENT_OFFSET, 13561 },
+ { 0xfca6, G_UNICODE_NOT_PRESENT_OFFSET, 13025 },
+ { 0xfca7, G_UNICODE_NOT_PRESENT_OFFSET, 13040 },
+ { 0xfca8, G_UNICODE_NOT_PRESENT_OFFSET, 13045 },
+ { 0xfca9, G_UNICODE_NOT_PRESENT_OFFSET, 13050 },
+ { 0xfcaa, G_UNICODE_NOT_PRESENT_OFFSET, 13055 },
+ { 0xfcab, G_UNICODE_NOT_PRESENT_OFFSET, 13060 },
+ { 0xfcac, G_UNICODE_NOT_PRESENT_OFFSET, 13070 },
+ { 0xfcad, G_UNICODE_NOT_PRESENT_OFFSET, 13075 },
+ { 0xfcae, G_UNICODE_NOT_PRESENT_OFFSET, 13080 },
+ { 0xfcaf, G_UNICODE_NOT_PRESENT_OFFSET, 13085 },
+ { 0xfcb0, G_UNICODE_NOT_PRESENT_OFFSET, 13090 },
+ { 0xfcb1, G_UNICODE_NOT_PRESENT_OFFSET, 13095 },
+ { 0xfcb2, G_UNICODE_NOT_PRESENT_OFFSET, 13566 },
+ { 0xfcb3, G_UNICODE_NOT_PRESENT_OFFSET, 13100 },
+ { 0xfcb4, G_UNICODE_NOT_PRESENT_OFFSET, 13105 },
+ { 0xfcb5, G_UNICODE_NOT_PRESENT_OFFSET, 13110 },
+ { 0xfcb6, G_UNICODE_NOT_PRESENT_OFFSET, 13115 },
+ { 0xfcb7, G_UNICODE_NOT_PRESENT_OFFSET, 13120 },
+ { 0xfcb8, G_UNICODE_NOT_PRESENT_OFFSET, 13125 },
+ { 0xfcb9, G_UNICODE_NOT_PRESENT_OFFSET, 13135 },
+ { 0xfcba, G_UNICODE_NOT_PRESENT_OFFSET, 13140 },
+ { 0xfcbb, G_UNICODE_NOT_PRESENT_OFFSET, 13145 },
+ { 0xfcbc, G_UNICODE_NOT_PRESENT_OFFSET, 13150 },
+ { 0xfcbd, G_UNICODE_NOT_PRESENT_OFFSET, 13155 },
+ { 0xfcbe, G_UNICODE_NOT_PRESENT_OFFSET, 13160 },
+ { 0xfcbf, G_UNICODE_NOT_PRESENT_OFFSET, 13165 },
+ { 0xfcc0, G_UNICODE_NOT_PRESENT_OFFSET, 13170 },
+ { 0xfcc1, G_UNICODE_NOT_PRESENT_OFFSET, 13175 },
+ { 0xfcc2, G_UNICODE_NOT_PRESENT_OFFSET, 13190 },
+ { 0xfcc3, G_UNICODE_NOT_PRESENT_OFFSET, 13195 },
+ { 0xfcc4, G_UNICODE_NOT_PRESENT_OFFSET, 13215 },
+ { 0xfcc5, G_UNICODE_NOT_PRESENT_OFFSET, 13220 },
+ { 0xfcc6, G_UNICODE_NOT_PRESENT_OFFSET, 13225 },
+ { 0xfcc7, G_UNICODE_NOT_PRESENT_OFFSET, 13230 },
+ { 0xfcc8, G_UNICODE_NOT_PRESENT_OFFSET, 13235 },
+ { 0xfcc9, G_UNICODE_NOT_PRESENT_OFFSET, 13250 },
+ { 0xfcca, G_UNICODE_NOT_PRESENT_OFFSET, 13255 },
+ { 0xfccb, G_UNICODE_NOT_PRESENT_OFFSET, 13260 },
+ { 0xfccc, G_UNICODE_NOT_PRESENT_OFFSET, 13265 },
+ { 0xfccd, G_UNICODE_NOT_PRESENT_OFFSET, 13571 },
+ { 0xfcce, G_UNICODE_NOT_PRESENT_OFFSET, 13280 },
+ { 0xfccf, G_UNICODE_NOT_PRESENT_OFFSET, 13285 },
+ { 0xfcd0, G_UNICODE_NOT_PRESENT_OFFSET, 13290 },
+ { 0xfcd1, G_UNICODE_NOT_PRESENT_OFFSET, 13295 },
+ { 0xfcd2, G_UNICODE_NOT_PRESENT_OFFSET, 13310 },
+ { 0xfcd3, G_UNICODE_NOT_PRESENT_OFFSET, 13315 },
+ { 0xfcd4, G_UNICODE_NOT_PRESENT_OFFSET, 13320 },
+ { 0xfcd5, G_UNICODE_NOT_PRESENT_OFFSET, 13325 },
+ { 0xfcd6, G_UNICODE_NOT_PRESENT_OFFSET, 13576 },
+ { 0xfcd7, G_UNICODE_NOT_PRESENT_OFFSET, 13340 },
+ { 0xfcd8, G_UNICODE_NOT_PRESENT_OFFSET, 13345 },
+ { 0xfcd9, G_UNICODE_NOT_PRESENT_OFFSET, 13581 },
+ { 0xfcda, G_UNICODE_NOT_PRESENT_OFFSET, 13360 },
+ { 0xfcdb, G_UNICODE_NOT_PRESENT_OFFSET, 13365 },
+ { 0xfcdc, G_UNICODE_NOT_PRESENT_OFFSET, 13370 },
+ { 0xfcdd, G_UNICODE_NOT_PRESENT_OFFSET, 13375 },
+ { 0xfcde, G_UNICODE_NOT_PRESENT_OFFSET, 13586 },
+ { 0xfcdf, G_UNICODE_NOT_PRESENT_OFFSET, 12946 },
+ { 0xfce0, G_UNICODE_NOT_PRESENT_OFFSET, 13549 },
+ { 0xfce1, G_UNICODE_NOT_PRESENT_OFFSET, 12975 },
+ { 0xfce2, G_UNICODE_NOT_PRESENT_OFFSET, 13556 },
+ { 0xfce3, G_UNICODE_NOT_PRESENT_OFFSET, 13005 },
+ { 0xfce4, G_UNICODE_NOT_PRESENT_OFFSET, 13561 },
+ { 0xfce5, G_UNICODE_NOT_PRESENT_OFFSET, 13025 },
+ { 0xfce6, G_UNICODE_NOT_PRESENT_OFFSET, 13591 },
+ { 0xfce7, G_UNICODE_NOT_PRESENT_OFFSET, 13090 },
+ { 0xfce8, G_UNICODE_NOT_PRESENT_OFFSET, 13596 },
+ { 0xfce9, G_UNICODE_NOT_PRESENT_OFFSET, 13601 },
+ { 0xfcea, G_UNICODE_NOT_PRESENT_OFFSET, 13606 },
+ { 0xfceb, G_UNICODE_NOT_PRESENT_OFFSET, 13230 },
+ { 0xfcec, G_UNICODE_NOT_PRESENT_OFFSET, 13235 },
+ { 0xfced, G_UNICODE_NOT_PRESENT_OFFSET, 13265 },
+ { 0xfcee, G_UNICODE_NOT_PRESENT_OFFSET, 13325 },
+ { 0xfcef, G_UNICODE_NOT_PRESENT_OFFSET, 13576 },
+ { 0xfcf0, G_UNICODE_NOT_PRESENT_OFFSET, 13375 },
+ { 0xfcf1, G_UNICODE_NOT_PRESENT_OFFSET, 13586 },
+ { 0xfcf2, G_UNICODE_NOT_PRESENT_OFFSET, 13611 },
+ { 0xfcf3, G_UNICODE_NOT_PRESENT_OFFSET, 13618 },
+ { 0xfcf4, G_UNICODE_NOT_PRESENT_OFFSET, 13625 },
+ { 0xfcf5, G_UNICODE_NOT_PRESENT_OFFSET, 13632 },
+ { 0xfcf6, G_UNICODE_NOT_PRESENT_OFFSET, 13637 },
+ { 0xfcf7, G_UNICODE_NOT_PRESENT_OFFSET, 13642 },
+ { 0xfcf8, G_UNICODE_NOT_PRESENT_OFFSET, 13647 },
+ { 0xfcf9, G_UNICODE_NOT_PRESENT_OFFSET, 13652 },
+ { 0xfcfa, G_UNICODE_NOT_PRESENT_OFFSET, 13657 },
+ { 0xfcfb, G_UNICODE_NOT_PRESENT_OFFSET, 13662 },
+ { 0xfcfc, G_UNICODE_NOT_PRESENT_OFFSET, 13667 },
+ { 0xfcfd, G_UNICODE_NOT_PRESENT_OFFSET, 13672 },
+ { 0xfcfe, G_UNICODE_NOT_PRESENT_OFFSET, 13677 },
+ { 0xfcff, G_UNICODE_NOT_PRESENT_OFFSET, 13682 },
+ { 0xfd00, G_UNICODE_NOT_PRESENT_OFFSET, 13687 },
+ { 0xfd01, G_UNICODE_NOT_PRESENT_OFFSET, 13692 },
+ { 0xfd02, G_UNICODE_NOT_PRESENT_OFFSET, 13697 },
+ { 0xfd03, G_UNICODE_NOT_PRESENT_OFFSET, 13702 },
+ { 0xfd04, G_UNICODE_NOT_PRESENT_OFFSET, 13707 },
+ { 0xfd05, G_UNICODE_NOT_PRESENT_OFFSET, 13712 },
+ { 0xfd06, G_UNICODE_NOT_PRESENT_OFFSET, 13717 },
+ { 0xfd07, G_UNICODE_NOT_PRESENT_OFFSET, 13722 },
+ { 0xfd08, G_UNICODE_NOT_PRESENT_OFFSET, 13727 },
+ { 0xfd09, G_UNICODE_NOT_PRESENT_OFFSET, 13732 },
+ { 0xfd0a, G_UNICODE_NOT_PRESENT_OFFSET, 13737 },
+ { 0xfd0b, G_UNICODE_NOT_PRESENT_OFFSET, 13742 },
+ { 0xfd0c, G_UNICODE_NOT_PRESENT_OFFSET, 13601 },
+ { 0xfd0d, G_UNICODE_NOT_PRESENT_OFFSET, 13747 },
+ { 0xfd0e, G_UNICODE_NOT_PRESENT_OFFSET, 13752 },
+ { 0xfd0f, G_UNICODE_NOT_PRESENT_OFFSET, 13757 },
+ { 0xfd10, G_UNICODE_NOT_PRESENT_OFFSET, 13762 },
+ { 0xfd11, G_UNICODE_NOT_PRESENT_OFFSET, 13632 },
+ { 0xfd12, G_UNICODE_NOT_PRESENT_OFFSET, 13637 },
+ { 0xfd13, G_UNICODE_NOT_PRESENT_OFFSET, 13642 },
+ { 0xfd14, G_UNICODE_NOT_PRESENT_OFFSET, 13647 },
+ { 0xfd15, G_UNICODE_NOT_PRESENT_OFFSET, 13652 },
+ { 0xfd16, G_UNICODE_NOT_PRESENT_OFFSET, 13657 },
+ { 0xfd17, G_UNICODE_NOT_PRESENT_OFFSET, 13662 },
+ { 0xfd18, G_UNICODE_NOT_PRESENT_OFFSET, 13667 },
+ { 0xfd19, G_UNICODE_NOT_PRESENT_OFFSET, 13672 },
+ { 0xfd1a, G_UNICODE_NOT_PRESENT_OFFSET, 13677 },
+ { 0xfd1b, G_UNICODE_NOT_PRESENT_OFFSET, 13682 },
+ { 0xfd1c, G_UNICODE_NOT_PRESENT_OFFSET, 13687 },
+ { 0xfd1d, G_UNICODE_NOT_PRESENT_OFFSET, 13692 },
+ { 0xfd1e, G_UNICODE_NOT_PRESENT_OFFSET, 13697 },
+ { 0xfd1f, G_UNICODE_NOT_PRESENT_OFFSET, 13702 },
+ { 0xfd20, G_UNICODE_NOT_PRESENT_OFFSET, 13707 },
+ { 0xfd21, G_UNICODE_NOT_PRESENT_OFFSET, 13712 },
+ { 0xfd22, G_UNICODE_NOT_PRESENT_OFFSET, 13717 },
+ { 0xfd23, G_UNICODE_NOT_PRESENT_OFFSET, 13722 },
+ { 0xfd24, G_UNICODE_NOT_PRESENT_OFFSET, 13727 },
+ { 0xfd25, G_UNICODE_NOT_PRESENT_OFFSET, 13732 },
+ { 0xfd26, G_UNICODE_NOT_PRESENT_OFFSET, 13737 },
+ { 0xfd27, G_UNICODE_NOT_PRESENT_OFFSET, 13742 },
+ { 0xfd28, G_UNICODE_NOT_PRESENT_OFFSET, 13601 },
+ { 0xfd29, G_UNICODE_NOT_PRESENT_OFFSET, 13747 },
+ { 0xfd2a, G_UNICODE_NOT_PRESENT_OFFSET, 13752 },
+ { 0xfd2b, G_UNICODE_NOT_PRESENT_OFFSET, 13757 },
+ { 0xfd2c, G_UNICODE_NOT_PRESENT_OFFSET, 13762 },
+ { 0xfd2d, G_UNICODE_NOT_PRESENT_OFFSET, 13732 },
+ { 0xfd2e, G_UNICODE_NOT_PRESENT_OFFSET, 13737 },
+ { 0xfd2f, G_UNICODE_NOT_PRESENT_OFFSET, 13742 },
+ { 0xfd30, G_UNICODE_NOT_PRESENT_OFFSET, 13601 },
+ { 0xfd31, G_UNICODE_NOT_PRESENT_OFFSET, 13596 },
+ { 0xfd32, G_UNICODE_NOT_PRESENT_OFFSET, 13606 },
+ { 0xfd33, G_UNICODE_NOT_PRESENT_OFFSET, 13130 },
+ { 0xfd34, G_UNICODE_NOT_PRESENT_OFFSET, 13075 },
+ { 0xfd35, G_UNICODE_NOT_PRESENT_OFFSET, 13080 },
+ { 0xfd36, G_UNICODE_NOT_PRESENT_OFFSET, 13085 },
+ { 0xfd37, G_UNICODE_NOT_PRESENT_OFFSET, 13732 },
+ { 0xfd38, G_UNICODE_NOT_PRESENT_OFFSET, 13737 },
+ { 0xfd39, G_UNICODE_NOT_PRESENT_OFFSET, 13742 },
+ { 0xfd3a, G_UNICODE_NOT_PRESENT_OFFSET, 13130 },
+ { 0xfd3b, G_UNICODE_NOT_PRESENT_OFFSET, 13135 },
+ { 0xfd3c, G_UNICODE_NOT_PRESENT_OFFSET, 13767 },
+ { 0xfd3d, G_UNICODE_NOT_PRESENT_OFFSET, 13767 },
+ { 0xfd50, G_UNICODE_NOT_PRESENT_OFFSET, 13772 },
+ { 0xfd51, G_UNICODE_NOT_PRESENT_OFFSET, 13779 },
+ { 0xfd52, G_UNICODE_NOT_PRESENT_OFFSET, 13779 },
+ { 0xfd53, G_UNICODE_NOT_PRESENT_OFFSET, 13786 },
+ { 0xfd54, G_UNICODE_NOT_PRESENT_OFFSET, 13793 },
+ { 0xfd55, G_UNICODE_NOT_PRESENT_OFFSET, 13800 },
+ { 0xfd56, G_UNICODE_NOT_PRESENT_OFFSET, 13807 },
+ { 0xfd57, G_UNICODE_NOT_PRESENT_OFFSET, 13814 },
+ { 0xfd58, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+ { 0xfd59, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+ { 0xfd5a, G_UNICODE_NOT_PRESENT_OFFSET, 13828 },
+ { 0xfd5b, G_UNICODE_NOT_PRESENT_OFFSET, 13835 },
+ { 0xfd5c, G_UNICODE_NOT_PRESENT_OFFSET, 13842 },
+ { 0xfd5d, G_UNICODE_NOT_PRESENT_OFFSET, 13849 },
+ { 0xfd5e, G_UNICODE_NOT_PRESENT_OFFSET, 13856 },
+ { 0xfd5f, G_UNICODE_NOT_PRESENT_OFFSET, 13863 },
+ { 0xfd60, G_UNICODE_NOT_PRESENT_OFFSET, 13863 },
+ { 0xfd61, G_UNICODE_NOT_PRESENT_OFFSET, 13870 },
+ { 0xfd62, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
+ { 0xfd63, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
+ { 0xfd64, G_UNICODE_NOT_PRESENT_OFFSET, 13884 },
+ { 0xfd65, G_UNICODE_NOT_PRESENT_OFFSET, 13884 },
+ { 0xfd66, G_UNICODE_NOT_PRESENT_OFFSET, 13891 },
+ { 0xfd67, G_UNICODE_NOT_PRESENT_OFFSET, 13898 },
+ { 0xfd68, G_UNICODE_NOT_PRESENT_OFFSET, 13898 },
+ { 0xfd69, G_UNICODE_NOT_PRESENT_OFFSET, 13905 },
+ { 0xfd6a, G_UNICODE_NOT_PRESENT_OFFSET, 13912 },
+ { 0xfd6b, G_UNICODE_NOT_PRESENT_OFFSET, 13912 },
+ { 0xfd6c, G_UNICODE_NOT_PRESENT_OFFSET, 13919 },
+ { 0xfd6d, G_UNICODE_NOT_PRESENT_OFFSET, 13919 },
+ { 0xfd6e, G_UNICODE_NOT_PRESENT_OFFSET, 13926 },
+ { 0xfd6f, G_UNICODE_NOT_PRESENT_OFFSET, 13933 },
+ { 0xfd70, G_UNICODE_NOT_PRESENT_OFFSET, 13933 },
+ { 0xfd71, G_UNICODE_NOT_PRESENT_OFFSET, 13940 },
+ { 0xfd72, G_UNICODE_NOT_PRESENT_OFFSET, 13940 },
+ { 0xfd73, G_UNICODE_NOT_PRESENT_OFFSET, 13947 },
+ { 0xfd74, G_UNICODE_NOT_PRESENT_OFFSET, 13954 },
+ { 0xfd75, G_UNICODE_NOT_PRESENT_OFFSET, 13961 },
+ { 0xfd76, G_UNICODE_NOT_PRESENT_OFFSET, 13968 },
+ { 0xfd77, G_UNICODE_NOT_PRESENT_OFFSET, 13968 },
+ { 0xfd78, G_UNICODE_NOT_PRESENT_OFFSET, 13975 },
+ { 0xfd79, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
+ { 0xfd7a, G_UNICODE_NOT_PRESENT_OFFSET, 13989 },
+ { 0xfd7b, G_UNICODE_NOT_PRESENT_OFFSET, 13996 },
+ { 0xfd7c, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+ { 0xfd7d, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+ { 0xfd7e, G_UNICODE_NOT_PRESENT_OFFSET, 14010 },
+ { 0xfd7f, G_UNICODE_NOT_PRESENT_OFFSET, 14017 },
+ { 0xfd80, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+ { 0xfd81, G_UNICODE_NOT_PRESENT_OFFSET, 14031 },
+ { 0xfd82, G_UNICODE_NOT_PRESENT_OFFSET, 14038 },
+ { 0xfd83, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
+ { 0xfd84, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
+ { 0xfd85, G_UNICODE_NOT_PRESENT_OFFSET, 14052 },
+ { 0xfd86, G_UNICODE_NOT_PRESENT_OFFSET, 14052 },
+ { 0xfd87, G_UNICODE_NOT_PRESENT_OFFSET, 14059 },
+ { 0xfd88, G_UNICODE_NOT_PRESENT_OFFSET, 14059 },
+ { 0xfd89, G_UNICODE_NOT_PRESENT_OFFSET, 14066 },
+ { 0xfd8a, G_UNICODE_NOT_PRESENT_OFFSET, 14073 },
+ { 0xfd8b, G_UNICODE_NOT_PRESENT_OFFSET, 14080 },
+ { 0xfd8c, G_UNICODE_NOT_PRESENT_OFFSET, 14087 },
+ { 0xfd8d, G_UNICODE_NOT_PRESENT_OFFSET, 14094 },
+ { 0xfd8e, G_UNICODE_NOT_PRESENT_OFFSET, 14101 },
+ { 0xfd8f, G_UNICODE_NOT_PRESENT_OFFSET, 14108 },
+ { 0xfd92, G_UNICODE_NOT_PRESENT_OFFSET, 14115 },
+ { 0xfd93, G_UNICODE_NOT_PRESENT_OFFSET, 14122 },
+ { 0xfd94, G_UNICODE_NOT_PRESENT_OFFSET, 14129 },
+ { 0xfd95, G_UNICODE_NOT_PRESENT_OFFSET, 14136 },
+ { 0xfd96, G_UNICODE_NOT_PRESENT_OFFSET, 14143 },
+ { 0xfd97, G_UNICODE_NOT_PRESENT_OFFSET, 14150 },
+ { 0xfd98, G_UNICODE_NOT_PRESENT_OFFSET, 14150 },
+ { 0xfd99, G_UNICODE_NOT_PRESENT_OFFSET, 14157 },
+ { 0xfd9a, G_UNICODE_NOT_PRESENT_OFFSET, 14164 },
+ { 0xfd9b, G_UNICODE_NOT_PRESENT_OFFSET, 14171 },
+ { 0xfd9c, G_UNICODE_NOT_PRESENT_OFFSET, 14178 },
+ { 0xfd9d, G_UNICODE_NOT_PRESENT_OFFSET, 14178 },
+ { 0xfd9e, G_UNICODE_NOT_PRESENT_OFFSET, 14185 },
+ { 0xfd9f, G_UNICODE_NOT_PRESENT_OFFSET, 14192 },
+ { 0xfda0, G_UNICODE_NOT_PRESENT_OFFSET, 14199 },
+ { 0xfda1, G_UNICODE_NOT_PRESENT_OFFSET, 14206 },
+ { 0xfda2, G_UNICODE_NOT_PRESENT_OFFSET, 14213 },
+ { 0xfda3, G_UNICODE_NOT_PRESENT_OFFSET, 14220 },
+ { 0xfda4, G_UNICODE_NOT_PRESENT_OFFSET, 14227 },
+ { 0xfda5, G_UNICODE_NOT_PRESENT_OFFSET, 14234 },
+ { 0xfda6, G_UNICODE_NOT_PRESENT_OFFSET, 14241 },
+ { 0xfda7, G_UNICODE_NOT_PRESENT_OFFSET, 14248 },
+ { 0xfda8, G_UNICODE_NOT_PRESENT_OFFSET, 14255 },
+ { 0xfda9, G_UNICODE_NOT_PRESENT_OFFSET, 14262 },
+ { 0xfdaa, G_UNICODE_NOT_PRESENT_OFFSET, 14269 },
+ { 0xfdab, G_UNICODE_NOT_PRESENT_OFFSET, 14276 },
+ { 0xfdac, G_UNICODE_NOT_PRESENT_OFFSET, 14283 },
+ { 0xfdad, G_UNICODE_NOT_PRESENT_OFFSET, 14290 },
+ { 0xfdae, G_UNICODE_NOT_PRESENT_OFFSET, 14297 },
+ { 0xfdaf, G_UNICODE_NOT_PRESENT_OFFSET, 14304 },
+ { 0xfdb0, G_UNICODE_NOT_PRESENT_OFFSET, 14311 },
+ { 0xfdb1, G_UNICODE_NOT_PRESENT_OFFSET, 14318 },
+ { 0xfdb2, G_UNICODE_NOT_PRESENT_OFFSET, 14325 },
+ { 0xfdb3, G_UNICODE_NOT_PRESENT_OFFSET, 14332 },
+ { 0xfdb4, G_UNICODE_NOT_PRESENT_OFFSET, 14010 },
+ { 0xfdb5, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+ { 0xfdb6, G_UNICODE_NOT_PRESENT_OFFSET, 14339 },
+ { 0xfdb7, G_UNICODE_NOT_PRESENT_OFFSET, 14346 },
+ { 0xfdb8, G_UNICODE_NOT_PRESENT_OFFSET, 14353 },
+ { 0xfdb9, G_UNICODE_NOT_PRESENT_OFFSET, 14360 },
+ { 0xfdba, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+ { 0xfdbb, G_UNICODE_NOT_PRESENT_OFFSET, 14374 },
+ { 0xfdbc, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+ { 0xfdbd, G_UNICODE_NOT_PRESENT_OFFSET, 14353 },
+ { 0xfdbe, G_UNICODE_NOT_PRESENT_OFFSET, 14381 },
+ { 0xfdbf, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+ { 0xfdc0, G_UNICODE_NOT_PRESENT_OFFSET, 14395 },
+ { 0xfdc1, G_UNICODE_NOT_PRESENT_OFFSET, 14402 },
+ { 0xfdc2, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+ { 0xfdc3, G_UNICODE_NOT_PRESENT_OFFSET, 14374 },
+ { 0xfdc4, G_UNICODE_NOT_PRESENT_OFFSET, 13961 },
+ { 0xfdc5, G_UNICODE_NOT_PRESENT_OFFSET, 13891 },
+ { 0xfdc6, G_UNICODE_NOT_PRESENT_OFFSET, 14416 },
+ { 0xfdc7, G_UNICODE_NOT_PRESENT_OFFSET, 14423 },
+ { 0xfdf0, G_UNICODE_NOT_PRESENT_OFFSET, 14430 },
+ { 0xfdf1, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+ { 0xfdf2, G_UNICODE_NOT_PRESENT_OFFSET, 14444 },
+ { 0xfdf3, G_UNICODE_NOT_PRESENT_OFFSET, 14453 },
+ { 0xfdf4, G_UNICODE_NOT_PRESENT_OFFSET, 14462 },
+ { 0xfdf5, G_UNICODE_NOT_PRESENT_OFFSET, 14471 },
+ { 0xfdf6, G_UNICODE_NOT_PRESENT_OFFSET, 14480 },
+ { 0xfdf7, G_UNICODE_NOT_PRESENT_OFFSET, 14489 },
+ { 0xfdf8, G_UNICODE_NOT_PRESENT_OFFSET, 14498 },
+ { 0xfdf9, G_UNICODE_NOT_PRESENT_OFFSET, 14507 },
+ { 0xfdfa, G_UNICODE_NOT_PRESENT_OFFSET, 14514 },
+ { 0xfdfb, G_UNICODE_NOT_PRESENT_OFFSET, 14548 },
+ { 0xfdfc, G_UNICODE_NOT_PRESENT_OFFSET, 14564 },
+ { 0xfe10, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
+ { 0xfe11, G_UNICODE_NOT_PRESENT_OFFSET, 14575 },
+ { 0xfe12, G_UNICODE_NOT_PRESENT_OFFSET, 14579 },
+ { 0xfe13, G_UNICODE_NOT_PRESENT_OFFSET, 14583 },
{ 0xfe14, G_UNICODE_NOT_PRESENT_OFFSET, 1248 },
- { 0xfe15, G_UNICODE_NOT_PRESENT_OFFSET, 14571 },
- { 0xfe16, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
- { 0xfe17, G_UNICODE_NOT_PRESENT_OFFSET, 14575 },
- { 0xfe18, G_UNICODE_NOT_PRESENT_OFFSET, 14579 },
+ { 0xfe15, G_UNICODE_NOT_PRESENT_OFFSET, 14585 },
+ { 0xfe16, G_UNICODE_NOT_PRESENT_OFFSET, 14587 },
+ { 0xfe17, G_UNICODE_NOT_PRESENT_OFFSET, 14589 },
+ { 0xfe18, G_UNICODE_NOT_PRESENT_OFFSET, 14593 },
{ 0xfe19, G_UNICODE_NOT_PRESENT_OFFSET, 5186 },
{ 0xfe30, G_UNICODE_NOT_PRESENT_OFFSET, 5183 },
- { 0xfe31, G_UNICODE_NOT_PRESENT_OFFSET, 14583 },
- { 0xfe32, G_UNICODE_NOT_PRESENT_OFFSET, 14587 },
- { 0xfe33, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
- { 0xfe34, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
+ { 0xfe31, G_UNICODE_NOT_PRESENT_OFFSET, 14597 },
+ { 0xfe32, G_UNICODE_NOT_PRESENT_OFFSET, 14601 },
+ { 0xfe33, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
+ { 0xfe34, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
{ 0xfe35, G_UNICODE_NOT_PRESENT_OFFSET, 5275 },
{ 0xfe36, G_UNICODE_NOT_PRESENT_OFFSET, 5277 },
- { 0xfe37, G_UNICODE_NOT_PRESENT_OFFSET, 14593 },
- { 0xfe38, G_UNICODE_NOT_PRESENT_OFFSET, 14595 },
- { 0xfe39, G_UNICODE_NOT_PRESENT_OFFSET, 14597 },
- { 0xfe3a, G_UNICODE_NOT_PRESENT_OFFSET, 14601 },
- { 0xfe3b, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
- { 0xfe3c, G_UNICODE_NOT_PRESENT_OFFSET, 14609 },
- { 0xfe3d, G_UNICODE_NOT_PRESENT_OFFSET, 14613 },
- { 0xfe3e, G_UNICODE_NOT_PRESENT_OFFSET, 14617 },
+ { 0xfe37, G_UNICODE_NOT_PRESENT_OFFSET, 14607 },
+ { 0xfe38, G_UNICODE_NOT_PRESENT_OFFSET, 14609 },
+ { 0xfe39, G_UNICODE_NOT_PRESENT_OFFSET, 14611 },
+ { 0xfe3a, G_UNICODE_NOT_PRESENT_OFFSET, 14615 },
+ { 0xfe3b, G_UNICODE_NOT_PRESENT_OFFSET, 14619 },
+ { 0xfe3c, G_UNICODE_NOT_PRESENT_OFFSET, 14623 },
+ { 0xfe3d, G_UNICODE_NOT_PRESENT_OFFSET, 14627 },
+ { 0xfe3e, G_UNICODE_NOT_PRESENT_OFFSET, 14631 },
{ 0xfe3f, G_UNICODE_NOT_PRESENT_OFFSET, 5826 },
{ 0xfe40, G_UNICODE_NOT_PRESENT_OFFSET, 5830 },
- { 0xfe41, G_UNICODE_NOT_PRESENT_OFFSET, 14621 },
- { 0xfe42, G_UNICODE_NOT_PRESENT_OFFSET, 14625 },
- { 0xfe43, G_UNICODE_NOT_PRESENT_OFFSET, 14629 },
- { 0xfe44, G_UNICODE_NOT_PRESENT_OFFSET, 14633 },
- { 0xfe47, G_UNICODE_NOT_PRESENT_OFFSET, 14637 },
- { 0xfe48, G_UNICODE_NOT_PRESENT_OFFSET, 14639 },
+ { 0xfe41, G_UNICODE_NOT_PRESENT_OFFSET, 14635 },
+ { 0xfe42, G_UNICODE_NOT_PRESENT_OFFSET, 14639 },
+ { 0xfe43, G_UNICODE_NOT_PRESENT_OFFSET, 14643 },
+ { 0xfe44, G_UNICODE_NOT_PRESENT_OFFSET, 14647 },
+ { 0xfe47, G_UNICODE_NOT_PRESENT_OFFSET, 14651 },
+ { 0xfe48, G_UNICODE_NOT_PRESENT_OFFSET, 14653 },
{ 0xfe49, G_UNICODE_NOT_PRESENT_OFFSET, 5227 },
{ 0xfe4a, G_UNICODE_NOT_PRESENT_OFFSET, 5227 },
{ 0xfe4b, G_UNICODE_NOT_PRESENT_OFFSET, 5227 },
{ 0xfe4c, G_UNICODE_NOT_PRESENT_OFFSET, 5227 },
- { 0xfe4d, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
- { 0xfe4e, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
- { 0xfe4f, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
- { 0xfe50, G_UNICODE_NOT_PRESENT_OFFSET, 14559 },
- { 0xfe51, G_UNICODE_NOT_PRESENT_OFFSET, 14561 },
+ { 0xfe4d, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
+ { 0xfe4e, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
+ { 0xfe4f, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
+ { 0xfe50, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
+ { 0xfe51, G_UNICODE_NOT_PRESENT_OFFSET, 14575 },
{ 0xfe52, G_UNICODE_NOT_PRESENT_OFFSET, 5181 },
{ 0xfe54, G_UNICODE_NOT_PRESENT_OFFSET, 1248 },
- { 0xfe55, G_UNICODE_NOT_PRESENT_OFFSET, 14569 },
- { 0xfe56, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
- { 0xfe57, G_UNICODE_NOT_PRESENT_OFFSET, 14571 },
- { 0xfe58, G_UNICODE_NOT_PRESENT_OFFSET, 14583 },
+ { 0xfe55, G_UNICODE_NOT_PRESENT_OFFSET, 14583 },
+ { 0xfe56, G_UNICODE_NOT_PRESENT_OFFSET, 14587 },
+ { 0xfe57, G_UNICODE_NOT_PRESENT_OFFSET, 14585 },
+ { 0xfe58, G_UNICODE_NOT_PRESENT_OFFSET, 14597 },
{ 0xfe59, G_UNICODE_NOT_PRESENT_OFFSET, 5275 },
{ 0xfe5a, G_UNICODE_NOT_PRESENT_OFFSET, 5277 },
- { 0xfe5b, G_UNICODE_NOT_PRESENT_OFFSET, 14593 },
- { 0xfe5c, G_UNICODE_NOT_PRESENT_OFFSET, 14595 },
- { 0xfe5d, G_UNICODE_NOT_PRESENT_OFFSET, 14597 },
- { 0xfe5e, G_UNICODE_NOT_PRESENT_OFFSET, 14601 },
- { 0xfe5f, G_UNICODE_NOT_PRESENT_OFFSET, 14641 },
- { 0xfe60, G_UNICODE_NOT_PRESENT_OFFSET, 14643 },
- { 0xfe61, G_UNICODE_NOT_PRESENT_OFFSET, 14645 },
+ { 0xfe5b, G_UNICODE_NOT_PRESENT_OFFSET, 14607 },
+ { 0xfe5c, G_UNICODE_NOT_PRESENT_OFFSET, 14609 },
+ { 0xfe5d, G_UNICODE_NOT_PRESENT_OFFSET, 14611 },
+ { 0xfe5e, G_UNICODE_NOT_PRESENT_OFFSET, 14615 },
+ { 0xfe5f, G_UNICODE_NOT_PRESENT_OFFSET, 14655 },
+ { 0xfe60, G_UNICODE_NOT_PRESENT_OFFSET, 14657 },
+ { 0xfe61, G_UNICODE_NOT_PRESENT_OFFSET, 14659 },
{ 0xfe62, G_UNICODE_NOT_PRESENT_OFFSET, 5267 },
- { 0xfe63, G_UNICODE_NOT_PRESENT_OFFSET, 14647 },
- { 0xfe64, G_UNICODE_NOT_PRESENT_OFFSET, 14649 },
- { 0xfe65, G_UNICODE_NOT_PRESENT_OFFSET, 14651 },
+ { 0xfe63, G_UNICODE_NOT_PRESENT_OFFSET, 14661 },
+ { 0xfe64, G_UNICODE_NOT_PRESENT_OFFSET, 14663 },
+ { 0xfe65, G_UNICODE_NOT_PRESENT_OFFSET, 14665 },
{ 0xfe66, G_UNICODE_NOT_PRESENT_OFFSET, 5273 },
- { 0xfe68, G_UNICODE_NOT_PRESENT_OFFSET, 14653 },
- { 0xfe69, G_UNICODE_NOT_PRESENT_OFFSET, 14655 },
- { 0xfe6a, G_UNICODE_NOT_PRESENT_OFFSET, 14657 },
- { 0xfe6b, G_UNICODE_NOT_PRESENT_OFFSET, 14659 },
- { 0xfe70, G_UNICODE_NOT_PRESENT_OFFSET, 14661 },
- { 0xfe71, G_UNICODE_NOT_PRESENT_OFFSET, 14665 },
- { 0xfe72, G_UNICODE_NOT_PRESENT_OFFSET, 14670 },
- { 0xfe74, G_UNICODE_NOT_PRESENT_OFFSET, 14674 },
- { 0xfe76, G_UNICODE_NOT_PRESENT_OFFSET, 14678 },
- { 0xfe77, G_UNICODE_NOT_PRESENT_OFFSET, 14682 },
- { 0xfe78, G_UNICODE_NOT_PRESENT_OFFSET, 14687 },
- { 0xfe79, G_UNICODE_NOT_PRESENT_OFFSET, 14691 },
- { 0xfe7a, G_UNICODE_NOT_PRESENT_OFFSET, 14696 },
- { 0xfe7b, G_UNICODE_NOT_PRESENT_OFFSET, 14700 },
- { 0xfe7c, G_UNICODE_NOT_PRESENT_OFFSET, 14705 },
- { 0xfe7d, G_UNICODE_NOT_PRESENT_OFFSET, 14709 },
- { 0xfe7e, G_UNICODE_NOT_PRESENT_OFFSET, 14714 },
- { 0xfe7f, G_UNICODE_NOT_PRESENT_OFFSET, 14718 },
- { 0xfe80, G_UNICODE_NOT_PRESENT_OFFSET, 14723 },
+ { 0xfe68, G_UNICODE_NOT_PRESENT_OFFSET, 14667 },
+ { 0xfe69, G_UNICODE_NOT_PRESENT_OFFSET, 14669 },
+ { 0xfe6a, G_UNICODE_NOT_PRESENT_OFFSET, 14671 },
+ { 0xfe6b, G_UNICODE_NOT_PRESENT_OFFSET, 14673 },
+ { 0xfe70, G_UNICODE_NOT_PRESENT_OFFSET, 14675 },
+ { 0xfe71, G_UNICODE_NOT_PRESENT_OFFSET, 14679 },
+ { 0xfe72, G_UNICODE_NOT_PRESENT_OFFSET, 14684 },
+ { 0xfe74, G_UNICODE_NOT_PRESENT_OFFSET, 14688 },
+ { 0xfe76, G_UNICODE_NOT_PRESENT_OFFSET, 14692 },
+ { 0xfe77, G_UNICODE_NOT_PRESENT_OFFSET, 14696 },
+ { 0xfe78, G_UNICODE_NOT_PRESENT_OFFSET, 14701 },
+ { 0xfe79, G_UNICODE_NOT_PRESENT_OFFSET, 14705 },
+ { 0xfe7a, G_UNICODE_NOT_PRESENT_OFFSET, 14710 },
+ { 0xfe7b, G_UNICODE_NOT_PRESENT_OFFSET, 14714 },
+ { 0xfe7c, G_UNICODE_NOT_PRESENT_OFFSET, 14719 },
+ { 0xfe7d, G_UNICODE_NOT_PRESENT_OFFSET, 14723 },
+ { 0xfe7e, G_UNICODE_NOT_PRESENT_OFFSET, 14728 },
+ { 0xfe7f, G_UNICODE_NOT_PRESENT_OFFSET, 14732 },
+ { 0xfe80, G_UNICODE_NOT_PRESENT_OFFSET, 14737 },
{ 0xfe81, G_UNICODE_NOT_PRESENT_OFFSET, 1676 },
{ 0xfe82, G_UNICODE_NOT_PRESENT_OFFSET, 1676 },
{ 0xfe83, G_UNICODE_NOT_PRESENT_OFFSET, 1681 },
@@ -5606,133 +5637,133 @@ static const decomposition decomp_table[] =
{ 0xfe8a, G_UNICODE_NOT_PRESENT_OFFSET, 1696 },
{ 0xfe8b, G_UNICODE_NOT_PRESENT_OFFSET, 1696 },
{ 0xfe8c, G_UNICODE_NOT_PRESENT_OFFSET, 1696 },
- { 0xfe8d, G_UNICODE_NOT_PRESENT_OFFSET, 14726 },
- { 0xfe8e, G_UNICODE_NOT_PRESENT_OFFSET, 14726 },
- { 0xfe8f, G_UNICODE_NOT_PRESENT_OFFSET, 14729 },
- { 0xfe90, G_UNICODE_NOT_PRESENT_OFFSET, 14729 },
- { 0xfe91, G_UNICODE_NOT_PRESENT_OFFSET, 14729 },
- { 0xfe92, G_UNICODE_NOT_PRESENT_OFFSET, 14729 },
- { 0xfe93, G_UNICODE_NOT_PRESENT_OFFSET, 14732 },
- { 0xfe94, G_UNICODE_NOT_PRESENT_OFFSET, 14732 },
- { 0xfe95, G_UNICODE_NOT_PRESENT_OFFSET, 14735 },
- { 0xfe96, G_UNICODE_NOT_PRESENT_OFFSET, 14735 },
- { 0xfe97, G_UNICODE_NOT_PRESENT_OFFSET, 14735 },
- { 0xfe98, G_UNICODE_NOT_PRESENT_OFFSET, 14735 },
- { 0xfe99, G_UNICODE_NOT_PRESENT_OFFSET, 14738 },
- { 0xfe9a, G_UNICODE_NOT_PRESENT_OFFSET, 14738 },
- { 0xfe9b, G_UNICODE_NOT_PRESENT_OFFSET, 14738 },
- { 0xfe9c, G_UNICODE_NOT_PRESENT_OFFSET, 14738 },
- { 0xfe9d, G_UNICODE_NOT_PRESENT_OFFSET, 14741 },
- { 0xfe9e, G_UNICODE_NOT_PRESENT_OFFSET, 14741 },
- { 0xfe9f, G_UNICODE_NOT_PRESENT_OFFSET, 14741 },
- { 0xfea0, G_UNICODE_NOT_PRESENT_OFFSET, 14741 },
- { 0xfea1, G_UNICODE_NOT_PRESENT_OFFSET, 14744 },
- { 0xfea2, G_UNICODE_NOT_PRESENT_OFFSET, 14744 },
- { 0xfea3, G_UNICODE_NOT_PRESENT_OFFSET, 14744 },
- { 0xfea4, G_UNICODE_NOT_PRESENT_OFFSET, 14744 },
- { 0xfea5, G_UNICODE_NOT_PRESENT_OFFSET, 14747 },
- { 0xfea6, G_UNICODE_NOT_PRESENT_OFFSET, 14747 },
- { 0xfea7, G_UNICODE_NOT_PRESENT_OFFSET, 14747 },
- { 0xfea8, G_UNICODE_NOT_PRESENT_OFFSET, 14747 },
- { 0xfea9, G_UNICODE_NOT_PRESENT_OFFSET, 14750 },
- { 0xfeaa, G_UNICODE_NOT_PRESENT_OFFSET, 14750 },
- { 0xfeab, G_UNICODE_NOT_PRESENT_OFFSET, 14753 },
- { 0xfeac, G_UNICODE_NOT_PRESENT_OFFSET, 14753 },
- { 0xfead, G_UNICODE_NOT_PRESENT_OFFSET, 14756 },
- { 0xfeae, G_UNICODE_NOT_PRESENT_OFFSET, 14756 },
- { 0xfeaf, G_UNICODE_NOT_PRESENT_OFFSET, 14759 },
- { 0xfeb0, G_UNICODE_NOT_PRESENT_OFFSET, 14759 },
- { 0xfeb1, G_UNICODE_NOT_PRESENT_OFFSET, 14762 },
- { 0xfeb2, G_UNICODE_NOT_PRESENT_OFFSET, 14762 },
- { 0xfeb3, G_UNICODE_NOT_PRESENT_OFFSET, 14762 },
- { 0xfeb4, G_UNICODE_NOT_PRESENT_OFFSET, 14762 },
- { 0xfeb5, G_UNICODE_NOT_PRESENT_OFFSET, 14765 },
- { 0xfeb6, G_UNICODE_NOT_PRESENT_OFFSET, 14765 },
- { 0xfeb7, G_UNICODE_NOT_PRESENT_OFFSET, 14765 },
- { 0xfeb8, G_UNICODE_NOT_PRESENT_OFFSET, 14765 },
- { 0xfeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14768 },
- { 0xfeba, G_UNICODE_NOT_PRESENT_OFFSET, 14768 },
- { 0xfebb, G_UNICODE_NOT_PRESENT_OFFSET, 14768 },
- { 0xfebc, G_UNICODE_NOT_PRESENT_OFFSET, 14768 },
- { 0xfebd, G_UNICODE_NOT_PRESENT_OFFSET, 14771 },
- { 0xfebe, G_UNICODE_NOT_PRESENT_OFFSET, 14771 },
- { 0xfebf, G_UNICODE_NOT_PRESENT_OFFSET, 14771 },
- { 0xfec0, G_UNICODE_NOT_PRESENT_OFFSET, 14771 },
- { 0xfec1, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
- { 0xfec2, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
- { 0xfec3, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
- { 0xfec4, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
- { 0xfec5, G_UNICODE_NOT_PRESENT_OFFSET, 14777 },
- { 0xfec6, G_UNICODE_NOT_PRESENT_OFFSET, 14777 },
- { 0xfec7, G_UNICODE_NOT_PRESENT_OFFSET, 14777 },
- { 0xfec8, G_UNICODE_NOT_PRESENT_OFFSET, 14777 },
- { 0xfec9, G_UNICODE_NOT_PRESENT_OFFSET, 14780 },
- { 0xfeca, G_UNICODE_NOT_PRESENT_OFFSET, 14780 },
- { 0xfecb, G_UNICODE_NOT_PRESENT_OFFSET, 14780 },
- { 0xfecc, G_UNICODE_NOT_PRESENT_OFFSET, 14780 },
- { 0xfecd, G_UNICODE_NOT_PRESENT_OFFSET, 14783 },
- { 0xfece, G_UNICODE_NOT_PRESENT_OFFSET, 14783 },
- { 0xfecf, G_UNICODE_NOT_PRESENT_OFFSET, 14783 },
- { 0xfed0, G_UNICODE_NOT_PRESENT_OFFSET, 14783 },
- { 0xfed1, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
- { 0xfed2, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
- { 0xfed3, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
- { 0xfed4, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
- { 0xfed5, G_UNICODE_NOT_PRESENT_OFFSET, 14789 },
- { 0xfed6, G_UNICODE_NOT_PRESENT_OFFSET, 14789 },
- { 0xfed7, G_UNICODE_NOT_PRESENT_OFFSET, 14789 },
- { 0xfed8, G_UNICODE_NOT_PRESENT_OFFSET, 14789 },
- { 0xfed9, G_UNICODE_NOT_PRESENT_OFFSET, 14792 },
- { 0xfeda, G_UNICODE_NOT_PRESENT_OFFSET, 14792 },
- { 0xfedb, G_UNICODE_NOT_PRESENT_OFFSET, 14792 },
- { 0xfedc, G_UNICODE_NOT_PRESENT_OFFSET, 14792 },
- { 0xfedd, G_UNICODE_NOT_PRESENT_OFFSET, 14795 },
- { 0xfede, G_UNICODE_NOT_PRESENT_OFFSET, 14795 },
- { 0xfedf, G_UNICODE_NOT_PRESENT_OFFSET, 14795 },
- { 0xfee0, G_UNICODE_NOT_PRESENT_OFFSET, 14795 },
- { 0xfee1, G_UNICODE_NOT_PRESENT_OFFSET, 14798 },
- { 0xfee2, G_UNICODE_NOT_PRESENT_OFFSET, 14798 },
- { 0xfee3, G_UNICODE_NOT_PRESENT_OFFSET, 14798 },
- { 0xfee4, G_UNICODE_NOT_PRESENT_OFFSET, 14798 },
- { 0xfee5, G_UNICODE_NOT_PRESENT_OFFSET, 14801 },
- { 0xfee6, G_UNICODE_NOT_PRESENT_OFFSET, 14801 },
- { 0xfee7, G_UNICODE_NOT_PRESENT_OFFSET, 14801 },
- { 0xfee8, G_UNICODE_NOT_PRESENT_OFFSET, 14801 },
- { 0xfee9, G_UNICODE_NOT_PRESENT_OFFSET, 14804 },
- { 0xfeea, G_UNICODE_NOT_PRESENT_OFFSET, 14804 },
- { 0xfeeb, G_UNICODE_NOT_PRESENT_OFFSET, 14804 },
- { 0xfeec, G_UNICODE_NOT_PRESENT_OFFSET, 14804 },
- { 0xfeed, G_UNICODE_NOT_PRESENT_OFFSET, 14807 },
- { 0xfeee, G_UNICODE_NOT_PRESENT_OFFSET, 14807 },
- { 0xfeef, G_UNICODE_NOT_PRESENT_OFFSET, 12856 },
- { 0xfef0, G_UNICODE_NOT_PRESENT_OFFSET, 12856 },
- { 0xfef1, G_UNICODE_NOT_PRESENT_OFFSET, 14810 },
- { 0xfef2, G_UNICODE_NOT_PRESENT_OFFSET, 14810 },
- { 0xfef3, G_UNICODE_NOT_PRESENT_OFFSET, 14810 },
- { 0xfef4, G_UNICODE_NOT_PRESENT_OFFSET, 14810 },
- { 0xfef5, G_UNICODE_NOT_PRESENT_OFFSET, 14813 },
- { 0xfef6, G_UNICODE_NOT_PRESENT_OFFSET, 14813 },
- { 0xfef7, G_UNICODE_NOT_PRESENT_OFFSET, 14820 },
- { 0xfef8, G_UNICODE_NOT_PRESENT_OFFSET, 14820 },
- { 0xfef9, G_UNICODE_NOT_PRESENT_OFFSET, 14827 },
- { 0xfefa, G_UNICODE_NOT_PRESENT_OFFSET, 14827 },
- { 0xfefb, G_UNICODE_NOT_PRESENT_OFFSET, 14834 },
- { 0xfefc, G_UNICODE_NOT_PRESENT_OFFSET, 14834 },
- { 0xff01, G_UNICODE_NOT_PRESENT_OFFSET, 14571 },
- { 0xff02, G_UNICODE_NOT_PRESENT_OFFSET, 14839 },
- { 0xff03, G_UNICODE_NOT_PRESENT_OFFSET, 14641 },
- { 0xff04, G_UNICODE_NOT_PRESENT_OFFSET, 14655 },
- { 0xff05, G_UNICODE_NOT_PRESENT_OFFSET, 14657 },
- { 0xff06, G_UNICODE_NOT_PRESENT_OFFSET, 14643 },
- { 0xff07, G_UNICODE_NOT_PRESENT_OFFSET, 14841 },
+ { 0xfe8d, G_UNICODE_NOT_PRESENT_OFFSET, 14740 },
+ { 0xfe8e, G_UNICODE_NOT_PRESENT_OFFSET, 14740 },
+ { 0xfe8f, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0xfe90, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0xfe91, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0xfe92, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0xfe93, G_UNICODE_NOT_PRESENT_OFFSET, 14746 },
+ { 0xfe94, G_UNICODE_NOT_PRESENT_OFFSET, 14746 },
+ { 0xfe95, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0xfe96, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0xfe97, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0xfe98, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0xfe99, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0xfe9a, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0xfe9b, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0xfe9c, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0xfe9d, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0xfe9e, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0xfe9f, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0xfea0, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0xfea1, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0xfea2, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0xfea3, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0xfea4, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0xfea5, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0xfea6, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0xfea7, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0xfea8, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0xfea9, G_UNICODE_NOT_PRESENT_OFFSET, 14764 },
+ { 0xfeaa, G_UNICODE_NOT_PRESENT_OFFSET, 14764 },
+ { 0xfeab, G_UNICODE_NOT_PRESENT_OFFSET, 14767 },
+ { 0xfeac, G_UNICODE_NOT_PRESENT_OFFSET, 14767 },
+ { 0xfead, G_UNICODE_NOT_PRESENT_OFFSET, 14770 },
+ { 0xfeae, G_UNICODE_NOT_PRESENT_OFFSET, 14770 },
+ { 0xfeaf, G_UNICODE_NOT_PRESENT_OFFSET, 14773 },
+ { 0xfeb0, G_UNICODE_NOT_PRESENT_OFFSET, 14773 },
+ { 0xfeb1, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0xfeb2, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0xfeb3, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0xfeb4, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0xfeb5, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0xfeb6, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0xfeb7, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0xfeb8, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0xfeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0xfeba, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0xfebb, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0xfebc, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0xfebd, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0xfebe, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0xfebf, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0xfec0, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0xfec1, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0xfec2, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0xfec3, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0xfec4, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0xfec5, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0xfec6, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0xfec7, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0xfec8, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0xfec9, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0xfeca, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0xfecb, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0xfecc, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0xfecd, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0xfece, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0xfecf, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0xfed0, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0xfed1, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0xfed2, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0xfed3, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0xfed4, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0xfed5, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0xfed6, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0xfed7, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0xfed8, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0xfed9, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0xfeda, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0xfedb, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0xfedc, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0xfedd, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0xfede, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0xfedf, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0xfee0, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0xfee1, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0xfee2, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0xfee3, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0xfee4, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0xfee5, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0xfee6, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0xfee7, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0xfee8, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0xfee9, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0xfeea, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0xfeeb, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0xfeec, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0xfeed, G_UNICODE_NOT_PRESENT_OFFSET, 14821 },
+ { 0xfeee, G_UNICODE_NOT_PRESENT_OFFSET, 14821 },
+ { 0xfeef, G_UNICODE_NOT_PRESENT_OFFSET, 12870 },
+ { 0xfef0, G_UNICODE_NOT_PRESENT_OFFSET, 12870 },
+ { 0xfef1, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0xfef2, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0xfef3, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0xfef4, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0xfef5, G_UNICODE_NOT_PRESENT_OFFSET, 14827 },
+ { 0xfef6, G_UNICODE_NOT_PRESENT_OFFSET, 14827 },
+ { 0xfef7, G_UNICODE_NOT_PRESENT_OFFSET, 14834 },
+ { 0xfef8, G_UNICODE_NOT_PRESENT_OFFSET, 14834 },
+ { 0xfef9, G_UNICODE_NOT_PRESENT_OFFSET, 14841 },
+ { 0xfefa, G_UNICODE_NOT_PRESENT_OFFSET, 14841 },
+ { 0xfefb, G_UNICODE_NOT_PRESENT_OFFSET, 14848 },
+ { 0xfefc, G_UNICODE_NOT_PRESENT_OFFSET, 14848 },
+ { 0xff01, G_UNICODE_NOT_PRESENT_OFFSET, 14585 },
+ { 0xff02, G_UNICODE_NOT_PRESENT_OFFSET, 14853 },
+ { 0xff03, G_UNICODE_NOT_PRESENT_OFFSET, 14655 },
+ { 0xff04, G_UNICODE_NOT_PRESENT_OFFSET, 14669 },
+ { 0xff05, G_UNICODE_NOT_PRESENT_OFFSET, 14671 },
+ { 0xff06, G_UNICODE_NOT_PRESENT_OFFSET, 14657 },
+ { 0xff07, G_UNICODE_NOT_PRESENT_OFFSET, 14855 },
{ 0xff08, G_UNICODE_NOT_PRESENT_OFFSET, 5275 },
{ 0xff09, G_UNICODE_NOT_PRESENT_OFFSET, 5277 },
- { 0xff0a, G_UNICODE_NOT_PRESENT_OFFSET, 14645 },
+ { 0xff0a, G_UNICODE_NOT_PRESENT_OFFSET, 14659 },
{ 0xff0b, G_UNICODE_NOT_PRESENT_OFFSET, 5267 },
- { 0xff0c, G_UNICODE_NOT_PRESENT_OFFSET, 14559 },
- { 0xff0d, G_UNICODE_NOT_PRESENT_OFFSET, 14647 },
+ { 0xff0c, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
+ { 0xff0d, G_UNICODE_NOT_PRESENT_OFFSET, 14661 },
{ 0xff0e, G_UNICODE_NOT_PRESENT_OFFSET, 5181 },
- { 0xff0f, G_UNICODE_NOT_PRESENT_OFFSET, 14843 },
+ { 0xff0f, G_UNICODE_NOT_PRESENT_OFFSET, 14857 },
{ 0xff10, G_UNICODE_NOT_PRESENT_OFFSET, 5253 },
{ 0xff11, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
{ 0xff12, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
@@ -5743,13 +5774,13 @@ static const decomposition decomp_table[] =
{ 0xff17, G_UNICODE_NOT_PRESENT_OFFSET, 5261 },
{ 0xff18, G_UNICODE_NOT_PRESENT_OFFSET, 5263 },
{ 0xff19, G_UNICODE_NOT_PRESENT_OFFSET, 5265 },
- { 0xff1a, G_UNICODE_NOT_PRESENT_OFFSET, 14569 },
+ { 0xff1a, G_UNICODE_NOT_PRESENT_OFFSET, 14583 },
{ 0xff1b, G_UNICODE_NOT_PRESENT_OFFSET, 1248 },
- { 0xff1c, G_UNICODE_NOT_PRESENT_OFFSET, 14649 },
+ { 0xff1c, G_UNICODE_NOT_PRESENT_OFFSET, 14663 },
{ 0xff1d, G_UNICODE_NOT_PRESENT_OFFSET, 5273 },
- { 0xff1e, G_UNICODE_NOT_PRESENT_OFFSET, 14651 },
- { 0xff1f, G_UNICODE_NOT_PRESENT_OFFSET, 14573 },
- { 0xff20, G_UNICODE_NOT_PRESENT_OFFSET, 14659 },
+ { 0xff1e, G_UNICODE_NOT_PRESENT_OFFSET, 14665 },
+ { 0xff1f, G_UNICODE_NOT_PRESENT_OFFSET, 14587 },
+ { 0xff20, G_UNICODE_NOT_PRESENT_OFFSET, 14673 },
{ 0xff21, G_UNICODE_NOT_PRESENT_OFFSET, 2309 },
{ 0xff22, G_UNICODE_NOT_PRESENT_OFFSET, 2314 },
{ 0xff23, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
@@ -5776,11 +5807,11 @@ static const decomposition decomp_table[] =
{ 0xff38, G_UNICODE_NOT_PRESENT_OFFSET, 5487 },
{ 0xff39, G_UNICODE_NOT_PRESENT_OFFSET, 6135 },
{ 0xff3a, G_UNICODE_NOT_PRESENT_OFFSET, 5331 },
- { 0xff3b, G_UNICODE_NOT_PRESENT_OFFSET, 14637 },
- { 0xff3c, G_UNICODE_NOT_PRESENT_OFFSET, 14653 },
- { 0xff3d, G_UNICODE_NOT_PRESENT_OFFSET, 14639 },
- { 0xff3e, G_UNICODE_NOT_PRESENT_OFFSET, 14845 },
- { 0xff3f, G_UNICODE_NOT_PRESENT_OFFSET, 14591 },
+ { 0xff3b, G_UNICODE_NOT_PRESENT_OFFSET, 14651 },
+ { 0xff3c, G_UNICODE_NOT_PRESENT_OFFSET, 14667 },
+ { 0xff3d, G_UNICODE_NOT_PRESENT_OFFSET, 14653 },
+ { 0xff3e, G_UNICODE_NOT_PRESENT_OFFSET, 14859 },
+ { 0xff3f, G_UNICODE_NOT_PRESENT_OFFSET, 14605 },
{ 0xff40, G_UNICODE_NOT_PRESENT_OFFSET, 5110 },
{ 0xff41, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
{ 0xff42, G_UNICODE_NOT_PRESENT_OFFSET, 2364 },
@@ -5808,28 +5839,28 @@ static const decomposition decomp_table[] =
{ 0xff58, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
{ 0xff59, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
{ 0xff5a, G_UNICODE_NOT_PRESENT_OFFSET, 2526 },
- { 0xff5b, G_UNICODE_NOT_PRESENT_OFFSET, 14593 },
- { 0xff5c, G_UNICODE_NOT_PRESENT_OFFSET, 14847 },
- { 0xff5d, G_UNICODE_NOT_PRESENT_OFFSET, 14595 },
- { 0xff5e, G_UNICODE_NOT_PRESENT_OFFSET, 14849 },
- { 0xff5f, G_UNICODE_NOT_PRESENT_OFFSET, 14851 },
- { 0xff60, G_UNICODE_NOT_PRESENT_OFFSET, 14855 },
- { 0xff61, G_UNICODE_NOT_PRESENT_OFFSET, 14565 },
- { 0xff62, G_UNICODE_NOT_PRESENT_OFFSET, 14621 },
- { 0xff63, G_UNICODE_NOT_PRESENT_OFFSET, 14625 },
- { 0xff64, G_UNICODE_NOT_PRESENT_OFFSET, 14561 },
- { 0xff65, G_UNICODE_NOT_PRESENT_OFFSET, 14859 },
+ { 0xff5b, G_UNICODE_NOT_PRESENT_OFFSET, 14607 },
+ { 0xff5c, G_UNICODE_NOT_PRESENT_OFFSET, 14861 },
+ { 0xff5d, G_UNICODE_NOT_PRESENT_OFFSET, 14609 },
+ { 0xff5e, G_UNICODE_NOT_PRESENT_OFFSET, 14863 },
+ { 0xff5f, G_UNICODE_NOT_PRESENT_OFFSET, 14865 },
+ { 0xff60, G_UNICODE_NOT_PRESENT_OFFSET, 14869 },
+ { 0xff61, G_UNICODE_NOT_PRESENT_OFFSET, 14579 },
+ { 0xff62, G_UNICODE_NOT_PRESENT_OFFSET, 14635 },
+ { 0xff63, G_UNICODE_NOT_PRESENT_OFFSET, 14639 },
+ { 0xff64, G_UNICODE_NOT_PRESENT_OFFSET, 14575 },
+ { 0xff65, G_UNICODE_NOT_PRESENT_OFFSET, 14873 },
{ 0xff66, G_UNICODE_NOT_PRESENT_OFFSET, 8992 },
- { 0xff67, G_UNICODE_NOT_PRESENT_OFFSET, 14863 },
- { 0xff68, G_UNICODE_NOT_PRESENT_OFFSET, 14867 },
- { 0xff69, G_UNICODE_NOT_PRESENT_OFFSET, 14871 },
- { 0xff6a, G_UNICODE_NOT_PRESENT_OFFSET, 14875 },
- { 0xff6b, G_UNICODE_NOT_PRESENT_OFFSET, 14879 },
- { 0xff6c, G_UNICODE_NOT_PRESENT_OFFSET, 14883 },
- { 0xff6d, G_UNICODE_NOT_PRESENT_OFFSET, 14887 },
- { 0xff6e, G_UNICODE_NOT_PRESENT_OFFSET, 14891 },
- { 0xff6f, G_UNICODE_NOT_PRESENT_OFFSET, 14895 },
- { 0xff70, G_UNICODE_NOT_PRESENT_OFFSET, 14899 },
+ { 0xff67, G_UNICODE_NOT_PRESENT_OFFSET, 14877 },
+ { 0xff68, G_UNICODE_NOT_PRESENT_OFFSET, 14881 },
+ { 0xff69, G_UNICODE_NOT_PRESENT_OFFSET, 14885 },
+ { 0xff6a, G_UNICODE_NOT_PRESENT_OFFSET, 14889 },
+ { 0xff6b, G_UNICODE_NOT_PRESENT_OFFSET, 14893 },
+ { 0xff6c, G_UNICODE_NOT_PRESENT_OFFSET, 14897 },
+ { 0xff6d, G_UNICODE_NOT_PRESENT_OFFSET, 14901 },
+ { 0xff6e, G_UNICODE_NOT_PRESENT_OFFSET, 14905 },
+ { 0xff6f, G_UNICODE_NOT_PRESENT_OFFSET, 14909 },
+ { 0xff70, G_UNICODE_NOT_PRESENT_OFFSET, 14913 },
{ 0xff71, G_UNICODE_NOT_PRESENT_OFFSET, 8808 },
{ 0xff72, G_UNICODE_NOT_PRESENT_OFFSET, 8812 },
{ 0xff73, G_UNICODE_NOT_PRESENT_OFFSET, 8816 },
@@ -5874,9 +5905,9 @@ static const decomposition decomp_table[] =
{ 0xff9a, G_UNICODE_NOT_PRESENT_OFFSET, 8972 },
{ 0xff9b, G_UNICODE_NOT_PRESENT_OFFSET, 8976 },
{ 0xff9c, G_UNICODE_NOT_PRESENT_OFFSET, 8980 },
- { 0xff9d, G_UNICODE_NOT_PRESENT_OFFSET, 14903 },
- { 0xff9e, G_UNICODE_NOT_PRESENT_OFFSET, 14907 },
- { 0xff9f, G_UNICODE_NOT_PRESENT_OFFSET, 14911 },
+ { 0xff9d, G_UNICODE_NOT_PRESENT_OFFSET, 14917 },
+ { 0xff9e, G_UNICODE_NOT_PRESENT_OFFSET, 14921 },
+ { 0xff9f, G_UNICODE_NOT_PRESENT_OFFSET, 14925 },
{ 0xffa0, G_UNICODE_NOT_PRESENT_OFFSET, 7683 },
{ 0xffa1, G_UNICODE_NOT_PRESENT_OFFSET, 7479 },
{ 0xffa2, G_UNICODE_NOT_PRESENT_OFFSET, 7483 },
@@ -5929,36 +5960,38 @@ static const decomposition decomp_table[] =
{ 0xffda, G_UNICODE_NOT_PRESENT_OFFSET, 7671 },
{ 0xffdb, G_UNICODE_NOT_PRESENT_OFFSET, 7675 },
{ 0xffdc, G_UNICODE_NOT_PRESENT_OFFSET, 7679 },
- { 0xffe0, G_UNICODE_NOT_PRESENT_OFFSET, 14915 },
- { 0xffe1, G_UNICODE_NOT_PRESENT_OFFSET, 14918 },
- { 0xffe2, G_UNICODE_NOT_PRESENT_OFFSET, 14921 },
+ { 0xffe0, G_UNICODE_NOT_PRESENT_OFFSET, 14929 },
+ { 0xffe1, G_UNICODE_NOT_PRESENT_OFFSET, 14932 },
+ { 0xffe2, G_UNICODE_NOT_PRESENT_OFFSET, 14935 },
{ 0xffe3, G_UNICODE_NOT_PRESENT_OFFSET, 8 },
- { 0xffe4, G_UNICODE_NOT_PRESENT_OFFSET, 14924 },
- { 0xffe5, G_UNICODE_NOT_PRESENT_OFFSET, 14927 },
- { 0xffe6, G_UNICODE_NOT_PRESENT_OFFSET, 14930 },
- { 0xffe8, G_UNICODE_NOT_PRESENT_OFFSET, 14934 },
- { 0xffe9, G_UNICODE_NOT_PRESENT_OFFSET, 14938 },
- { 0xffea, G_UNICODE_NOT_PRESENT_OFFSET, 14942 },
- { 0xffeb, G_UNICODE_NOT_PRESENT_OFFSET, 14946 },
- { 0xffec, G_UNICODE_NOT_PRESENT_OFFSET, 14950 },
- { 0xffed, G_UNICODE_NOT_PRESENT_OFFSET, 14954 },
- { 0xffee, G_UNICODE_NOT_PRESENT_OFFSET, 14958 },
- { 0x1109a, 14962, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1109c, 14971, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x110ab, 14980, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d15e, 14989, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d15f, 14998, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d160, 15007, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d161, 15020, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d162, 15033, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d163, 15046, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d164, 15059, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1bb, 15072, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1bc, 15081, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1bd, 15090, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1be, 15103, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1bf, 15116, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x1d1c0, 15129, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0xffe4, G_UNICODE_NOT_PRESENT_OFFSET, 14938 },
+ { 0xffe5, G_UNICODE_NOT_PRESENT_OFFSET, 14941 },
+ { 0xffe6, G_UNICODE_NOT_PRESENT_OFFSET, 14944 },
+ { 0xffe8, G_UNICODE_NOT_PRESENT_OFFSET, 14948 },
+ { 0xffe9, G_UNICODE_NOT_PRESENT_OFFSET, 14952 },
+ { 0xffea, G_UNICODE_NOT_PRESENT_OFFSET, 14956 },
+ { 0xffeb, G_UNICODE_NOT_PRESENT_OFFSET, 14960 },
+ { 0xffec, G_UNICODE_NOT_PRESENT_OFFSET, 14964 },
+ { 0xffed, G_UNICODE_NOT_PRESENT_OFFSET, 14968 },
+ { 0xffee, G_UNICODE_NOT_PRESENT_OFFSET, 14972 },
+ { 0x1109a, 14976, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1109c, 14985, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x110ab, 14994, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1112e, 15003, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1112f, 15012, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d15e, 15021, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d15f, 15030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d160, 15039, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d161, 15052, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d162, 15065, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d163, 15078, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d164, 15091, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1bb, 15104, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1bc, 15113, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1bd, 15122, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1be, 15135, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1bf, 15148, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1d1c0, 15161, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x1d400, G_UNICODE_NOT_PRESENT_OFFSET, 2309 },
{ 0x1d401, G_UNICODE_NOT_PRESENT_OFFSET, 2314 },
{ 0x1d402, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
@@ -6611,300 +6644,300 @@ static const decomposition decomp_table[] =
{ 0x1d6a1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
{ 0x1d6a2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
{ 0x1d6a3, G_UNICODE_NOT_PRESENT_OFFSET, 2526 },
- { 0x1d6a4, G_UNICODE_NOT_PRESENT_OFFSET, 15142 },
- { 0x1d6a5, G_UNICODE_NOT_PRESENT_OFFSET, 15145 },
- { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
- { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+ { 0x1d6a4, G_UNICODE_NOT_PRESENT_OFFSET, 15174 },
+ { 0x1d6a5, G_UNICODE_NOT_PRESENT_OFFSET, 15177 },
+ { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 15180 },
+ { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 15183 },
{ 0x1d6aa, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
- { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 15154 },
- { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 15157 },
- { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 15160 },
- { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 15163 },
+ { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 15186 },
+ { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 15189 },
+ { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 15192 },
+ { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 15195 },
{ 0x1d6af, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
- { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 15166 },
- { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 15169 },
- { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 15172 },
- { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 15175 },
- { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 15178 },
- { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
- { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 15184 },
+ { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 15198 },
+ { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 15201 },
+ { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 15204 },
+ { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 15207 },
+ { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 15210 },
+ { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 15213 },
+ { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 15216 },
{ 0x1d6b7, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
- { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 15187 },
+ { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 15219 },
{ 0x1d6b9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
{ 0x1d6ba, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
- { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 15190 },
+ { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 15222 },
{ 0x1d6bc, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
- { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 15193 },
- { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 15196 },
- { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 15199 },
+ { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 15225 },
+ { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 15228 },
+ { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 15231 },
{ 0x1d6c0, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
- { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 15202 },
- { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 15206 },
+ { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 15234 },
+ { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 15238 },
{ 0x1d6c3, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
{ 0x1d6c4, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
{ 0x1d6c5, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
{ 0x1d6c6, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
- { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 15209 },
- { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 15212 },
+ { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 15241 },
+ { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 15244 },
{ 0x1d6c9, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d6ca, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
{ 0x1d6cb, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
- { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 15215 },
+ { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 15247 },
{ 0x1d6cd, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
- { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 15218 },
- { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 15221 },
- { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 15224 },
+ { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 15250 },
+ { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 15253 },
+ { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 15256 },
{ 0x1d6d1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
{ 0x1d6d2, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d6d3, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
- { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 15227 },
- { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 15230 },
- { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 15233 },
+ { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 15259 },
+ { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 15262 },
+ { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 15265 },
{ 0x1d6d7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d6d8, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
- { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 15236 },
- { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 15239 },
- { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 15242 },
+ { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 15268 },
+ { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 15271 },
+ { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 15274 },
{ 0x1d6dc, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
{ 0x1d6dd, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d6de, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
{ 0x1d6df, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d6e0, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d6e1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
- { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
- { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+ { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 15180 },
+ { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 15183 },
{ 0x1d6e4, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
- { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 15154 },
- { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 15157 },
- { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 15160 },
- { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 15163 },
+ { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 15186 },
+ { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 15189 },
+ { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 15192 },
+ { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 15195 },
{ 0x1d6e9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
- { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 15166 },
- { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 15169 },
- { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 15172 },
- { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 15175 },
- { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 15178 },
- { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
- { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 15184 },
+ { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 15198 },
+ { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 15201 },
+ { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 15204 },
+ { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 15207 },
+ { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 15210 },
+ { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 15213 },
+ { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 15216 },
{ 0x1d6f1, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
- { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 15187 },
+ { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 15219 },
{ 0x1d6f3, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
{ 0x1d6f4, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
- { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 15190 },
+ { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 15222 },
{ 0x1d6f6, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
- { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 15193 },
- { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 15196 },
- { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 15199 },
+ { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 15225 },
+ { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 15228 },
+ { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 15231 },
{ 0x1d6fa, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
- { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 15202 },
- { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 15206 },
+ { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 15234 },
+ { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 15238 },
{ 0x1d6fd, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
{ 0x1d6fe, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
{ 0x1d6ff, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
{ 0x1d700, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
- { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 15209 },
- { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 15212 },
+ { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 15241 },
+ { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 15244 },
{ 0x1d703, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d704, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
{ 0x1d705, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
- { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 15215 },
+ { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 15247 },
{ 0x1d707, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
- { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 15218 },
- { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 15221 },
- { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 15224 },
+ { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 15250 },
+ { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 15253 },
+ { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 15256 },
{ 0x1d70b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
{ 0x1d70c, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d70d, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
- { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 15227 },
- { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 15230 },
- { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 15233 },
+ { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 15259 },
+ { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 15262 },
+ { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 15265 },
{ 0x1d711, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d712, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
- { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 15236 },
- { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 15239 },
- { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 15242 },
+ { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 15268 },
+ { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 15271 },
+ { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 15274 },
{ 0x1d716, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
{ 0x1d717, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d718, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
{ 0x1d719, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d71a, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d71b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
- { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
- { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+ { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 15180 },
+ { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 15183 },
{ 0x1d71e, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
- { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 15154 },
- { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 15157 },
- { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 15160 },
- { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 15163 },
+ { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 15186 },
+ { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 15189 },
+ { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 15192 },
+ { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 15195 },
{ 0x1d723, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
- { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 15166 },
- { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 15169 },
- { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 15172 },
- { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 15175 },
- { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 15178 },
- { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
- { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 15184 },
+ { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 15198 },
+ { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 15201 },
+ { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 15204 },
+ { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 15207 },
+ { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 15210 },
+ { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 15213 },
+ { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 15216 },
{ 0x1d72b, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
- { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 15187 },
+ { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 15219 },
{ 0x1d72d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
{ 0x1d72e, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
- { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 15190 },
+ { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 15222 },
{ 0x1d730, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
- { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 15193 },
- { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 15196 },
- { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 15199 },
+ { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 15225 },
+ { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 15228 },
+ { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 15231 },
{ 0x1d734, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
- { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 15202 },
- { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 15206 },
+ { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 15234 },
+ { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 15238 },
{ 0x1d737, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
{ 0x1d738, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
{ 0x1d739, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
{ 0x1d73a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
- { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 15209 },
- { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 15212 },
+ { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 15241 },
+ { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 15244 },
{ 0x1d73d, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d73e, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
{ 0x1d73f, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
- { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 15215 },
+ { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 15247 },
{ 0x1d741, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
- { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 15218 },
- { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 15221 },
- { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 15224 },
+ { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 15250 },
+ { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 15253 },
+ { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 15256 },
{ 0x1d745, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
{ 0x1d746, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d747, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
- { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 15227 },
- { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 15230 },
- { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 15233 },
+ { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 15259 },
+ { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 15262 },
+ { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 15265 },
{ 0x1d74b, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d74c, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
- { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 15236 },
- { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 15239 },
- { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 15242 },
+ { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 15268 },
+ { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 15271 },
+ { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 15274 },
{ 0x1d750, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
{ 0x1d751, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d752, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
{ 0x1d753, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d754, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d755, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
- { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
- { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+ { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 15180 },
+ { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 15183 },
{ 0x1d758, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
- { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 15154 },
- { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 15157 },
- { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 15160 },
- { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 15163 },
+ { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 15186 },
+ { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 15189 },
+ { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 15192 },
+ { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 15195 },
{ 0x1d75d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
- { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 15166 },
- { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 15169 },
- { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 15172 },
- { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 15175 },
- { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 15178 },
- { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
- { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 15184 },
+ { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 15198 },
+ { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 15201 },
+ { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 15204 },
+ { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 15207 },
+ { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 15210 },
+ { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 15213 },
+ { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 15216 },
{ 0x1d765, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
- { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 15187 },
+ { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 15219 },
{ 0x1d767, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
{ 0x1d768, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
- { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 15190 },
+ { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 15222 },
{ 0x1d76a, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
- { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 15193 },
- { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 15196 },
- { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 15199 },
+ { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 15225 },
+ { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 15228 },
+ { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 15231 },
{ 0x1d76e, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
- { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 15202 },
- { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 15206 },
+ { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 15234 },
+ { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 15238 },
{ 0x1d771, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
{ 0x1d772, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
{ 0x1d773, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
{ 0x1d774, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
- { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 15209 },
- { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 15212 },
+ { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 15241 },
+ { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 15244 },
{ 0x1d777, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d778, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
{ 0x1d779, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
- { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 15215 },
+ { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 15247 },
{ 0x1d77b, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
- { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 15218 },
- { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 15221 },
- { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 15224 },
+ { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 15250 },
+ { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 15253 },
+ { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 15256 },
{ 0x1d77f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
{ 0x1d780, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d781, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
- { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 15227 },
- { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 15230 },
- { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 15233 },
+ { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 15259 },
+ { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 15262 },
+ { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 15265 },
{ 0x1d785, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d786, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
- { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 15236 },
- { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 15239 },
- { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 15242 },
+ { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 15268 },
+ { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 15271 },
+ { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 15274 },
{ 0x1d78a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
{ 0x1d78b, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d78c, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
{ 0x1d78d, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d78e, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d78f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
- { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
- { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+ { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 15180 },
+ { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 15183 },
{ 0x1d792, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
- { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 15154 },
- { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 15157 },
- { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 15160 },
- { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 15163 },
+ { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 15186 },
+ { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 15189 },
+ { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 15192 },
+ { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 15195 },
{ 0x1d797, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
- { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 15166 },
- { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 15169 },
- { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 15172 },
- { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 15175 },
- { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 15178 },
- { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
- { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 15184 },
+ { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 15198 },
+ { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 15201 },
+ { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 15204 },
+ { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 15207 },
+ { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 15210 },
+ { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 15213 },
+ { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 15216 },
{ 0x1d79f, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
- { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 15187 },
+ { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 15219 },
{ 0x1d7a1, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
{ 0x1d7a2, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
- { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 15190 },
+ { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 15222 },
{ 0x1d7a4, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
- { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 15193 },
- { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 15196 },
- { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 15199 },
+ { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 15225 },
+ { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 15228 },
+ { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 15231 },
{ 0x1d7a8, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
- { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 15202 },
- { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 15206 },
+ { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 15234 },
+ { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 15238 },
{ 0x1d7ab, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
{ 0x1d7ac, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
{ 0x1d7ad, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
{ 0x1d7ae, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
- { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 15209 },
- { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 15212 },
+ { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 15241 },
+ { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 15244 },
{ 0x1d7b1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d7b2, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
{ 0x1d7b3, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
- { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 15215 },
+ { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 15247 },
{ 0x1d7b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
- { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 15218 },
- { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 15221 },
- { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 15224 },
+ { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 15250 },
+ { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 15253 },
+ { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 15256 },
{ 0x1d7b9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
{ 0x1d7ba, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d7bb, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
- { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 15227 },
- { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 15230 },
- { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 15233 },
+ { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 15259 },
+ { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 15262 },
+ { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 15265 },
{ 0x1d7bf, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d7c0, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
- { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 15236 },
- { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 15239 },
- { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 15242 },
+ { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 15268 },
+ { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 15271 },
+ { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 15274 },
{ 0x1d7c4, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
{ 0x1d7c5, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
{ 0x1d7c6, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
{ 0x1d7c7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
{ 0x1d7c8, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
{ 0x1d7c9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
- { 0x1d7ca, G_UNICODE_NOT_PRESENT_OFFSET, 15246 },
- { 0x1d7cb, G_UNICODE_NOT_PRESENT_OFFSET, 15249 },
+ { 0x1d7ca, G_UNICODE_NOT_PRESENT_OFFSET, 15278 },
+ { 0x1d7cb, G_UNICODE_NOT_PRESENT_OFFSET, 15281 },
{ 0x1d7ce, G_UNICODE_NOT_PRESENT_OFFSET, 5253 },
{ 0x1d7cf, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
{ 0x1d7d0, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
@@ -6955,48 +6988,189 @@ static const decomposition decomp_table[] =
{ 0x1d7fd, G_UNICODE_NOT_PRESENT_OFFSET, 5261 },
{ 0x1d7fe, G_UNICODE_NOT_PRESENT_OFFSET, 5263 },
{ 0x1d7ff, G_UNICODE_NOT_PRESENT_OFFSET, 5265 },
- { 0x1f100, G_UNICODE_NOT_PRESENT_OFFSET, 15252 },
- { 0x1f101, G_UNICODE_NOT_PRESENT_OFFSET, 15255 },
- { 0x1f102, G_UNICODE_NOT_PRESENT_OFFSET, 15258 },
- { 0x1f103, G_UNICODE_NOT_PRESENT_OFFSET, 15261 },
- { 0x1f104, G_UNICODE_NOT_PRESENT_OFFSET, 15264 },
- { 0x1f105, G_UNICODE_NOT_PRESENT_OFFSET, 15267 },
- { 0x1f106, G_UNICODE_NOT_PRESENT_OFFSET, 15270 },
- { 0x1f107, G_UNICODE_NOT_PRESENT_OFFSET, 15273 },
- { 0x1f108, G_UNICODE_NOT_PRESENT_OFFSET, 15276 },
- { 0x1f109, G_UNICODE_NOT_PRESENT_OFFSET, 15279 },
- { 0x1f10a, G_UNICODE_NOT_PRESENT_OFFSET, 15282 },
- { 0x1f110, G_UNICODE_NOT_PRESENT_OFFSET, 15285 },
- { 0x1f111, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
- { 0x1f112, G_UNICODE_NOT_PRESENT_OFFSET, 15293 },
- { 0x1f113, G_UNICODE_NOT_PRESENT_OFFSET, 15297 },
- { 0x1f114, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
- { 0x1f115, G_UNICODE_NOT_PRESENT_OFFSET, 15305 },
- { 0x1f116, G_UNICODE_NOT_PRESENT_OFFSET, 15309 },
- { 0x1f117, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
- { 0x1f118, G_UNICODE_NOT_PRESENT_OFFSET, 15317 },
- { 0x1f119, G_UNICODE_NOT_PRESENT_OFFSET, 15321 },
- { 0x1f11a, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
- { 0x1f11b, G_UNICODE_NOT_PRESENT_OFFSET, 15329 },
- { 0x1f11c, G_UNICODE_NOT_PRESENT_OFFSET, 15333 },
- { 0x1f11d, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
- { 0x1f11e, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
- { 0x1f11f, G_UNICODE_NOT_PRESENT_OFFSET, 15345 },
- { 0x1f120, G_UNICODE_NOT_PRESENT_OFFSET, 15349 },
- { 0x1f121, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
- { 0x1f122, G_UNICODE_NOT_PRESENT_OFFSET, 15357 },
- { 0x1f123, G_UNICODE_NOT_PRESENT_OFFSET, 15361 },
- { 0x1f124, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
- { 0x1f125, G_UNICODE_NOT_PRESENT_OFFSET, 15369 },
- { 0x1f126, G_UNICODE_NOT_PRESENT_OFFSET, 15373 },
- { 0x1f127, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
- { 0x1f128, G_UNICODE_NOT_PRESENT_OFFSET, 15381 },
- { 0x1f129, G_UNICODE_NOT_PRESENT_OFFSET, 15385 },
- { 0x1f12a, G_UNICODE_NOT_PRESENT_OFFSET, 15389 },
+ { 0x1ee00, G_UNICODE_NOT_PRESENT_OFFSET, 14740 },
+ { 0x1ee01, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0x1ee02, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1ee03, G_UNICODE_NOT_PRESENT_OFFSET, 14764 },
+ { 0x1ee05, G_UNICODE_NOT_PRESENT_OFFSET, 14821 },
+ { 0x1ee06, G_UNICODE_NOT_PRESENT_OFFSET, 14773 },
+ { 0x1ee07, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1ee08, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0x1ee09, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1ee0a, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0x1ee0b, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0x1ee0c, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0x1ee0d, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1ee0e, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1ee0f, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1ee10, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0x1ee11, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1ee12, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1ee13, G_UNICODE_NOT_PRESENT_OFFSET, 14770 },
+ { 0x1ee14, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1ee15, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0x1ee16, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0x1ee17, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1ee18, G_UNICODE_NOT_PRESENT_OFFSET, 14767 },
+ { 0x1ee19, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1ee1a, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0x1ee1b, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1ee1c, G_UNICODE_NOT_PRESENT_OFFSET, 15284 },
+ { 0x1ee1d, G_UNICODE_NOT_PRESENT_OFFSET, 12831 },
+ { 0x1ee1e, G_UNICODE_NOT_PRESENT_OFFSET, 15287 },
+ { 0x1ee1f, G_UNICODE_NOT_PRESENT_OFFSET, 15290 },
+ { 0x1ee21, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0x1ee22, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1ee24, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0x1ee27, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1ee29, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1ee2a, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0x1ee2b, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0x1ee2c, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0x1ee2d, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1ee2e, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1ee2f, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1ee30, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0x1ee31, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1ee32, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1ee34, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1ee35, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0x1ee36, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0x1ee37, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1ee39, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1ee3b, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1ee42, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1ee47, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1ee49, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1ee4b, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0x1ee4d, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1ee4e, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1ee4f, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1ee51, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1ee52, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1ee54, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1ee57, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1ee59, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1ee5b, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1ee5d, G_UNICODE_NOT_PRESENT_OFFSET, 12831 },
+ { 0x1ee5f, G_UNICODE_NOT_PRESENT_OFFSET, 15290 },
+ { 0x1ee61, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0x1ee62, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1ee64, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0x1ee67, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1ee68, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0x1ee69, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1ee6a, G_UNICODE_NOT_PRESENT_OFFSET, 14806 },
+ { 0x1ee6c, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0x1ee6d, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1ee6e, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1ee6f, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1ee70, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0x1ee71, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1ee72, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1ee74, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1ee75, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0x1ee76, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0x1ee77, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1ee79, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1ee7a, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0x1ee7b, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1ee7c, G_UNICODE_NOT_PRESENT_OFFSET, 15284 },
+ { 0x1ee7e, G_UNICODE_NOT_PRESENT_OFFSET, 15287 },
+ { 0x1ee80, G_UNICODE_NOT_PRESENT_OFFSET, 14740 },
+ { 0x1ee81, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0x1ee82, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1ee83, G_UNICODE_NOT_PRESENT_OFFSET, 14764 },
+ { 0x1ee84, G_UNICODE_NOT_PRESENT_OFFSET, 14818 },
+ { 0x1ee85, G_UNICODE_NOT_PRESENT_OFFSET, 14821 },
+ { 0x1ee86, G_UNICODE_NOT_PRESENT_OFFSET, 14773 },
+ { 0x1ee87, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1ee88, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0x1ee89, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1ee8b, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0x1ee8c, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0x1ee8d, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1ee8e, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1ee8f, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1ee90, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0x1ee91, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1ee92, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1ee93, G_UNICODE_NOT_PRESENT_OFFSET, 14770 },
+ { 0x1ee94, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1ee95, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0x1ee96, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0x1ee97, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1ee98, G_UNICODE_NOT_PRESENT_OFFSET, 14767 },
+ { 0x1ee99, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1ee9a, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0x1ee9b, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1eea1, G_UNICODE_NOT_PRESENT_OFFSET, 14743 },
+ { 0x1eea2, G_UNICODE_NOT_PRESENT_OFFSET, 14755 },
+ { 0x1eea3, G_UNICODE_NOT_PRESENT_OFFSET, 14764 },
+ { 0x1eea5, G_UNICODE_NOT_PRESENT_OFFSET, 14821 },
+ { 0x1eea6, G_UNICODE_NOT_PRESENT_OFFSET, 14773 },
+ { 0x1eea7, G_UNICODE_NOT_PRESENT_OFFSET, 14758 },
+ { 0x1eea8, G_UNICODE_NOT_PRESENT_OFFSET, 14788 },
+ { 0x1eea9, G_UNICODE_NOT_PRESENT_OFFSET, 14824 },
+ { 0x1eeab, G_UNICODE_NOT_PRESENT_OFFSET, 14809 },
+ { 0x1eeac, G_UNICODE_NOT_PRESENT_OFFSET, 14812 },
+ { 0x1eead, G_UNICODE_NOT_PRESENT_OFFSET, 14815 },
+ { 0x1eeae, G_UNICODE_NOT_PRESENT_OFFSET, 14776 },
+ { 0x1eeaf, G_UNICODE_NOT_PRESENT_OFFSET, 14794 },
+ { 0x1eeb0, G_UNICODE_NOT_PRESENT_OFFSET, 14800 },
+ { 0x1eeb1, G_UNICODE_NOT_PRESENT_OFFSET, 14782 },
+ { 0x1eeb2, G_UNICODE_NOT_PRESENT_OFFSET, 14803 },
+ { 0x1eeb3, G_UNICODE_NOT_PRESENT_OFFSET, 14770 },
+ { 0x1eeb4, G_UNICODE_NOT_PRESENT_OFFSET, 14779 },
+ { 0x1eeb5, G_UNICODE_NOT_PRESENT_OFFSET, 14749 },
+ { 0x1eeb6, G_UNICODE_NOT_PRESENT_OFFSET, 14752 },
+ { 0x1eeb7, G_UNICODE_NOT_PRESENT_OFFSET, 14761 },
+ { 0x1eeb8, G_UNICODE_NOT_PRESENT_OFFSET, 14767 },
+ { 0x1eeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14785 },
+ { 0x1eeba, G_UNICODE_NOT_PRESENT_OFFSET, 14791 },
+ { 0x1eebb, G_UNICODE_NOT_PRESENT_OFFSET, 14797 },
+ { 0x1f100, G_UNICODE_NOT_PRESENT_OFFSET, 15293 },
+ { 0x1f101, G_UNICODE_NOT_PRESENT_OFFSET, 15296 },
+ { 0x1f102, G_UNICODE_NOT_PRESENT_OFFSET, 15299 },
+ { 0x1f103, G_UNICODE_NOT_PRESENT_OFFSET, 15302 },
+ { 0x1f104, G_UNICODE_NOT_PRESENT_OFFSET, 15305 },
+ { 0x1f105, G_UNICODE_NOT_PRESENT_OFFSET, 15308 },
+ { 0x1f106, G_UNICODE_NOT_PRESENT_OFFSET, 15311 },
+ { 0x1f107, G_UNICODE_NOT_PRESENT_OFFSET, 15314 },
+ { 0x1f108, G_UNICODE_NOT_PRESENT_OFFSET, 15317 },
+ { 0x1f109, G_UNICODE_NOT_PRESENT_OFFSET, 15320 },
+ { 0x1f10a, G_UNICODE_NOT_PRESENT_OFFSET, 15323 },
+ { 0x1f110, G_UNICODE_NOT_PRESENT_OFFSET, 15326 },
+ { 0x1f111, G_UNICODE_NOT_PRESENT_OFFSET, 15330 },
+ { 0x1f112, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+ { 0x1f113, G_UNICODE_NOT_PRESENT_OFFSET, 15338 },
+ { 0x1f114, G_UNICODE_NOT_PRESENT_OFFSET, 15342 },
+ { 0x1f115, G_UNICODE_NOT_PRESENT_OFFSET, 15346 },
+ { 0x1f116, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+ { 0x1f117, G_UNICODE_NOT_PRESENT_OFFSET, 15354 },
+ { 0x1f118, G_UNICODE_NOT_PRESENT_OFFSET, 15358 },
+ { 0x1f119, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
+ { 0x1f11a, G_UNICODE_NOT_PRESENT_OFFSET, 15366 },
+ { 0x1f11b, G_UNICODE_NOT_PRESENT_OFFSET, 15370 },
+ { 0x1f11c, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
+ { 0x1f11d, G_UNICODE_NOT_PRESENT_OFFSET, 15378 },
+ { 0x1f11e, G_UNICODE_NOT_PRESENT_OFFSET, 15382 },
+ { 0x1f11f, G_UNICODE_NOT_PRESENT_OFFSET, 15386 },
+ { 0x1f120, G_UNICODE_NOT_PRESENT_OFFSET, 15390 },
+ { 0x1f121, G_UNICODE_NOT_PRESENT_OFFSET, 15394 },
+ { 0x1f122, G_UNICODE_NOT_PRESENT_OFFSET, 15398 },
+ { 0x1f123, G_UNICODE_NOT_PRESENT_OFFSET, 15402 },
+ { 0x1f124, G_UNICODE_NOT_PRESENT_OFFSET, 15406 },
+ { 0x1f125, G_UNICODE_NOT_PRESENT_OFFSET, 15410 },
+ { 0x1f126, G_UNICODE_NOT_PRESENT_OFFSET, 15414 },
+ { 0x1f127, G_UNICODE_NOT_PRESENT_OFFSET, 15418 },
+ { 0x1f128, G_UNICODE_NOT_PRESENT_OFFSET, 15422 },
+ { 0x1f129, G_UNICODE_NOT_PRESENT_OFFSET, 15426 },
+ { 0x1f12a, G_UNICODE_NOT_PRESENT_OFFSET, 15430 },
{ 0x1f12b, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
{ 0x1f12c, G_UNICODE_NOT_PRESENT_OFFSET, 2346 },
- { 0x1f12d, G_UNICODE_NOT_PRESENT_OFFSET, 15397 },
- { 0x1f12e, G_UNICODE_NOT_PRESENT_OFFSET, 15400 },
+ { 0x1f12d, G_UNICODE_NOT_PRESENT_OFFSET, 15438 },
+ { 0x1f12e, G_UNICODE_NOT_PRESENT_OFFSET, 15441 },
{ 0x1f130, G_UNICODE_NOT_PRESENT_OFFSET, 2309 },
{ 0x1f131, G_UNICODE_NOT_PRESENT_OFFSET, 2314 },
{ 0x1f132, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
@@ -7023,612 +7197,614 @@ static const decomposition decomp_table[] =
{ 0x1f147, G_UNICODE_NOT_PRESENT_OFFSET, 5487 },
{ 0x1f148, G_UNICODE_NOT_PRESENT_OFFSET, 6135 },
{ 0x1f149, G_UNICODE_NOT_PRESENT_OFFSET, 5331 },
- { 0x1f14a, G_UNICODE_NOT_PRESENT_OFFSET, 15403 },
+ { 0x1f14a, G_UNICODE_NOT_PRESENT_OFFSET, 15444 },
{ 0x1f14b, G_UNICODE_NOT_PRESENT_OFFSET, 10556 },
- { 0x1f14c, G_UNICODE_NOT_PRESENT_OFFSET, 15406 },
- { 0x1f14d, G_UNICODE_NOT_PRESENT_OFFSET, 15409 },
- { 0x1f14e, G_UNICODE_NOT_PRESENT_OFFSET, 15412 },
- { 0x1f14f, G_UNICODE_NOT_PRESENT_OFFSET, 15416 },
- { 0x1f190, G_UNICODE_NOT_PRESENT_OFFSET, 15419 },
- { 0x1f200, G_UNICODE_NOT_PRESENT_OFFSET, 15422 },
- { 0x1f201, G_UNICODE_NOT_PRESENT_OFFSET, 15429 },
+ { 0x1f14c, G_UNICODE_NOT_PRESENT_OFFSET, 15447 },
+ { 0x1f14d, G_UNICODE_NOT_PRESENT_OFFSET, 15450 },
+ { 0x1f14e, G_UNICODE_NOT_PRESENT_OFFSET, 15453 },
+ { 0x1f14f, G_UNICODE_NOT_PRESENT_OFFSET, 15457 },
+ { 0x1f16a, G_UNICODE_NOT_PRESENT_OFFSET, 15460 },
+ { 0x1f16b, G_UNICODE_NOT_PRESENT_OFFSET, 15463 },
+ { 0x1f190, G_UNICODE_NOT_PRESENT_OFFSET, 15466 },
+ { 0x1f200, G_UNICODE_NOT_PRESENT_OFFSET, 15469 },
+ { 0x1f201, G_UNICODE_NOT_PRESENT_OFFSET, 15476 },
{ 0x1f202, G_UNICODE_NOT_PRESENT_OFFSET, 8848 },
{ 0x1f210, G_UNICODE_NOT_PRESENT_OFFSET, 6433 },
- { 0x1f211, G_UNICODE_NOT_PRESENT_OFFSET, 15436 },
- { 0x1f212, G_UNICODE_NOT_PRESENT_OFFSET, 15440 },
+ { 0x1f211, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+ { 0x1f212, G_UNICODE_NOT_PRESENT_OFFSET, 15487 },
{ 0x1f213, G_UNICODE_NOT_PRESENT_OFFSET, 7346 },
{ 0x1f214, G_UNICODE_NOT_PRESENT_OFFSET, 6205 },
- { 0x1f215, G_UNICODE_NOT_PRESENT_OFFSET, 15444 },
- { 0x1f216, G_UNICODE_NOT_PRESENT_OFFSET, 15448 },
+ { 0x1f215, G_UNICODE_NOT_PRESENT_OFFSET, 15491 },
+ { 0x1f216, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
{ 0x1f217, G_UNICODE_NOT_PRESENT_OFFSET, 7887 },
- { 0x1f218, G_UNICODE_NOT_PRESENT_OFFSET, 15452 },
- { 0x1f219, G_UNICODE_NOT_PRESENT_OFFSET, 15456 },
- { 0x1f21a, G_UNICODE_NOT_PRESENT_OFFSET, 15460 },
- { 0x1f21b, G_UNICODE_NOT_PRESENT_OFFSET, 11592 },
- { 0x1f21c, G_UNICODE_NOT_PRESENT_OFFSET, 15464 },
- { 0x1f21d, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
- { 0x1f21e, G_UNICODE_NOT_PRESENT_OFFSET, 15472 },
- { 0x1f21f, G_UNICODE_NOT_PRESENT_OFFSET, 15476 },
- { 0x1f220, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
- { 0x1f221, G_UNICODE_NOT_PRESENT_OFFSET, 15484 },
+ { 0x1f218, G_UNICODE_NOT_PRESENT_OFFSET, 15499 },
+ { 0x1f219, G_UNICODE_NOT_PRESENT_OFFSET, 15503 },
+ { 0x1f21a, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+ { 0x1f21b, G_UNICODE_NOT_PRESENT_OFFSET, 11598 },
+ { 0x1f21c, G_UNICODE_NOT_PRESENT_OFFSET, 15511 },
+ { 0x1f21d, G_UNICODE_NOT_PRESENT_OFFSET, 15515 },
+ { 0x1f21e, G_UNICODE_NOT_PRESENT_OFFSET, 15519 },
+ { 0x1f21f, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+ { 0x1f220, G_UNICODE_NOT_PRESENT_OFFSET, 15527 },
+ { 0x1f221, G_UNICODE_NOT_PRESENT_OFFSET, 15531 },
{ 0x1f222, G_UNICODE_NOT_PRESENT_OFFSET, 6577 },
- { 0x1f223, G_UNICODE_NOT_PRESENT_OFFSET, 15488 },
- { 0x1f224, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
- { 0x1f225, G_UNICODE_NOT_PRESENT_OFFSET, 15496 },
- { 0x1f226, G_UNICODE_NOT_PRESENT_OFFSET, 15500 },
- { 0x1f227, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
- { 0x1f228, G_UNICODE_NOT_PRESENT_OFFSET, 15508 },
+ { 0x1f223, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+ { 0x1f224, G_UNICODE_NOT_PRESENT_OFFSET, 15539 },
+ { 0x1f225, G_UNICODE_NOT_PRESENT_OFFSET, 15543 },
+ { 0x1f226, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
+ { 0x1f227, G_UNICODE_NOT_PRESENT_OFFSET, 15551 },
+ { 0x1f228, G_UNICODE_NOT_PRESENT_OFFSET, 15555 },
{ 0x1f229, G_UNICODE_NOT_PRESENT_OFFSET, 6181 },
{ 0x1f22a, G_UNICODE_NOT_PRESENT_OFFSET, 7855 },
- { 0x1f22b, G_UNICODE_NOT_PRESENT_OFFSET, 15512 },
+ { 0x1f22b, G_UNICODE_NOT_PRESENT_OFFSET, 15559 },
{ 0x1f22c, G_UNICODE_NOT_PRESENT_OFFSET, 8646 },
{ 0x1f22d, G_UNICODE_NOT_PRESENT_OFFSET, 7867 },
{ 0x1f22e, G_UNICODE_NOT_PRESENT_OFFSET, 8650 },
- { 0x1f22f, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+ { 0x1f22f, G_UNICODE_NOT_PRESENT_OFFSET, 15563 },
{ 0x1f230, G_UNICODE_NOT_PRESENT_OFFSET, 6801 },
- { 0x1f231, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
- { 0x1f232, G_UNICODE_NOT_PRESENT_OFFSET, 15524 },
- { 0x1f233, G_UNICODE_NOT_PRESENT_OFFSET, 15528 },
- { 0x1f234, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
- { 0x1f235, G_UNICODE_NOT_PRESENT_OFFSET, 15536 },
+ { 0x1f231, G_UNICODE_NOT_PRESENT_OFFSET, 15567 },
+ { 0x1f232, G_UNICODE_NOT_PRESENT_OFFSET, 15571 },
+ { 0x1f233, G_UNICODE_NOT_PRESENT_OFFSET, 15575 },
+ { 0x1f234, G_UNICODE_NOT_PRESENT_OFFSET, 15579 },
+ { 0x1f235, G_UNICODE_NOT_PRESENT_OFFSET, 15583 },
{ 0x1f236, G_UNICODE_NOT_PRESENT_OFFSET, 8578 },
{ 0x1f237, G_UNICODE_NOT_PRESENT_OFFSET, 6473 },
- { 0x1f238, G_UNICODE_NOT_PRESENT_OFFSET, 15540 },
- { 0x1f239, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
- { 0x1f23a, G_UNICODE_NOT_PRESENT_OFFSET, 15548 },
- { 0x1f240, G_UNICODE_NOT_PRESENT_OFFSET, 15552 },
- { 0x1f241, G_UNICODE_NOT_PRESENT_OFFSET, 15562 },
- { 0x1f242, G_UNICODE_NOT_PRESENT_OFFSET, 15572 },
- { 0x1f243, G_UNICODE_NOT_PRESENT_OFFSET, 15582 },
- { 0x1f244, G_UNICODE_NOT_PRESENT_OFFSET, 15592 },
- { 0x1f245, G_UNICODE_NOT_PRESENT_OFFSET, 15602 },
- { 0x1f246, G_UNICODE_NOT_PRESENT_OFFSET, 15612 },
- { 0x1f247, G_UNICODE_NOT_PRESENT_OFFSET, 15622 },
- { 0x1f248, G_UNICODE_NOT_PRESENT_OFFSET, 15632 },
- { 0x1f250, G_UNICODE_NOT_PRESENT_OFFSET, 15642 },
- { 0x1f251, G_UNICODE_NOT_PRESENT_OFFSET, 15646 },
- { 0x2f800, 15650, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f801, 15654, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f802, 15658, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f803, 15662, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f804, 15667, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f805, 11956, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f806, 15671, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f807, 15675, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f808, 15679, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f809, 15683, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80a, 11960, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80b, 15687, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80c, 15691, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80d, 15695, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80e, 11964, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f80f, 15700, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f810, 15704, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f811, 15708, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f812, 15712, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f813, 15717, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f814, 15721, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f815, 15472, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f816, 15725, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f817, 15730, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f818, 15734, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f819, 15738, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f81a, 15742, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f81b, 12185, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f81c, 15746, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x1f238, G_UNICODE_NOT_PRESENT_OFFSET, 15587 },
+ { 0x1f239, G_UNICODE_NOT_PRESENT_OFFSET, 15591 },
+ { 0x1f23a, G_UNICODE_NOT_PRESENT_OFFSET, 15595 },
+ { 0x1f240, G_UNICODE_NOT_PRESENT_OFFSET, 15599 },
+ { 0x1f241, G_UNICODE_NOT_PRESENT_OFFSET, 15609 },
+ { 0x1f242, G_UNICODE_NOT_PRESENT_OFFSET, 15619 },
+ { 0x1f243, G_UNICODE_NOT_PRESENT_OFFSET, 15629 },
+ { 0x1f244, G_UNICODE_NOT_PRESENT_OFFSET, 15639 },
+ { 0x1f245, G_UNICODE_NOT_PRESENT_OFFSET, 15649 },
+ { 0x1f246, G_UNICODE_NOT_PRESENT_OFFSET, 15659 },
+ { 0x1f247, G_UNICODE_NOT_PRESENT_OFFSET, 15669 },
+ { 0x1f248, G_UNICODE_NOT_PRESENT_OFFSET, 15679 },
+ { 0x1f250, G_UNICODE_NOT_PRESENT_OFFSET, 15689 },
+ { 0x1f251, G_UNICODE_NOT_PRESENT_OFFSET, 15693 },
+ { 0x2f800, 15697, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f801, 15701, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f802, 15705, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f803, 15709, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f804, 15714, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f805, 11970, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f806, 15718, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f807, 15722, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f808, 15726, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f809, 15730, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80a, 11974, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80b, 15734, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80c, 15738, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80d, 15742, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80e, 11978, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f80f, 15747, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f810, 15751, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f811, 15755, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f812, 15759, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f813, 15764, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f814, 15768, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f815, 15519, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f816, 15772, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f817, 15777, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f818, 15781, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f819, 15785, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f81a, 15789, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f81b, 12199, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f81c, 15793, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f81d, 6245, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f81e, 15751, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f81f, 15755, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f820, 15759, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f821, 15763, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f822, 15544, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f823, 15767, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f824, 15771, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f825, 12205, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f826, 11968, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f827, 11972, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f828, 12209, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f829, 15775, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82a, 15779, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82b, 11248, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82c, 15783, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82d, 11976, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82e, 15787, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f82f, 15791, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f830, 15795, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f831, 15799, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f832, 15799, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f833, 15799, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f834, 15803, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f835, 15808, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f836, 15812, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f837, 15816, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f838, 15820, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f839, 15825, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83a, 15829, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83b, 15833, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83c, 15837, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83d, 15841, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83e, 15845, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f83f, 15849, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f840, 15853, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f841, 15857, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f842, 15861, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f843, 15865, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f844, 15869, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f845, 15873, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f846, 15873, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f847, 12217, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f848, 15877, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f849, 15881, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84a, 15885, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84b, 15889, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84c, 11984, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84d, 15893, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84e, 15897, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f84f, 15901, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f850, 11832, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f851, 15905, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f852, 15909, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f853, 15913, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f854, 15917, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f855, 15921, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f856, 15925, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f857, 15929, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f858, 15933, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f859, 15937, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85a, 15942, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85b, 15946, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85c, 15950, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85d, 15444, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85e, 15954, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f85f, 15958, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f860, 15962, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f861, 15967, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f862, 15972, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f863, 15976, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f864, 15980, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f865, 15984, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f866, 15988, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f867, 15992, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f868, 15996, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f869, 16000, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86a, 16004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86b, 16004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86c, 16008, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86d, 16013, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86e, 16017, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f86f, 11232, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f870, 16021, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f871, 16025, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f872, 16030, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f873, 16034, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f874, 16038, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f81e, 15798, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f81f, 15802, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f820, 15806, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f821, 15810, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f822, 15591, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f823, 15814, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f824, 15818, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f825, 12219, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f826, 11982, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f827, 11986, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f828, 12223, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f829, 15822, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82a, 15826, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82b, 11254, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82c, 15830, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82d, 11990, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82e, 15834, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f82f, 15838, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f830, 15842, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f831, 15846, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f832, 15846, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f833, 15846, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f834, 15850, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f835, 15855, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f836, 15859, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f837, 15863, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f838, 15867, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f839, 15872, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83a, 15876, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83b, 15880, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83c, 15884, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83d, 15888, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83e, 15892, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f83f, 15896, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f840, 15900, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f841, 15904, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f842, 15908, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f843, 15912, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f844, 15916, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f845, 15920, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f846, 15920, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f847, 12231, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f848, 15924, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f849, 15928, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84a, 15932, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84b, 15936, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84c, 11998, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84d, 15940, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84e, 15944, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f84f, 15948, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f850, 11838, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f851, 15952, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f852, 15956, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f853, 15960, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f854, 15964, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f855, 15968, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f856, 15972, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f857, 15976, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f858, 15980, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f859, 15984, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85a, 15989, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85b, 15993, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85c, 15997, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85d, 15491, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85e, 16001, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f85f, 16005, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f860, 16009, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f861, 16014, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f862, 16019, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f863, 16023, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f864, 16027, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f865, 16031, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f866, 16035, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f867, 16039, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f868, 16043, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f869, 16047, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86a, 16051, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86b, 16051, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86c, 16055, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86d, 16060, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86e, 16064, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f86f, 11238, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f870, 16068, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f871, 16072, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f872, 16077, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f873, 16081, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f874, 16085, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f875, 6349, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f876, 16042, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f877, 16046, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f876, 16089, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f877, 16093, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f878, 6357, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f879, 16050, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87a, 16054, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87b, 16058, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87c, 16063, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87d, 16067, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87e, 16072, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f87f, 16076, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f880, 16080, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f881, 16084, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f882, 16088, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f883, 16092, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f884, 16096, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f885, 16100, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f886, 16104, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f887, 16108, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f888, 16112, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f889, 16116, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88a, 16121, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88b, 16125, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88c, 16129, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88d, 16133, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88e, 11024, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f88f, 16137, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f879, 16097, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87a, 16101, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87b, 16105, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87c, 16110, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87d, 16114, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87e, 16119, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f87f, 16123, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f880, 16127, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f881, 16131, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f882, 16135, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f883, 16139, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f884, 16143, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f885, 16147, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f886, 16151, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f887, 16155, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f888, 16159, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f889, 16163, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88a, 16168, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88b, 16172, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88c, 16176, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88d, 16180, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88e, 11030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f88f, 16184, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f890, 6397, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f891, 16142, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f892, 16142, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f893, 16147, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f894, 16151, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f895, 16151, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f896, 16155, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f897, 16159, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f898, 16164, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f899, 16169, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89a, 16173, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89b, 16177, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89c, 16181, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89d, 16185, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89e, 16189, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f89f, 16193, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a0, 16197, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a1, 16201, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a2, 16205, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a3, 12004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a4, 16209, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a5, 16214, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a6, 16218, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a7, 16222, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a8, 12265, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8a9, 16222, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8aa, 16226, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ab, 12012, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ac, 16230, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ad, 16234, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ae, 16238, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8af, 16242, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b0, 12016, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b1, 10916, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b2, 16246, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b3, 16250, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b4, 16254, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b5, 16258, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b6, 16262, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b7, 16266, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b8, 16270, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8b9, 16275, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ba, 16279, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8bb, 16283, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8bc, 16287, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8bd, 16291, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8be, 16295, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8bf, 16300, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c0, 16304, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c1, 16308, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c2, 16312, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c3, 16316, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c4, 16320, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c5, 16324, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c6, 16328, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c7, 16332, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c8, 12020, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8c9, 16336, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ca, 16340, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8cb, 16345, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8cc, 16349, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8cd, 16353, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ce, 16357, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8cf, 12028, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d0, 16361, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d1, 16365, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d2, 16369, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d3, 16373, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d4, 16377, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d5, 16381, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d6, 16385, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d7, 16389, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d8, 11028, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8d9, 12297, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8da, 16393, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8db, 16397, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8dc, 16401, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8dd, 16405, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8de, 16410, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8df, 16414, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e0, 16418, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e1, 16422, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e2, 12032, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e3, 16426, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e4, 16431, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e5, 16435, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e6, 16439, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e7, 12468, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e8, 16443, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8e9, 16447, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ea, 16451, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8eb, 16455, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ec, 16459, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ed, 16464, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ee, 16468, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ef, 16472, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f0, 16476, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f1, 16481, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f2, 16485, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f3, 16489, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f4, 16493, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f5, 11300, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f6, 16497, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f7, 16501, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f8, 16506, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8f9, 16511, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8fa, 16516, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8fb, 16520, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8fc, 16525, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8fd, 16529, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8fe, 16533, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f8ff, 16537, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f900, 16541, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f901, 12036, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f902, 11632, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f903, 16545, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f904, 16549, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f905, 16553, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f906, 16557, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f907, 16562, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f908, 16566, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f909, 16570, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90a, 16574, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90b, 12309, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90c, 16578, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90d, 16582, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90e, 16587, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f90f, 16591, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f910, 16595, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f911, 16600, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f912, 16605, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f913, 16609, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f914, 12313, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f915, 16613, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f916, 16617, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f917, 16621, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f918, 16625, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f919, 16629, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91a, 16633, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91b, 16637, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91c, 16642, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91d, 16646, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91e, 16651, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f91f, 16655, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f920, 16660, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f921, 12321, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f922, 16664, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f923, 16668, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f924, 16673, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f925, 16677, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f926, 16681, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f927, 16686, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f928, 16691, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f929, 16695, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92a, 16699, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92b, 16703, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92c, 16707, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92d, 16707, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92e, 16711, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f92f, 16715, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f930, 12329, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f931, 16719, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f932, 16723, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f933, 16727, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f934, 16731, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f935, 16735, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f936, 16740, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f937, 16744, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f938, 11244, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f939, 16749, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93a, 16754, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93b, 16758, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93c, 16763, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93d, 16768, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93e, 16773, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f93f, 16777, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f940, 12353, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f941, 16781, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f942, 16786, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f943, 16791, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f944, 16796, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f945, 16801, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f946, 16805, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f947, 16805, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f948, 12357, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f949, 12476, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94a, 16809, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94b, 16813, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94c, 16817, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94d, 16821, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94e, 16826, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f94f, 11096, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f950, 12365, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f951, 16830, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f952, 16834, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f953, 12076, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f954, 16839, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f955, 16844, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f956, 11912, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f957, 16849, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f958, 16853, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f959, 12088, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95a, 16857, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95b, 16861, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95c, 16865, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95d, 16870, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95e, 16870, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f95f, 16875, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f960, 16879, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f961, 16883, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f962, 16888, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f963, 16892, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f964, 16896, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f965, 16900, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f966, 16905, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f967, 16909, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f968, 16913, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f969, 16917, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96a, 16921, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96b, 16925, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96c, 16930, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96d, 16934, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96e, 16938, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f96f, 16942, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f970, 16946, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f971, 16950, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f972, 16954, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f973, 16959, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f974, 16964, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f975, 16968, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f976, 16973, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f977, 16977, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f978, 16982, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f979, 16986, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97a, 12112, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97b, 16990, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97c, 16995, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97d, 17000, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97e, 17004, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f97f, 17009, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f980, 17013, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f981, 17018, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f982, 17022, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f983, 17026, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f984, 17030, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f985, 17034, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f986, 17038, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f987, 17042, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f988, 17047, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f989, 17052, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98a, 17057, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98b, 16147, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98c, 17062, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98d, 17066, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98e, 17070, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f98f, 17074, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f990, 17078, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f991, 17082, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f992, 17086, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f993, 17090, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f994, 17094, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f995, 17098, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f996, 17102, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f997, 17106, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f998, 11312, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f999, 17111, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99a, 17115, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99b, 17119, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99c, 17123, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99d, 17127, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99e, 17131, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f99f, 12124, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a0, 17135, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a1, 17139, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a2, 17143, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a3, 17147, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a4, 17151, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a5, 17156, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a6, 17161, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a7, 17166, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a8, 17170, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9a9, 17174, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9aa, 17178, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ab, 17182, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ac, 17187, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ad, 17191, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ae, 17196, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9af, 17200, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b0, 17204, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b1, 17209, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b2, 17214, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b3, 17218, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b4, 11076, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b5, 17222, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b6, 17226, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b7, 17230, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b8, 17234, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9b9, 17238, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ba, 17242, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9bb, 12393, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9bc, 17246, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9bd, 17250, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9be, 17254, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9bf, 17258, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c0, 17262, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c1, 17266, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c2, 17270, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c3, 17274, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f891, 16189, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f892, 16189, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f893, 16194, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f894, 16198, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f895, 16198, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f896, 16202, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f897, 16206, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f898, 16211, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f899, 16216, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89a, 16220, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89b, 16224, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89c, 16228, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89d, 16232, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89e, 16236, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f89f, 16240, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a0, 16244, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a1, 16248, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a2, 16252, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a3, 12018, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a4, 16256, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a5, 16261, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a6, 16265, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a7, 16269, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a8, 12279, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8a9, 16269, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8aa, 16273, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ab, 12026, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ac, 16277, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ad, 16281, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ae, 16285, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8af, 16289, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b0, 12030, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b1, 10922, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b2, 16293, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b3, 16297, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b4, 16301, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b5, 16305, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b6, 16309, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b7, 16313, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b8, 16317, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8b9, 16322, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ba, 16326, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8bb, 16330, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8bc, 16334, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8bd, 16338, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8be, 16342, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8bf, 16347, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c0, 16351, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c1, 16355, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c2, 16359, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c3, 16363, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c4, 16367, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c5, 16371, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c6, 16375, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c7, 16379, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c8, 12034, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8c9, 16383, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ca, 16387, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8cb, 16392, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8cc, 16396, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8cd, 16400, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ce, 16404, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8cf, 12042, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d0, 16408, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d1, 16412, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d2, 16416, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d3, 16420, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d4, 16424, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d5, 16428, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d6, 16432, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d7, 16436, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d8, 11034, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8d9, 12311, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8da, 16440, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8db, 16444, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8dc, 16448, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8dd, 16452, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8de, 16457, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8df, 16461, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e0, 16465, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e1, 16469, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e2, 12046, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e3, 16473, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e4, 16478, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e5, 16482, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e6, 16486, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e7, 12482, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e8, 16490, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8e9, 16494, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ea, 16498, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8eb, 16502, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ec, 16506, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ed, 16511, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ee, 16515, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ef, 16519, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f0, 16523, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f1, 16528, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f2, 16532, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f3, 16536, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f4, 16540, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f5, 11306, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f6, 16544, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f7, 16548, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f8, 16553, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8f9, 16558, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8fa, 16563, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8fb, 16567, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8fc, 16572, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8fd, 16576, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8fe, 16580, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f8ff, 16584, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f900, 16588, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f901, 12050, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f902, 11638, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f903, 16592, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f904, 16596, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f905, 16600, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f906, 16604, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f907, 16609, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f908, 16613, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f909, 16617, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90a, 16621, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90b, 12323, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90c, 16625, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90d, 16629, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90e, 16634, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f90f, 16638, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f910, 16642, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f911, 16647, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f912, 16652, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f913, 16656, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f914, 12327, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f915, 16660, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f916, 16664, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f917, 16668, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f918, 16672, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f919, 16676, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91a, 16680, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91b, 16684, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91c, 16689, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91d, 16693, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91e, 16698, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f91f, 16702, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f920, 16707, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f921, 12335, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f922, 16711, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f923, 16715, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f924, 16720, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f925, 16724, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f926, 16728, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f927, 16733, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f928, 16738, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f929, 16742, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92a, 16746, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92b, 16750, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92c, 16754, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92d, 16754, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92e, 16758, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f92f, 16762, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f930, 12343, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f931, 16766, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f932, 16770, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f933, 16774, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f934, 16778, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f935, 16782, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f936, 16787, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f937, 16791, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f938, 11250, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f939, 16796, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93a, 16801, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93b, 16805, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93c, 16810, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93d, 16815, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93e, 16820, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f93f, 16824, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f940, 12367, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f941, 16828, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f942, 16833, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f943, 16838, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f944, 16843, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f945, 16848, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f946, 16852, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f947, 16852, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f948, 12371, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f949, 12490, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94a, 16856, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94b, 16860, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94c, 16864, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94d, 16868, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94e, 16873, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f94f, 11102, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f950, 12379, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f951, 16877, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f952, 16881, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f953, 12090, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f954, 16886, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f955, 16891, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f956, 11918, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f957, 16896, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f958, 16900, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f959, 12102, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95a, 16904, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95b, 16908, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95c, 16912, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95d, 16917, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95e, 16917, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f95f, 16922, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f960, 16926, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f961, 16930, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f962, 16935, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f963, 16939, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f964, 16943, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f965, 16947, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f966, 16952, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f967, 16956, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f968, 16960, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f969, 16964, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96a, 16968, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96b, 16972, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96c, 16977, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96d, 16981, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96e, 16985, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f96f, 16989, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f970, 16993, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f971, 16997, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f972, 17001, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f973, 17006, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f974, 17011, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f975, 17015, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f976, 17020, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f977, 17024, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f978, 17029, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f979, 17033, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97a, 12126, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97b, 17037, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97c, 17042, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97d, 17047, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97e, 17051, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f97f, 17056, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f980, 17060, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f981, 17065, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f982, 17069, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f983, 17073, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f984, 17077, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f985, 17081, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f986, 17085, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f987, 17089, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f988, 17094, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f989, 17099, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98a, 17104, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98b, 16194, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98c, 17109, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98d, 17113, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98e, 17117, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f98f, 17121, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f990, 17125, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f991, 17129, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f992, 17133, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f993, 17137, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f994, 17141, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f995, 17145, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f996, 17149, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f997, 17153, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f998, 11318, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f999, 17158, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99a, 17162, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99b, 17166, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99c, 17170, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99d, 17174, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99e, 17178, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f99f, 12138, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a0, 17182, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a1, 17186, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a2, 17190, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a3, 17194, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a4, 17198, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a5, 17203, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a6, 17208, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a7, 17213, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a8, 17217, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9a9, 17221, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9aa, 17225, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ab, 17229, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ac, 17234, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ad, 17238, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ae, 17243, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9af, 17247, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b0, 17251, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b1, 17256, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b2, 17261, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b3, 17265, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b4, 11082, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b5, 17269, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b6, 17273, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b7, 17277, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b8, 17281, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9b9, 17285, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ba, 17289, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9bb, 12407, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9bc, 17293, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9bd, 17297, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9be, 17301, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9bf, 17305, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c0, 17309, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c1, 17313, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c2, 17317, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c3, 17321, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f9c4, 6757, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c5, 17278, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c6, 17283, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c7, 17287, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c8, 17291, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9c9, 17295, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ca, 17299, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9cb, 17303, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9cc, 17308, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9cd, 17313, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ce, 17317, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9cf, 17321, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d0, 12413, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d1, 12417, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c5, 17325, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c6, 17330, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c7, 17334, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c8, 17338, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9c9, 17342, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ca, 17346, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9cb, 17350, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9cc, 17355, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9cd, 17360, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ce, 17364, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9cf, 17368, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d0, 12427, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d1, 12431, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2f9d2, 6785, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d3, 17325, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d4, 17330, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d5, 17334, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d6, 17338, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d7, 17342, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d8, 17346, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9d9, 17351, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9da, 17356, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9db, 17360, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9dc, 17364, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9dd, 17368, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9de, 17373, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9df, 12421, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e0, 17377, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e1, 17382, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e2, 17387, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e3, 17391, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e4, 17395, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e5, 17399, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e6, 17404, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e7, 17408, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e8, 17412, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9e9, 17416, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ea, 17420, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9eb, 17424, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ec, 17428, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ed, 17432, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ee, 17437, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ef, 17441, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f0, 17445, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f1, 17449, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f2, 17454, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f3, 17458, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f4, 17462, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f5, 17466, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f6, 17470, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f7, 17475, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f8, 17480, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9f9, 17484, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9fa, 17488, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9fb, 17492, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9fc, 17497, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9fd, 17501, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9fe, 12445, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2f9ff, 12445, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa00, 17506, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa01, 17510, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa02, 17515, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa03, 17519, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa04, 17523, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa05, 17527, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa06, 17531, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa07, 17535, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa08, 17539, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa09, 17543, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0a, 12449, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0b, 17548, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0c, 17552, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0d, 17556, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0e, 17560, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa0f, 17564, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa10, 17568, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa11, 17573, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa12, 17577, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa13, 17582, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa14, 17587, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d3, 17372, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d4, 17377, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d5, 17381, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d6, 17385, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d7, 17389, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d8, 17393, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9d9, 17398, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9da, 17403, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9db, 17407, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9dc, 17411, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9dd, 17415, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9de, 17420, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9df, 12435, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e0, 17424, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e1, 17429, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e2, 17434, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e3, 17438, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e4, 17442, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e5, 17446, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e6, 17451, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e7, 17455, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e8, 17459, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9e9, 17463, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ea, 17467, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9eb, 17471, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ec, 17475, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ed, 17479, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ee, 17484, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ef, 17488, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f0, 17492, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f1, 17496, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f2, 17501, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f3, 17505, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f4, 17509, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f5, 17513, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f6, 17517, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f7, 17522, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f8, 17527, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9f9, 17531, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9fa, 17535, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9fb, 17539, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9fc, 17544, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9fd, 17548, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9fe, 12459, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2f9ff, 12459, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa00, 17553, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa01, 17557, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa02, 17562, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa03, 17566, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa04, 17570, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa05, 17574, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa06, 17578, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa07, 17582, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa08, 17586, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa09, 17590, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0a, 12463, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0b, 17595, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0c, 17599, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0d, 17603, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0e, 17607, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa0f, 17611, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa10, 17615, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa11, 17620, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa12, 17624, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa13, 17629, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa14, 17634, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2fa15, 6977, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa16, 17592, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa16, 17639, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2fa17, 6993, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa18, 17596, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa19, 17600, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa1a, 17604, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa1b, 17608, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa18, 17643, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa19, 17647, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa1a, 17651, G_UNICODE_NOT_PRESENT_OFFSET },
+ { 0x2fa1b, 17655, G_UNICODE_NOT_PRESENT_OFFSET },
{ 0x2fa1c, 7013, G_UNICODE_NOT_PRESENT_OFFSET },
- { 0x2fa1d, 17612, G_UNICODE_NOT_PRESENT_OFFSET }
+ { 0x2fa1d, 17659, G_UNICODE_NOT_PRESENT_OFFSET }
};
static const gchar decomp_expansion_string[] =
@@ -9761,1502 +9937,1513 @@ static const gchar decomp_expansion_string[] =
"\x33\x31\xe6\x97\xa5\0" /* offset 10866 */
"\x67\x61\x6c\0" /* offset 10872 */
"\xea\x9d\xaf\0" /* offset 10876 */
- "\xe8\xb1\x88\0" /* offset 10880 */
- "\xe6\x9b\xb4\0" /* offset 10884 */
- "\xe8\xb3\x88\0" /* offset 10888 */
- "\xe6\xbb\x91\0" /* offset 10892 */
- "\xe4\xb8\xb2\0" /* offset 10896 */
- "\xe5\x8f\xa5\0" /* offset 10900 */
- "\xe5\xa5\x91\0" /* offset 10904 */
- "\xe5\x96\x87\0" /* offset 10908 */
- "\xe5\xa5\x88\0" /* offset 10912 */
- "\xe6\x87\xb6\0" /* offset 10916 */
- "\xe7\x99\xa9\0" /* offset 10920 */
- "\xe7\xbe\x85\0" /* offset 10924 */
- "\xe8\x98\xbf\0" /* offset 10928 */
- "\xe8\x9e\xba\0" /* offset 10932 */
- "\xe8\xa3\xb8\0" /* offset 10936 */
- "\xe9\x82\x8f\0" /* offset 10940 */
- "\xe6\xa8\x82\0" /* offset 10944 */
- "\xe6\xb4\x9b\0" /* offset 10948 */
- "\xe7\x83\x99\0" /* offset 10952 */
- "\xe7\x8f\x9e\0" /* offset 10956 */
- "\xe8\x90\xbd\0" /* offset 10960 */
- "\xe9\x85\xaa\0" /* offset 10964 */
- "\xe9\xa7\xb1\0" /* offset 10968 */
- "\xe4\xba\x82\0" /* offset 10972 */
- "\xe5\x8d\xb5\0" /* offset 10976 */
- "\xe6\xac\x84\0" /* offset 10980 */
- "\xe7\x88\x9b\0" /* offset 10984 */
- "\xe8\x98\xad\0" /* offset 10988 */
- "\xe9\xb8\x9e\0" /* offset 10992 */
- "\xe5\xb5\x90\0" /* offset 10996 */
- "\xe6\xbf\xab\0" /* offset 11000 */
- "\xe8\x97\x8d\0" /* offset 11004 */
- "\xe8\xa5\xa4\0" /* offset 11008 */
- "\xe6\x8b\x89\0" /* offset 11012 */
- "\xe8\x87\x98\0" /* offset 11016 */
- "\xe8\xa0\x9f\0" /* offset 11020 */
- "\xe5\xbb\x8a\0" /* offset 11024 */
- "\xe6\x9c\x97\0" /* offset 11028 */
- "\xe6\xb5\xaa\0" /* offset 11032 */
- "\xe7\x8b\xbc\0" /* offset 11036 */
- "\xe9\x83\x8e\0" /* offset 11040 */
- "\xe4\xbe\x86\0" /* offset 11044 */
- "\xe5\x86\xb7\0" /* offset 11048 */
- "\xe5\x8b\x9e\0" /* offset 11052 */
- "\xe6\x93\x84\0" /* offset 11056 */
- "\xe6\xab\x93\0" /* offset 11060 */
- "\xe7\x88\x90\0" /* offset 11064 */
- "\xe7\x9b\xa7\0" /* offset 11068 */
- "\xe8\x98\x86\0" /* offset 11072 */
- "\xe8\x99\x9c\0" /* offset 11076 */
- "\xe8\xb7\xaf\0" /* offset 11080 */
- "\xe9\x9c\xb2\0" /* offset 11084 */
- "\xe9\xad\xaf\0" /* offset 11088 */
- "\xe9\xb7\xba\0" /* offset 11092 */
- "\xe7\xa2\x8c\0" /* offset 11096 */
- "\xe7\xa5\xbf\0" /* offset 11100 */
- "\xe7\xb6\xa0\0" /* offset 11104 */
- "\xe8\x8f\x89\0" /* offset 11108 */
- "\xe9\x8c\x84\0" /* offset 11112 */
- "\xe8\xab\x96\0" /* offset 11116 */
- "\xe5\xa3\x9f\0" /* offset 11120 */
- "\xe5\xbc\x84\0" /* offset 11124 */
- "\xe7\xb1\xa0\0" /* offset 11128 */
- "\xe8\x81\xbe\0" /* offset 11132 */
- "\xe7\x89\xa2\0" /* offset 11136 */
- "\xe7\xa3\x8a\0" /* offset 11140 */
- "\xe8\xb3\x82\0" /* offset 11144 */
- "\xe9\x9b\xb7\0" /* offset 11148 */
- "\xe5\xa3\x98\0" /* offset 11152 */
- "\xe5\xb1\xa2\0" /* offset 11156 */
- "\xe6\xa8\x93\0" /* offset 11160 */
- "\xe6\xb7\x9a\0" /* offset 11164 */
- "\xe6\xbc\x8f\0" /* offset 11168 */
- "\xe7\xb4\xaf\0" /* offset 11172 */
- "\xe7\xb8\xb7\0" /* offset 11176 */
- "\xe9\x99\x8b\0" /* offset 11180 */
- "\xe5\x8b\x92\0" /* offset 11184 */
- "\xe8\x82\x8b\0" /* offset 11188 */
- "\xe5\x87\x9c\0" /* offset 11192 */
- "\xe5\x87\x8c\0" /* offset 11196 */
- "\xe7\xa8\x9c\0" /* offset 11200 */
- "\xe7\xb6\xbe\0" /* offset 11204 */
- "\xe8\x8f\xb1\0" /* offset 11208 */
- "\xe9\x99\xb5\0" /* offset 11212 */
- "\xe8\xae\x80\0" /* offset 11216 */
- "\xe6\x8b\x8f\0" /* offset 11220 */
- "\xe8\xab\xbe\0" /* offset 11224 */
- "\xe4\xb8\xb9\0" /* offset 11228 */
- "\xe5\xaf\xa7\0" /* offset 11232 */
- "\xe6\x80\x92\0" /* offset 11236 */
- "\xe7\x8e\x87\0" /* offset 11240 */
- "\xe7\x95\xb0\0" /* offset 11244 */
- "\xe5\x8c\x97\0" /* offset 11248 */
- "\xe7\xa3\xbb\0" /* offset 11252 */
- "\xe4\xbe\xbf\0" /* offset 11256 */
- "\xe5\xbe\xa9\0" /* offset 11260 */
- "\xe4\xb8\x8d\0" /* offset 11264 */
- "\xe6\xb3\x8c\0" /* offset 11268 */
- "\xe6\x95\xb8\0" /* offset 11272 */
- "\xe7\xb4\xa2\0" /* offset 11276 */
- "\xe5\x8f\x83\0" /* offset 11280 */
- "\xe5\xa1\x9e\0" /* offset 11284 */
- "\xe7\x9c\x81\0" /* offset 11288 */
- "\xe8\x91\x89\0" /* offset 11292 */
- "\xe8\xaa\xaa\0" /* offset 11296 */
- "\xe6\xae\xba\0" /* offset 11300 */
- "\xe6\xb2\x88\0" /* offset 11304 */
- "\xe6\x8b\xbe\0" /* offset 11308 */
- "\xe8\x8b\xa5\0" /* offset 11312 */
- "\xe6\x8e\xa0\0" /* offset 11316 */
- "\xe7\x95\xa5\0" /* offset 11320 */
- "\xe4\xba\xae\0" /* offset 11324 */
- "\xe5\x85\xa9\0" /* offset 11328 */
- "\xe5\x87\x89\0" /* offset 11332 */
- "\xe6\xa2\x81\0" /* offset 11336 */
- "\xe7\xb3\xa7\0" /* offset 11340 */
- "\xe8\x89\xaf\0" /* offset 11344 */
- "\xe8\xab\x92\0" /* offset 11348 */
- "\xe9\x87\x8f\0" /* offset 11352 */
- "\xe5\x8b\xb5\0" /* offset 11356 */
- "\xe5\x91\x82\0" /* offset 11360 */
- "\xe5\xbb\xac\0" /* offset 11364 */
- "\xe6\x97\x85\0" /* offset 11368 */
- "\xe6\xbf\xbe\0" /* offset 11372 */
- "\xe7\xa4\xaa\0" /* offset 11376 */
- "\xe9\x96\xad\0" /* offset 11380 */
- "\xe9\xa9\xaa\0" /* offset 11384 */
- "\xe9\xba\x97\0" /* offset 11388 */
- "\xe9\xbb\x8e\0" /* offset 11392 */
- "\xe6\x9b\x86\0" /* offset 11396 */
- "\xe6\xad\xb7\0" /* offset 11400 */
- "\xe8\xbd\xa2\0" /* offset 11404 */
- "\xe5\xb9\xb4\0" /* offset 11408 */
- "\xe6\x86\x90\0" /* offset 11412 */
- "\xe6\x88\x80\0" /* offset 11416 */
- "\xe6\x92\x9a\0" /* offset 11420 */
- "\xe6\xbc\xa3\0" /* offset 11424 */
- "\xe7\x85\x89\0" /* offset 11428 */
- "\xe7\x92\x89\0" /* offset 11432 */
- "\xe7\xa7\x8a\0" /* offset 11436 */
- "\xe7\xb7\xb4\0" /* offset 11440 */
- "\xe8\x81\xaf\0" /* offset 11444 */
- "\xe8\xbc\xa6\0" /* offset 11448 */
- "\xe8\x93\xae\0" /* offset 11452 */
- "\xe9\x80\xa3\0" /* offset 11456 */
- "\xe9\x8d\x8a\0" /* offset 11460 */
- "\xe5\x88\x97\0" /* offset 11464 */
- "\xe5\x8a\xa3\0" /* offset 11468 */
- "\xe5\x92\xbd\0" /* offset 11472 */
- "\xe7\x83\x88\0" /* offset 11476 */
- "\xe8\xa3\x82\0" /* offset 11480 */
- "\xe5\xbb\x89\0" /* offset 11484 */
- "\xe5\xbf\xb5\0" /* offset 11488 */
- "\xe6\x8d\xbb\0" /* offset 11492 */
- "\xe6\xae\xae\0" /* offset 11496 */
- "\xe7\xb0\xbe\0" /* offset 11500 */
- "\xe7\x8d\xb5\0" /* offset 11504 */
- "\xe4\xbb\xa4\0" /* offset 11508 */
- "\xe5\x9b\xb9\0" /* offset 11512 */
- "\xe5\xb6\xba\0" /* offset 11516 */
- "\xe6\x80\x9c\0" /* offset 11520 */
- "\xe7\x8e\xb2\0" /* offset 11524 */
- "\xe7\x91\xa9\0" /* offset 11528 */
- "\xe7\xbe\x9a\0" /* offset 11532 */
- "\xe8\x81\x86\0" /* offset 11536 */
- "\xe9\x88\xb4\0" /* offset 11540 */
- "\xe9\x9b\xb6\0" /* offset 11544 */
- "\xe9\x9d\x88\0" /* offset 11548 */
- "\xe9\xa0\x98\0" /* offset 11552 */
- "\xe4\xbe\x8b\0" /* offset 11556 */
- "\xe7\xa6\xae\0" /* offset 11560 */
- "\xe9\x86\xb4\0" /* offset 11564 */
- "\xe9\x9a\xb8\0" /* offset 11568 */
- "\xe6\x83\xa1\0" /* offset 11572 */
- "\xe4\xba\x86\0" /* offset 11576 */
- "\xe5\x83\x9a\0" /* offset 11580 */
- "\xe5\xaf\xae\0" /* offset 11584 */
- "\xe5\xb0\xbf\0" /* offset 11588 */
- "\xe6\x96\x99\0" /* offset 11592 */
- "\xe7\x87\x8e\0" /* offset 11596 */
- "\xe7\x99\x82\0" /* offset 11600 */
- "\xe8\x93\xbc\0" /* offset 11604 */
- "\xe9\x81\xbc\0" /* offset 11608 */
- "\xe6\x9a\x88\0" /* offset 11612 */
- "\xe9\x98\xae\0" /* offset 11616 */
- "\xe5\x8a\x89\0" /* offset 11620 */
- "\xe6\x9d\xbb\0" /* offset 11624 */
- "\xe6\x9f\xb3\0" /* offset 11628 */
- "\xe6\xb5\x81\0" /* offset 11632 */
- "\xe6\xba\x9c\0" /* offset 11636 */
- "\xe7\x90\x89\0" /* offset 11640 */
- "\xe7\x95\x99\0" /* offset 11644 */
- "\xe7\xa1\xab\0" /* offset 11648 */
- "\xe7\xb4\x90\0" /* offset 11652 */
- "\xe9\xa1\x9e\0" /* offset 11656 */
- "\xe6\x88\xae\0" /* offset 11660 */
- "\xe9\x99\xb8\0" /* offset 11664 */
- "\xe5\x80\xab\0" /* offset 11668 */
- "\xe5\xb4\x99\0" /* offset 11672 */
- "\xe6\xb7\xaa\0" /* offset 11676 */
- "\xe8\xbc\xaa\0" /* offset 11680 */
- "\xe5\xbe\x8b\0" /* offset 11684 */
- "\xe6\x85\x84\0" /* offset 11688 */
- "\xe6\xa0\x97\0" /* offset 11692 */
- "\xe9\x9a\x86\0" /* offset 11696 */
- "\xe5\x88\xa9\0" /* offset 11700 */
- "\xe5\x90\x8f\0" /* offset 11704 */
- "\xe5\xb1\xa5\0" /* offset 11708 */
- "\xe6\x98\x93\0" /* offset 11712 */
- "\xe6\x9d\x8e\0" /* offset 11716 */
- "\xe6\xa2\xa8\0" /* offset 11720 */
- "\xe6\xb3\xa5\0" /* offset 11724 */
- "\xe7\x90\x86\0" /* offset 11728 */
- "\xe7\x97\xa2\0" /* offset 11732 */
- "\xe7\xbd\xb9\0" /* offset 11736 */
- "\xe8\xa3\x8f\0" /* offset 11740 */
- "\xe8\xa3\xa1\0" /* offset 11744 */
- "\xe9\x9b\xa2\0" /* offset 11748 */
- "\xe5\x8c\xbf\0" /* offset 11752 */
- "\xe6\xba\xba\0" /* offset 11756 */
- "\xe5\x90\x9d\0" /* offset 11760 */
- "\xe7\x87\x90\0" /* offset 11764 */
- "\xe7\x92\x98\0" /* offset 11768 */
- "\xe8\x97\xba\0" /* offset 11772 */
- "\xe9\x9a\xa3\0" /* offset 11776 */
- "\xe9\xb1\x97\0" /* offset 11780 */
- "\xe9\xba\x9f\0" /* offset 11784 */
- "\xe6\x9e\x97\0" /* offset 11788 */
- "\xe6\xb7\x8b\0" /* offset 11792 */
- "\xe8\x87\xa8\0" /* offset 11796 */
- "\xe7\xac\xa0\0" /* offset 11800 */
- "\xe7\xb2\x92\0" /* offset 11804 */
- "\xe7\x8b\x80\0" /* offset 11808 */
- "\xe7\x82\x99\0" /* offset 11812 */
- "\xe8\xad\x98\0" /* offset 11816 */
- "\xe4\xbb\x80\0" /* offset 11820 */
- "\xe8\x8c\xb6\0" /* offset 11824 */
- "\xe5\x88\xba\0" /* offset 11828 */
- "\xe5\x88\x87\0" /* offset 11832 */
- "\xe5\xba\xa6\0" /* offset 11836 */
- "\xe6\x8b\x93\0" /* offset 11840 */
- "\xe7\xb3\x96\0" /* offset 11844 */
- "\xe5\xae\x85\0" /* offset 11848 */
- "\xe6\xb4\x9e\0" /* offset 11852 */
- "\xe6\x9a\xb4\0" /* offset 11856 */
- "\xe8\xbc\xbb\0" /* offset 11860 */
- "\xe9\x99\x8d\0" /* offset 11864 */
- "\xe5\xbb\x93\0" /* offset 11868 */
- "\xe5\x85\x80\0" /* offset 11872 */
- "\xe5\x97\x80\0" /* offset 11876 */
- "\xe5\xa1\x9a\0" /* offset 11880 */
- "\xe6\x99\xb4\0" /* offset 11884 */
- "\xe5\x87\x9e\0" /* offset 11888 */
- "\xe7\x8c\xaa\0" /* offset 11892 */
- "\xe7\x9b\x8a\0" /* offset 11896 */
- "\xe7\xa4\xbc\0" /* offset 11900 */
- "\xe7\xa5\x9e\0" /* offset 11904 */
- "\xe7\xa5\xa5\0" /* offset 11908 */
- "\xe7\xa6\x8f\0" /* offset 11912 */
- "\xe9\x9d\x96\0" /* offset 11916 */
- "\xe7\xb2\xbe\0" /* offset 11920 */
- "\xe8\x98\x92\0" /* offset 11924 */
- "\xe8\xab\xb8\0" /* offset 11928 */
- "\xe9\x80\xb8\0" /* offset 11932 */
- "\xe9\x83\xbd\0" /* offset 11936 */
- "\xe9\xa3\xaf\0" /* offset 11940 */
- "\xe9\xa3\xbc\0" /* offset 11944 */
- "\xe9\xa4\xa8\0" /* offset 11948 */
- "\xe9\xb6\xb4\0" /* offset 11952 */
- "\xe4\xbe\xae\0" /* offset 11956 */
- "\xe5\x83\xa7\0" /* offset 11960 */
- "\xe5\x85\x8d\0" /* offset 11964 */
- "\xe5\x8b\x89\0" /* offset 11968 */
- "\xe5\x8b\xa4\0" /* offset 11972 */
- "\xe5\x8d\x91\0" /* offset 11976 */
- "\xe5\x96\x9d\0" /* offset 11980 */
- "\xe5\x98\x86\0" /* offset 11984 */
- "\xe5\x99\xa8\0" /* offset 11988 */
- "\xe5\xa1\x80\0" /* offset 11992 */
- "\xe5\xa2\xa8\0" /* offset 11996 */
- "\xe5\xb1\xa4\0" /* offset 12000 */
- "\xe6\x82\x94\0" /* offset 12004 */
- "\xe6\x85\xa8\0" /* offset 12008 */
- "\xe6\x86\x8e\0" /* offset 12012 */
- "\xe6\x87\xb2\0" /* offset 12016 */
- "\xe6\x95\x8f\0" /* offset 12020 */
- "\xe6\x97\xa2\0" /* offset 12024 */
- "\xe6\x9a\x91\0" /* offset 12028 */
- "\xe6\xa2\x85\0" /* offset 12032 */
- "\xe6\xb5\xb7\0" /* offset 12036 */
- "\xe6\xb8\x9a\0" /* offset 12040 */
- "\xe6\xbc\xa2\0" /* offset 12044 */
- "\xe7\x85\xae\0" /* offset 12048 */
- "\xe7\x88\xab\0" /* offset 12052 */
- "\xe7\x90\xa2\0" /* offset 12056 */
- "\xe7\xa2\x91\0" /* offset 12060 */
- "\xe7\xa5\x89\0" /* offset 12064 */
- "\xe7\xa5\x88\0" /* offset 12068 */
- "\xe7\xa5\x90\0" /* offset 12072 */
- "\xe7\xa5\x96\0" /* offset 12076 */
- "\xe7\xa6\x8d\0" /* offset 12080 */
- "\xe7\xa6\x8e\0" /* offset 12084 */
- "\xe7\xa9\x80\0" /* offset 12088 */
- "\xe7\xaa\x81\0" /* offset 12092 */
- "\xe7\xaf\x80\0" /* offset 12096 */
- "\xe7\xb8\x89\0" /* offset 12100 */
- "\xe7\xb9\x81\0" /* offset 12104 */
- "\xe7\xbd\xb2\0" /* offset 12108 */
- "\xe8\x80\x85\0" /* offset 12112 */
- "\xe8\x87\xad\0" /* offset 12116 */
- "\xe8\x89\xb9\0" /* offset 12120 */
- "\xe8\x91\x97\0" /* offset 12124 */
- "\xe8\xa4\x90\0" /* offset 12128 */
- "\xe8\xa6\x96\0" /* offset 12132 */
- "\xe8\xac\x81\0" /* offset 12136 */
- "\xe8\xac\xb9\0" /* offset 12140 */
- "\xe8\xb3\x93\0" /* offset 12144 */
- "\xe8\xb4\x88\0" /* offset 12148 */
- "\xe8\xbe\xb6\0" /* offset 12152 */
- "\xe9\x9b\xa3\0" /* offset 12156 */
- "\xe9\x9f\xbf\0" /* offset 12160 */
- "\xe9\xa0\xbb\0" /* offset 12164 */
- "\xe6\x81\xb5\0" /* offset 12168 */
- "\xf0\xa4\x8b\xae\0" /* offset 12172 */
- "\xe8\x88\x98\0" /* offset 12177 */
- "\xe4\xb8\xa6\0" /* offset 12181 */
- "\xe5\x86\xb5\0" /* offset 12185 */
- "\xe5\x85\xa8\0" /* offset 12189 */
- "\xe4\xbe\x80\0" /* offset 12193 */
- "\xe5\x85\x85\0" /* offset 12197 */
- "\xe5\x86\x80\0" /* offset 12201 */
- "\xe5\x8b\x87\0" /* offset 12205 */
- "\xe5\x8b\xba\0" /* offset 12209 */
- "\xe5\x95\x95\0" /* offset 12213 */
- "\xe5\x96\x99\0" /* offset 12217 */
- "\xe5\x97\xa2\0" /* offset 12221 */
- "\xe5\xa2\xb3\0" /* offset 12225 */
- "\xe5\xa5\x84\0" /* offset 12229 */
- "\xe5\xa5\x94\0" /* offset 12233 */
- "\xe5\xa9\xa2\0" /* offset 12237 */
- "\xe5\xac\xa8\0" /* offset 12241 */
- "\xe5\xbb\x92\0" /* offset 12245 */
- "\xe5\xbb\x99\0" /* offset 12249 */
- "\xe5\xbd\xa9\0" /* offset 12253 */
- "\xe5\xbe\xad\0" /* offset 12257 */
- "\xe6\x83\x98\0" /* offset 12261 */
- "\xe6\x85\x8e\0" /* offset 12265 */
- "\xe6\x84\x88\0" /* offset 12269 */
- "\xe6\x85\xa0\0" /* offset 12273 */
- "\xe6\x88\xb4\0" /* offset 12277 */
- "\xe6\x8f\x84\0" /* offset 12281 */
- "\xe6\x90\x9c\0" /* offset 12285 */
- "\xe6\x91\x92\0" /* offset 12289 */
- "\xe6\x95\x96\0" /* offset 12293 */
- "\xe6\x9c\x9b\0" /* offset 12297 */
- "\xe6\x9d\x96\0" /* offset 12301 */
- "\xe6\xbb\x9b\0" /* offset 12305 */
- "\xe6\xbb\x8b\0" /* offset 12309 */
- "\xe7\x80\x9e\0" /* offset 12313 */
- "\xe7\x9e\xa7\0" /* offset 12317 */
- "\xe7\x88\xb5\0" /* offset 12321 */
- "\xe7\x8a\xaf\0" /* offset 12325 */
- "\xe7\x91\xb1\0" /* offset 12329 */
- "\xe7\x94\x86\0" /* offset 12333 */
- "\xe7\x94\xbb\0" /* offset 12337 */
- "\xe7\x98\x9d\0" /* offset 12341 */
- "\xe7\x98\x9f\0" /* offset 12345 */
- "\xe7\x9b\x9b\0" /* offset 12349 */
- "\xe7\x9b\xb4\0" /* offset 12353 */
- "\xe7\x9d\x8a\0" /* offset 12357 */
- "\xe7\x9d\x80\0" /* offset 12361 */
- "\xe7\xa3\x8c\0" /* offset 12365 */
- "\xe7\xaa\xb1\0" /* offset 12369 */
- "\xe7\xb1\xbb\0" /* offset 12373 */
- "\xe7\xb5\x9b\0" /* offset 12377 */
- "\xe7\xbc\xbe\0" /* offset 12381 */
- "\xe8\x8d\x92\0" /* offset 12385 */
- "\xe8\x8f\xaf\0" /* offset 12389 */
- "\xe8\x9d\xb9\0" /* offset 12393 */
- "\xe8\xa5\x81\0" /* offset 12397 */
- "\xe8\xa6\x86\0" /* offset 12401 */
- "\xe8\xaa\xbf\0" /* offset 12405 */
- "\xe8\xab\x8b\0" /* offset 12409 */
- "\xe8\xab\xad\0" /* offset 12413 */
- "\xe8\xae\x8a\0" /* offset 12417 */
- "\xe8\xbc\xb8\0" /* offset 12421 */
- "\xe9\x81\xb2\0" /* offset 12425 */
- "\xe9\x86\x99\0" /* offset 12429 */
- "\xe9\x89\xb6\0" /* offset 12433 */
- "\xe9\x99\xbc\0" /* offset 12437 */
- "\xe9\x9f\x9b\0" /* offset 12441 */
- "\xe9\xa0\x8b\0" /* offset 12445 */
- "\xe9\xac\x92\0" /* offset 12449 */
- "\xf0\xa2\xa1\x8a\0" /* offset 12453 */
- "\xf0\xa2\xa1\x84\0" /* offset 12458 */
- "\xf0\xa3\x8f\x95\0" /* offset 12463 */
- "\xe3\xae\x9d\0" /* offset 12468 */
- "\xe4\x80\x98\0" /* offset 12472 */
- "\xe4\x80\xb9\0" /* offset 12476 */
- "\xf0\xa5\x89\x89\0" /* offset 12480 */
- "\xf0\xa5\xb3\x90\0" /* offset 12485 */
- "\xf0\xa7\xbb\x93\0" /* offset 12490 */
- "\xe9\xbd\x83\0" /* offset 12495 */
- "\xe9\xbe\x8e\0" /* offset 12499 */
- "\x66\x66\0" /* offset 12503 */
- "\x66\x69\0" /* offset 12506 */
- "\x66\x6c\0" /* offset 12509 */
- "\x66\x66\x69\0" /* offset 12512 */
- "\x66\x66\x6c\0" /* offset 12516 */
- "\x73\x74\0" /* offset 12520 */
- "\xd5\xb4\xd5\xb6\0" /* offset 12523 */
- "\xd5\xb4\xd5\xa5\0" /* offset 12528 */
- "\xd5\xb4\xd5\xab\0" /* offset 12533 */
- "\xd5\xbe\xd5\xb6\0" /* offset 12538 */
- "\xd5\xb4\xd5\xad\0" /* offset 12543 */
- "\xd7\x99\xd6\xb4\0" /* offset 12548 */
- "\xd7\xb2\xd6\xb7\0" /* offset 12553 */
- "\xd7\xa2\0" /* offset 12558 */
- "\xd7\x94\0" /* offset 12561 */
- "\xd7\x9b\0" /* offset 12564 */
- "\xd7\x9c\0" /* offset 12567 */
- "\xd7\x9d\0" /* offset 12570 */
- "\xd7\xa8\0" /* offset 12573 */
- "\xd7\xaa\0" /* offset 12576 */
- "\xd7\xa9\xd7\x81\0" /* offset 12579 */
- "\xd7\xa9\xd7\x82\0" /* offset 12584 */
- "\xd7\xa9\xd6\xbc\xd7\x81\0" /* offset 12589 */
- "\xd7\xa9\xd6\xbc\xd7\x82\0" /* offset 12596 */
- "\xd7\x90\xd6\xb7\0" /* offset 12603 */
- "\xd7\x90\xd6\xb8\0" /* offset 12608 */
- "\xd7\x90\xd6\xbc\0" /* offset 12613 */
- "\xd7\x91\xd6\xbc\0" /* offset 12618 */
- "\xd7\x92\xd6\xbc\0" /* offset 12623 */
- "\xd7\x93\xd6\xbc\0" /* offset 12628 */
- "\xd7\x94\xd6\xbc\0" /* offset 12633 */
- "\xd7\x95\xd6\xbc\0" /* offset 12638 */
- "\xd7\x96\xd6\xbc\0" /* offset 12643 */
- "\xd7\x98\xd6\xbc\0" /* offset 12648 */
- "\xd7\x99\xd6\xbc\0" /* offset 12653 */
- "\xd7\x9a\xd6\xbc\0" /* offset 12658 */
- "\xd7\x9b\xd6\xbc\0" /* offset 12663 */
- "\xd7\x9c\xd6\xbc\0" /* offset 12668 */
- "\xd7\x9e\xd6\xbc\0" /* offset 12673 */
- "\xd7\xa0\xd6\xbc\0" /* offset 12678 */
- "\xd7\xa1\xd6\xbc\0" /* offset 12683 */
- "\xd7\xa3\xd6\xbc\0" /* offset 12688 */
- "\xd7\xa4\xd6\xbc\0" /* offset 12693 */
- "\xd7\xa6\xd6\xbc\0" /* offset 12698 */
- "\xd7\xa7\xd6\xbc\0" /* offset 12703 */
- "\xd7\xa8\xd6\xbc\0" /* offset 12708 */
- "\xd7\xa9\xd6\xbc\0" /* offset 12713 */
- "\xd7\xaa\xd6\xbc\0" /* offset 12718 */
- "\xd7\x95\xd6\xb9\0" /* offset 12723 */
- "\xd7\x91\xd6\xbf\0" /* offset 12728 */
- "\xd7\x9b\xd6\xbf\0" /* offset 12733 */
- "\xd7\xa4\xd6\xbf\0" /* offset 12738 */
- "\xd7\x90\xd7\x9c\0" /* offset 12743 */
- "\xd9\xb1\0" /* offset 12748 */
- "\xd9\xbb\0" /* offset 12751 */
- "\xd9\xbe\0" /* offset 12754 */
- "\xda\x80\0" /* offset 12757 */
- "\xd9\xba\0" /* offset 12760 */
- "\xd9\xbf\0" /* offset 12763 */
- "\xd9\xb9\0" /* offset 12766 */
- "\xda\xa4\0" /* offset 12769 */
- "\xda\xa6\0" /* offset 12772 */
- "\xda\x84\0" /* offset 12775 */
- "\xda\x83\0" /* offset 12778 */
- "\xda\x86\0" /* offset 12781 */
- "\xda\x87\0" /* offset 12784 */
- "\xda\x8d\0" /* offset 12787 */
- "\xda\x8c\0" /* offset 12790 */
- "\xda\x8e\0" /* offset 12793 */
- "\xda\x88\0" /* offset 12796 */
- "\xda\x98\0" /* offset 12799 */
- "\xda\x91\0" /* offset 12802 */
- "\xda\xa9\0" /* offset 12805 */
- "\xda\xaf\0" /* offset 12808 */
- "\xda\xb3\0" /* offset 12811 */
- "\xda\xb1\0" /* offset 12814 */
- "\xda\xba\0" /* offset 12817 */
- "\xda\xbb\0" /* offset 12820 */
- "\xdb\x81\0" /* offset 12823 */
- "\xda\xbe\0" /* offset 12826 */
- "\xdb\x92\0" /* offset 12829 */
- "\xda\xad\0" /* offset 12832 */
- "\xdb\x87\0" /* offset 12835 */
- "\xdb\x86\0" /* offset 12838 */
- "\xdb\x88\0" /* offset 12841 */
- "\xdb\x8b\0" /* offset 12844 */
- "\xdb\x85\0" /* offset 12847 */
- "\xdb\x89\0" /* offset 12850 */
- "\xdb\x90\0" /* offset 12853 */
- "\xd9\x89\0" /* offset 12856 */
- "\xd9\x8a\xd9\x94\xd8\xa7\0" /* offset 12859 */
- "\xd9\x8a\xd9\x94\xdb\x95\0" /* offset 12866 */
- "\xd9\x8a\xd9\x94\xd9\x88\0" /* offset 12873 */
- "\xd9\x8a\xd9\x94\xdb\x87\0" /* offset 12880 */
- "\xd9\x8a\xd9\x94\xdb\x86\0" /* offset 12887 */
- "\xd9\x8a\xd9\x94\xdb\x88\0" /* offset 12894 */
- "\xd9\x8a\xd9\x94\xdb\x90\0" /* offset 12901 */
- "\xd9\x8a\xd9\x94\xd9\x89\0" /* offset 12908 */
- "\xdb\x8c\0" /* offset 12915 */
- "\xd9\x8a\xd9\x94\xd8\xac\0" /* offset 12918 */
- "\xd9\x8a\xd9\x94\xd8\xad\0" /* offset 12925 */
- "\xd9\x8a\xd9\x94\xd9\x85\0" /* offset 12932 */
- "\xd9\x8a\xd9\x94\xd9\x8a\0" /* offset 12939 */
- "\xd8\xa8\xd8\xac\0" /* offset 12946 */
- "\xd8\xa8\xd8\xad\0" /* offset 12951 */
- "\xd8\xa8\xd8\xae\0" /* offset 12956 */
- "\xd8\xa8\xd9\x85\0" /* offset 12961 */
- "\xd8\xa8\xd9\x89\0" /* offset 12966 */
- "\xd8\xa8\xd9\x8a\0" /* offset 12971 */
- "\xd8\xaa\xd8\xac\0" /* offset 12976 */
- "\xd8\xaa\xd8\xad\0" /* offset 12981 */
- "\xd8\xaa\xd8\xae\0" /* offset 12986 */
- "\xd8\xaa\xd9\x85\0" /* offset 12991 */
- "\xd8\xaa\xd9\x89\0" /* offset 12996 */
- "\xd8\xaa\xd9\x8a\0" /* offset 13001 */
- "\xd8\xab\xd8\xac\0" /* offset 13006 */
- "\xd8\xab\xd9\x85\0" /* offset 13011 */
- "\xd8\xab\xd9\x89\0" /* offset 13016 */
- "\xd8\xab\xd9\x8a\0" /* offset 13021 */
- "\xd8\xac\xd8\xad\0" /* offset 13026 */
- "\xd8\xac\xd9\x85\0" /* offset 13031 */
- "\xd8\xad\xd8\xac\0" /* offset 13036 */
- "\xd8\xad\xd9\x85\0" /* offset 13041 */
- "\xd8\xae\xd8\xac\0" /* offset 13046 */
- "\xd8\xae\xd8\xad\0" /* offset 13051 */
- "\xd8\xae\xd9\x85\0" /* offset 13056 */
- "\xd8\xb3\xd8\xac\0" /* offset 13061 */
- "\xd8\xb3\xd8\xad\0" /* offset 13066 */
- "\xd8\xb3\xd8\xae\0" /* offset 13071 */
- "\xd8\xb3\xd9\x85\0" /* offset 13076 */
- "\xd8\xb5\xd8\xad\0" /* offset 13081 */
- "\xd8\xb5\xd9\x85\0" /* offset 13086 */
- "\xd8\xb6\xd8\xac\0" /* offset 13091 */
- "\xd8\xb6\xd8\xad\0" /* offset 13096 */
- "\xd8\xb6\xd8\xae\0" /* offset 13101 */
- "\xd8\xb6\xd9\x85\0" /* offset 13106 */
- "\xd8\xb7\xd8\xad\0" /* offset 13111 */
- "\xd8\xb7\xd9\x85\0" /* offset 13116 */
- "\xd8\xb8\xd9\x85\0" /* offset 13121 */
- "\xd8\xb9\xd8\xac\0" /* offset 13126 */
- "\xd8\xb9\xd9\x85\0" /* offset 13131 */
- "\xd8\xba\xd8\xac\0" /* offset 13136 */
- "\xd8\xba\xd9\x85\0" /* offset 13141 */
- "\xd9\x81\xd8\xac\0" /* offset 13146 */
- "\xd9\x81\xd8\xad\0" /* offset 13151 */
- "\xd9\x81\xd8\xae\0" /* offset 13156 */
- "\xd9\x81\xd9\x85\0" /* offset 13161 */
- "\xd9\x81\xd9\x89\0" /* offset 13166 */
- "\xd9\x81\xd9\x8a\0" /* offset 13171 */
- "\xd9\x82\xd8\xad\0" /* offset 13176 */
- "\xd9\x82\xd9\x85\0" /* offset 13181 */
- "\xd9\x82\xd9\x89\0" /* offset 13186 */
- "\xd9\x82\xd9\x8a\0" /* offset 13191 */
- "\xd9\x83\xd8\xa7\0" /* offset 13196 */
- "\xd9\x83\xd8\xac\0" /* offset 13201 */
- "\xd9\x83\xd8\xad\0" /* offset 13206 */
- "\xd9\x83\xd8\xae\0" /* offset 13211 */
- "\xd9\x83\xd9\x84\0" /* offset 13216 */
- "\xd9\x83\xd9\x85\0" /* offset 13221 */
- "\xd9\x83\xd9\x89\0" /* offset 13226 */
- "\xd9\x83\xd9\x8a\0" /* offset 13231 */
- "\xd9\x84\xd8\xac\0" /* offset 13236 */
- "\xd9\x84\xd8\xad\0" /* offset 13241 */
- "\xd9\x84\xd8\xae\0" /* offset 13246 */
- "\xd9\x84\xd9\x85\0" /* offset 13251 */
- "\xd9\x84\xd9\x89\0" /* offset 13256 */
- "\xd9\x84\xd9\x8a\0" /* offset 13261 */
- "\xd9\x85\xd8\xac\0" /* offset 13266 */
- "\xd9\x85\xd8\xad\0" /* offset 13271 */
- "\xd9\x85\xd8\xae\0" /* offset 13276 */
- "\xd9\x85\xd9\x85\0" /* offset 13281 */
- "\xd9\x85\xd9\x89\0" /* offset 13286 */
- "\xd9\x85\xd9\x8a\0" /* offset 13291 */
- "\xd9\x86\xd8\xac\0" /* offset 13296 */
- "\xd9\x86\xd8\xad\0" /* offset 13301 */
- "\xd9\x86\xd8\xae\0" /* offset 13306 */
- "\xd9\x86\xd9\x85\0" /* offset 13311 */
- "\xd9\x86\xd9\x89\0" /* offset 13316 */
- "\xd9\x86\xd9\x8a\0" /* offset 13321 */
- "\xd9\x87\xd8\xac\0" /* offset 13326 */
- "\xd9\x87\xd9\x85\0" /* offset 13331 */
- "\xd9\x87\xd9\x89\0" /* offset 13336 */
- "\xd9\x87\xd9\x8a\0" /* offset 13341 */
- "\xd9\x8a\xd8\xac\0" /* offset 13346 */
- "\xd9\x8a\xd8\xad\0" /* offset 13351 */
- "\xd9\x8a\xd8\xae\0" /* offset 13356 */
- "\xd9\x8a\xd9\x85\0" /* offset 13361 */
- "\xd9\x8a\xd9\x89\0" /* offset 13366 */
- "\xd9\x8a\xd9\x8a\0" /* offset 13371 */
- "\xd8\xb0\xd9\xb0\0" /* offset 13376 */
- "\xd8\xb1\xd9\xb0\0" /* offset 13381 */
- "\xd9\x89\xd9\xb0\0" /* offset 13386 */
- "\x20\xd9\x8c\xd9\x91\0" /* offset 13391 */
- "\x20\xd9\x8d\xd9\x91\0" /* offset 13397 */
- "\x20\xd9\x8e\xd9\x91\0" /* offset 13403 */
- "\x20\xd9\x8f\xd9\x91\0" /* offset 13409 */
- "\x20\xd9\x90\xd9\x91\0" /* offset 13415 */
- "\x20\xd9\x91\xd9\xb0\0" /* offset 13421 */
- "\xd9\x8a\xd9\x94\xd8\xb1\0" /* offset 13427 */
- "\xd9\x8a\xd9\x94\xd8\xb2\0" /* offset 13434 */
- "\xd9\x8a\xd9\x94\xd9\x86\0" /* offset 13441 */
- "\xd8\xa8\xd8\xb1\0" /* offset 13448 */
- "\xd8\xa8\xd8\xb2\0" /* offset 13453 */
- "\xd8\xa8\xd9\x86\0" /* offset 13458 */
- "\xd8\xaa\xd8\xb1\0" /* offset 13463 */
- "\xd8\xaa\xd8\xb2\0" /* offset 13468 */
- "\xd8\xaa\xd9\x86\0" /* offset 13473 */
- "\xd8\xab\xd8\xb1\0" /* offset 13478 */
- "\xd8\xab\xd8\xb2\0" /* offset 13483 */
- "\xd8\xab\xd9\x86\0" /* offset 13488 */
- "\xd9\x85\xd8\xa7\0" /* offset 13493 */
- "\xd9\x86\xd8\xb1\0" /* offset 13498 */
- "\xd9\x86\xd8\xb2\0" /* offset 13503 */
- "\xd9\x86\xd9\x86\0" /* offset 13508 */
- "\xd9\x8a\xd8\xb1\0" /* offset 13513 */
- "\xd9\x8a\xd8\xb2\0" /* offset 13518 */
- "\xd9\x8a\xd9\x86\0" /* offset 13523 */
- "\xd9\x8a\xd9\x94\xd8\xae\0" /* offset 13528 */
- "\xd9\x8a\xd9\x94\xd9\x87\0" /* offset 13535 */
- "\xd8\xa8\xd9\x87\0" /* offset 13542 */
- "\xd8\xaa\xd9\x87\0" /* offset 13547 */
- "\xd8\xb5\xd8\xae\0" /* offset 13552 */
- "\xd9\x84\xd9\x87\0" /* offset 13557 */
- "\xd9\x86\xd9\x87\0" /* offset 13562 */
- "\xd9\x87\xd9\xb0\0" /* offset 13567 */
- "\xd9\x8a\xd9\x87\0" /* offset 13572 */
- "\xd8\xab\xd9\x87\0" /* offset 13577 */
- "\xd8\xb3\xd9\x87\0" /* offset 13582 */
- "\xd8\xb4\xd9\x85\0" /* offset 13587 */
- "\xd8\xb4\xd9\x87\0" /* offset 13592 */
- "\xd9\x80\xd9\x8e\xd9\x91\0" /* offset 13597 */
- "\xd9\x80\xd9\x8f\xd9\x91\0" /* offset 13604 */
- "\xd9\x80\xd9\x90\xd9\x91\0" /* offset 13611 */
- "\xd8\xb7\xd9\x89\0" /* offset 13618 */
- "\xd8\xb7\xd9\x8a\0" /* offset 13623 */
- "\xd8\xb9\xd9\x89\0" /* offset 13628 */
- "\xd8\xb9\xd9\x8a\0" /* offset 13633 */
- "\xd8\xba\xd9\x89\0" /* offset 13638 */
- "\xd8\xba\xd9\x8a\0" /* offset 13643 */
- "\xd8\xb3\xd9\x89\0" /* offset 13648 */
- "\xd8\xb3\xd9\x8a\0" /* offset 13653 */
- "\xd8\xb4\xd9\x89\0" /* offset 13658 */
- "\xd8\xb4\xd9\x8a\0" /* offset 13663 */
- "\xd8\xad\xd9\x89\0" /* offset 13668 */
- "\xd8\xad\xd9\x8a\0" /* offset 13673 */
- "\xd8\xac\xd9\x89\0" /* offset 13678 */
- "\xd8\xac\xd9\x8a\0" /* offset 13683 */
- "\xd8\xae\xd9\x89\0" /* offset 13688 */
- "\xd8\xae\xd9\x8a\0" /* offset 13693 */
- "\xd8\xb5\xd9\x89\0" /* offset 13698 */
- "\xd8\xb5\xd9\x8a\0" /* offset 13703 */
- "\xd8\xb6\xd9\x89\0" /* offset 13708 */
- "\xd8\xb6\xd9\x8a\0" /* offset 13713 */
- "\xd8\xb4\xd8\xac\0" /* offset 13718 */
- "\xd8\xb4\xd8\xad\0" /* offset 13723 */
- "\xd8\xb4\xd8\xae\0" /* offset 13728 */
- "\xd8\xb4\xd8\xb1\0" /* offset 13733 */
- "\xd8\xb3\xd8\xb1\0" /* offset 13738 */
- "\xd8\xb5\xd8\xb1\0" /* offset 13743 */
- "\xd8\xb6\xd8\xb1\0" /* offset 13748 */
- "\xd8\xa7\xd9\x8b\0" /* offset 13753 */
- "\xd8\xaa\xd8\xac\xd9\x85\0" /* offset 13758 */
- "\xd8\xaa\xd8\xad\xd8\xac\0" /* offset 13765 */
- "\xd8\xaa\xd8\xad\xd9\x85\0" /* offset 13772 */
- "\xd8\xaa\xd8\xae\xd9\x85\0" /* offset 13779 */
- "\xd8\xaa\xd9\x85\xd8\xac\0" /* offset 13786 */
- "\xd8\xaa\xd9\x85\xd8\xad\0" /* offset 13793 */
- "\xd8\xaa\xd9\x85\xd8\xae\0" /* offset 13800 */
- "\xd8\xac\xd9\x85\xd8\xad\0" /* offset 13807 */
- "\xd8\xad\xd9\x85\xd9\x8a\0" /* offset 13814 */
- "\xd8\xad\xd9\x85\xd9\x89\0" /* offset 13821 */
- "\xd8\xb3\xd8\xad\xd8\xac\0" /* offset 13828 */
- "\xd8\xb3\xd8\xac\xd8\xad\0" /* offset 13835 */
- "\xd8\xb3\xd8\xac\xd9\x89\0" /* offset 13842 */
- "\xd8\xb3\xd9\x85\xd8\xad\0" /* offset 13849 */
- "\xd8\xb3\xd9\x85\xd8\xac\0" /* offset 13856 */
- "\xd8\xb3\xd9\x85\xd9\x85\0" /* offset 13863 */
- "\xd8\xb5\xd8\xad\xd8\xad\0" /* offset 13870 */
- "\xd8\xb5\xd9\x85\xd9\x85\0" /* offset 13877 */
- "\xd8\xb4\xd8\xad\xd9\x85\0" /* offset 13884 */
- "\xd8\xb4\xd8\xac\xd9\x8a\0" /* offset 13891 */
- "\xd8\xb4\xd9\x85\xd8\xae\0" /* offset 13898 */
- "\xd8\xb4\xd9\x85\xd9\x85\0" /* offset 13905 */
- "\xd8\xb6\xd8\xad\xd9\x89\0" /* offset 13912 */
- "\xd8\xb6\xd8\xae\xd9\x85\0" /* offset 13919 */
- "\xd8\xb7\xd9\x85\xd8\xad\0" /* offset 13926 */
- "\xd8\xb7\xd9\x85\xd9\x85\0" /* offset 13933 */
- "\xd8\xb7\xd9\x85\xd9\x8a\0" /* offset 13940 */
- "\xd8\xb9\xd8\xac\xd9\x85\0" /* offset 13947 */
- "\xd8\xb9\xd9\x85\xd9\x85\0" /* offset 13954 */
- "\xd8\xb9\xd9\x85\xd9\x89\0" /* offset 13961 */
- "\xd8\xba\xd9\x85\xd9\x85\0" /* offset 13968 */
- "\xd8\xba\xd9\x85\xd9\x8a\0" /* offset 13975 */
- "\xd8\xba\xd9\x85\xd9\x89\0" /* offset 13982 */
- "\xd9\x81\xd8\xae\xd9\x85\0" /* offset 13989 */
- "\xd9\x82\xd9\x85\xd8\xad\0" /* offset 13996 */
- "\xd9\x82\xd9\x85\xd9\x85\0" /* offset 14003 */
- "\xd9\x84\xd8\xad\xd9\x85\0" /* offset 14010 */
- "\xd9\x84\xd8\xad\xd9\x8a\0" /* offset 14017 */
- "\xd9\x84\xd8\xad\xd9\x89\0" /* offset 14024 */
- "\xd9\x84\xd8\xac\xd8\xac\0" /* offset 14031 */
- "\xd9\x84\xd8\xae\xd9\x85\0" /* offset 14038 */
- "\xd9\x84\xd9\x85\xd8\xad\0" /* offset 14045 */
- "\xd9\x85\xd8\xad\xd8\xac\0" /* offset 14052 */
- "\xd9\x85\xd8\xad\xd9\x85\0" /* offset 14059 */
- "\xd9\x85\xd8\xad\xd9\x8a\0" /* offset 14066 */
- "\xd9\x85\xd8\xac\xd8\xad\0" /* offset 14073 */
- "\xd9\x85\xd8\xac\xd9\x85\0" /* offset 14080 */
- "\xd9\x85\xd8\xae\xd8\xac\0" /* offset 14087 */
- "\xd9\x85\xd8\xae\xd9\x85\0" /* offset 14094 */
- "\xd9\x85\xd8\xac\xd8\xae\0" /* offset 14101 */
- "\xd9\x87\xd9\x85\xd8\xac\0" /* offset 14108 */
- "\xd9\x87\xd9\x85\xd9\x85\0" /* offset 14115 */
- "\xd9\x86\xd8\xad\xd9\x85\0" /* offset 14122 */
- "\xd9\x86\xd8\xad\xd9\x89\0" /* offset 14129 */
- "\xd9\x86\xd8\xac\xd9\x85\0" /* offset 14136 */
- "\xd9\x86\xd8\xac\xd9\x89\0" /* offset 14143 */
- "\xd9\x86\xd9\x85\xd9\x8a\0" /* offset 14150 */
- "\xd9\x86\xd9\x85\xd9\x89\0" /* offset 14157 */
- "\xd9\x8a\xd9\x85\xd9\x85\0" /* offset 14164 */
- "\xd8\xa8\xd8\xae\xd9\x8a\0" /* offset 14171 */
- "\xd8\xaa\xd8\xac\xd9\x8a\0" /* offset 14178 */
- "\xd8\xaa\xd8\xac\xd9\x89\0" /* offset 14185 */
- "\xd8\xaa\xd8\xae\xd9\x8a\0" /* offset 14192 */
- "\xd8\xaa\xd8\xae\xd9\x89\0" /* offset 14199 */
- "\xd8\xaa\xd9\x85\xd9\x8a\0" /* offset 14206 */
- "\xd8\xaa\xd9\x85\xd9\x89\0" /* offset 14213 */
- "\xd8\xac\xd9\x85\xd9\x8a\0" /* offset 14220 */
- "\xd8\xac\xd8\xad\xd9\x89\0" /* offset 14227 */
- "\xd8\xac\xd9\x85\xd9\x89\0" /* offset 14234 */
- "\xd8\xb3\xd8\xae\xd9\x89\0" /* offset 14241 */
- "\xd8\xb5\xd8\xad\xd9\x8a\0" /* offset 14248 */
- "\xd8\xb4\xd8\xad\xd9\x8a\0" /* offset 14255 */
- "\xd8\xb6\xd8\xad\xd9\x8a\0" /* offset 14262 */
- "\xd9\x84\xd8\xac\xd9\x8a\0" /* offset 14269 */
- "\xd9\x84\xd9\x85\xd9\x8a\0" /* offset 14276 */
- "\xd9\x8a\xd8\xad\xd9\x8a\0" /* offset 14283 */
- "\xd9\x8a\xd8\xac\xd9\x8a\0" /* offset 14290 */
- "\xd9\x8a\xd9\x85\xd9\x8a\0" /* offset 14297 */
- "\xd9\x85\xd9\x85\xd9\x8a\0" /* offset 14304 */
- "\xd9\x82\xd9\x85\xd9\x8a\0" /* offset 14311 */
- "\xd9\x86\xd8\xad\xd9\x8a\0" /* offset 14318 */
- "\xd8\xb9\xd9\x85\xd9\x8a\0" /* offset 14325 */
- "\xd9\x83\xd9\x85\xd9\x8a\0" /* offset 14332 */
- "\xd9\x86\xd8\xac\xd8\xad\0" /* offset 14339 */
- "\xd9\x85\xd8\xae\xd9\x8a\0" /* offset 14346 */
- "\xd9\x84\xd8\xac\xd9\x85\0" /* offset 14353 */
- "\xd9\x83\xd9\x85\xd9\x85\0" /* offset 14360 */
- "\xd8\xac\xd8\xad\xd9\x8a\0" /* offset 14367 */
- "\xd8\xad\xd8\xac\xd9\x8a\0" /* offset 14374 */
- "\xd9\x85\xd8\xac\xd9\x8a\0" /* offset 14381 */
- "\xd9\x81\xd9\x85\xd9\x8a\0" /* offset 14388 */
- "\xd8\xa8\xd8\xad\xd9\x8a\0" /* offset 14395 */
- "\xd8\xb3\xd8\xae\xd9\x8a\0" /* offset 14402 */
- "\xd9\x86\xd8\xac\xd9\x8a\0" /* offset 14409 */
- "\xd8\xb5\xd9\x84\xdb\x92\0" /* offset 14416 */
- "\xd9\x82\xd9\x84\xdb\x92\0" /* offset 14423 */
- "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\0" /* offset 14430 */
- "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1\0" /* offset 14439 */
- "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf\0" /* offset 14448 */
- "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85\0" /* offset 14457 */
- "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84\0" /* offset 14466 */
- "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\0" /* offset 14475 */
- "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14484 */
- "\xd8\xb5\xd9\x84\xd9\x89\0" /* offset 14493 */
- "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14500 */
- "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87\0" /* offset 14534 */
- "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84\0" /* offset 14550 */
- "\x2c\0" /* offset 14559 */
- "\xe3\x80\x81\0" /* offset 14561 */
- "\xe3\x80\x82\0" /* offset 14565 */
- "\x3a\0" /* offset 14569 */
- "\x21\0" /* offset 14571 */
- "\x3f\0" /* offset 14573 */
- "\xe3\x80\x96\0" /* offset 14575 */
- "\xe3\x80\x97\0" /* offset 14579 */
- "\xe2\x80\x94\0" /* offset 14583 */
- "\xe2\x80\x93\0" /* offset 14587 */
- "\x5f\0" /* offset 14591 */
- "\x7b\0" /* offset 14593 */
- "\x7d\0" /* offset 14595 */
- "\xe3\x80\x94\0" /* offset 14597 */
- "\xe3\x80\x95\0" /* offset 14601 */
- "\xe3\x80\x90\0" /* offset 14605 */
- "\xe3\x80\x91\0" /* offset 14609 */
- "\xe3\x80\x8a\0" /* offset 14613 */
- "\xe3\x80\x8b\0" /* offset 14617 */
- "\xe3\x80\x8c\0" /* offset 14621 */
- "\xe3\x80\x8d\0" /* offset 14625 */
- "\xe3\x80\x8e\0" /* offset 14629 */
- "\xe3\x80\x8f\0" /* offset 14633 */
- "\x5b\0" /* offset 14637 */
- "\x5d\0" /* offset 14639 */
- "\x23\0" /* offset 14641 */
- "\x26\0" /* offset 14643 */
- "\x2a\0" /* offset 14645 */
- "\x2d\0" /* offset 14647 */
- "\x3c\0" /* offset 14649 */
- "\x3e\0" /* offset 14651 */
- "\x5c\0" /* offset 14653 */
- "\x24\0" /* offset 14655 */
- "\x25\0" /* offset 14657 */
- "\x40\0" /* offset 14659 */
- "\x20\xd9\x8b\0" /* offset 14661 */
- "\xd9\x80\xd9\x8b\0" /* offset 14665 */
- "\x20\xd9\x8c\0" /* offset 14670 */
- "\x20\xd9\x8d\0" /* offset 14674 */
- "\x20\xd9\x8e\0" /* offset 14678 */
- "\xd9\x80\xd9\x8e\0" /* offset 14682 */
- "\x20\xd9\x8f\0" /* offset 14687 */
- "\xd9\x80\xd9\x8f\0" /* offset 14691 */
- "\x20\xd9\x90\0" /* offset 14696 */
- "\xd9\x80\xd9\x90\0" /* offset 14700 */
- "\x20\xd9\x91\0" /* offset 14705 */
- "\xd9\x80\xd9\x91\0" /* offset 14709 */
- "\x20\xd9\x92\0" /* offset 14714 */
- "\xd9\x80\xd9\x92\0" /* offset 14718 */
- "\xd8\xa1\0" /* offset 14723 */
- "\xd8\xa7\0" /* offset 14726 */
- "\xd8\xa8\0" /* offset 14729 */
- "\xd8\xa9\0" /* offset 14732 */
- "\xd8\xaa\0" /* offset 14735 */
- "\xd8\xab\0" /* offset 14738 */
- "\xd8\xac\0" /* offset 14741 */
- "\xd8\xad\0" /* offset 14744 */
- "\xd8\xae\0" /* offset 14747 */
- "\xd8\xaf\0" /* offset 14750 */
- "\xd8\xb0\0" /* offset 14753 */
- "\xd8\xb1\0" /* offset 14756 */
- "\xd8\xb2\0" /* offset 14759 */
- "\xd8\xb3\0" /* offset 14762 */
- "\xd8\xb4\0" /* offset 14765 */
- "\xd8\xb5\0" /* offset 14768 */
- "\xd8\xb6\0" /* offset 14771 */
- "\xd8\xb7\0" /* offset 14774 */
- "\xd8\xb8\0" /* offset 14777 */
- "\xd8\xb9\0" /* offset 14780 */
- "\xd8\xba\0" /* offset 14783 */
- "\xd9\x81\0" /* offset 14786 */
- "\xd9\x82\0" /* offset 14789 */
- "\xd9\x83\0" /* offset 14792 */
- "\xd9\x84\0" /* offset 14795 */
- "\xd9\x85\0" /* offset 14798 */
- "\xd9\x86\0" /* offset 14801 */
- "\xd9\x87\0" /* offset 14804 */
- "\xd9\x88\0" /* offset 14807 */
- "\xd9\x8a\0" /* offset 14810 */
- "\xd9\x84\xd8\xa7\xd9\x93\0" /* offset 14813 */
- "\xd9\x84\xd8\xa7\xd9\x94\0" /* offset 14820 */
- "\xd9\x84\xd8\xa7\xd9\x95\0" /* offset 14827 */
- "\xd9\x84\xd8\xa7\0" /* offset 14834 */
- "\x22\0" /* offset 14839 */
- "\x27\0" /* offset 14841 */
- "\x2f\0" /* offset 14843 */
- "\x5e\0" /* offset 14845 */
- "\x7c\0" /* offset 14847 */
- "\x7e\0" /* offset 14849 */
- "\xe2\xa6\x85\0" /* offset 14851 */
- "\xe2\xa6\x86\0" /* offset 14855 */
- "\xe3\x83\xbb\0" /* offset 14859 */
- "\xe3\x82\xa1\0" /* offset 14863 */
- "\xe3\x82\xa3\0" /* offset 14867 */
- "\xe3\x82\xa5\0" /* offset 14871 */
- "\xe3\x82\xa7\0" /* offset 14875 */
- "\xe3\x82\xa9\0" /* offset 14879 */
- "\xe3\x83\xa3\0" /* offset 14883 */
- "\xe3\x83\xa5\0" /* offset 14887 */
- "\xe3\x83\xa7\0" /* offset 14891 */
- "\xe3\x83\x83\0" /* offset 14895 */
- "\xe3\x83\xbc\0" /* offset 14899 */
- "\xe3\x83\xb3\0" /* offset 14903 */
- "\xe3\x82\x99\0" /* offset 14907 */
- "\xe3\x82\x9a\0" /* offset 14911 */
- "\xc2\xa2\0" /* offset 14915 */
- "\xc2\xa3\0" /* offset 14918 */
- "\xc2\xac\0" /* offset 14921 */
- "\xc2\xa6\0" /* offset 14924 */
- "\xc2\xa5\0" /* offset 14927 */
- "\xe2\x82\xa9\0" /* offset 14930 */
- "\xe2\x94\x82\0" /* offset 14934 */
- "\xe2\x86\x90\0" /* offset 14938 */
- "\xe2\x86\x91\0" /* offset 14942 */
- "\xe2\x86\x92\0" /* offset 14946 */
- "\xe2\x86\x93\0" /* offset 14950 */
- "\xe2\x96\xa0\0" /* offset 14954 */
- "\xe2\x97\x8b\0" /* offset 14958 */
- "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 14962 */
- "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 14971 */
- "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 14980 */
- "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 14989 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 14998 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15007 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15020 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15033 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15046 */
- "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15059 */
- "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15072 */
- "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15081 */
- "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15090 */
- "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15103 */
- "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15116 */
- "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15129 */
- "\xc4\xb1\0" /* offset 15142 */
- "\xc8\xb7\0" /* offset 15145 */
- "\xce\x91\0" /* offset 15148 */
- "\xce\x92\0" /* offset 15151 */
- "\xce\x94\0" /* offset 15154 */
- "\xce\x95\0" /* offset 15157 */
- "\xce\x96\0" /* offset 15160 */
- "\xce\x97\0" /* offset 15163 */
- "\xce\x99\0" /* offset 15166 */
- "\xce\x9a\0" /* offset 15169 */
- "\xce\x9b\0" /* offset 15172 */
- "\xce\x9c\0" /* offset 15175 */
- "\xce\x9d\0" /* offset 15178 */
- "\xce\x9e\0" /* offset 15181 */
- "\xce\x9f\0" /* offset 15184 */
- "\xce\xa1\0" /* offset 15187 */
- "\xce\xa4\0" /* offset 15190 */
- "\xce\xa6\0" /* offset 15193 */
- "\xce\xa7\0" /* offset 15196 */
- "\xce\xa8\0" /* offset 15199 */
- "\xe2\x88\x87\0" /* offset 15202 */
- "\xce\xb1\0" /* offset 15206 */
- "\xce\xb6\0" /* offset 15209 */
- "\xce\xb7\0" /* offset 15212 */
- "\xce\xbb\0" /* offset 15215 */
- "\xce\xbd\0" /* offset 15218 */
- "\xce\xbe\0" /* offset 15221 */
- "\xce\xbf\0" /* offset 15224 */
- "\xcf\x83\0" /* offset 15227 */
- "\xcf\x84\0" /* offset 15230 */
- "\xcf\x85\0" /* offset 15233 */
- "\xcf\x88\0" /* offset 15236 */
- "\xcf\x89\0" /* offset 15239 */
- "\xe2\x88\x82\0" /* offset 15242 */
- "\xcf\x9c\0" /* offset 15246 */
- "\xcf\x9d\0" /* offset 15249 */
- "\x30\x2e\0" /* offset 15252 */
- "\x30\x2c\0" /* offset 15255 */
- "\x31\x2c\0" /* offset 15258 */
- "\x32\x2c\0" /* offset 15261 */
- "\x33\x2c\0" /* offset 15264 */
- "\x34\x2c\0" /* offset 15267 */
- "\x35\x2c\0" /* offset 15270 */
- "\x36\x2c\0" /* offset 15273 */
- "\x37\x2c\0" /* offset 15276 */
- "\x38\x2c\0" /* offset 15279 */
- "\x39\x2c\0" /* offset 15282 */
- "\x28\x41\x29\0" /* offset 15285 */
- "\x28\x42\x29\0" /* offset 15289 */
- "\x28\x43\x29\0" /* offset 15293 */
- "\x28\x44\x29\0" /* offset 15297 */
- "\x28\x45\x29\0" /* offset 15301 */
- "\x28\x46\x29\0" /* offset 15305 */
- "\x28\x47\x29\0" /* offset 15309 */
- "\x28\x48\x29\0" /* offset 15313 */
- "\x28\x49\x29\0" /* offset 15317 */
- "\x28\x4a\x29\0" /* offset 15321 */
- "\x28\x4b\x29\0" /* offset 15325 */
- "\x28\x4c\x29\0" /* offset 15329 */
- "\x28\x4d\x29\0" /* offset 15333 */
- "\x28\x4e\x29\0" /* offset 15337 */
- "\x28\x4f\x29\0" /* offset 15341 */
- "\x28\x50\x29\0" /* offset 15345 */
- "\x28\x51\x29\0" /* offset 15349 */
- "\x28\x52\x29\0" /* offset 15353 */
- "\x28\x53\x29\0" /* offset 15357 */
- "\x28\x54\x29\0" /* offset 15361 */
- "\x28\x55\x29\0" /* offset 15365 */
- "\x28\x56\x29\0" /* offset 15369 */
- "\x28\x57\x29\0" /* offset 15373 */
- "\x28\x58\x29\0" /* offset 15377 */
- "\x28\x59\x29\0" /* offset 15381 */
- "\x28\x5a\x29\0" /* offset 15385 */
- "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15389 */
- "\x43\x44\0" /* offset 15397 */
- "\x57\x5a\0" /* offset 15400 */
- "\x48\x56\0" /* offset 15403 */
- "\x53\x44\0" /* offset 15406 */
- "\x53\x53\0" /* offset 15409 */
- "\x50\x50\x56\0" /* offset 15412 */
- "\x57\x43\0" /* offset 15416 */
- "\x44\x4a\0" /* offset 15419 */
- "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15422 */
- "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15429 */
- "\xe5\xad\x97\0" /* offset 15436 */
- "\xe5\x8f\x8c\0" /* offset 15440 */
- "\xe5\xa4\x9a\0" /* offset 15444 */
- "\xe8\xa7\xa3\0" /* offset 15448 */
- "\xe4\xba\xa4\0" /* offset 15452 */
- "\xe6\x98\xa0\0" /* offset 15456 */
- "\xe7\x84\xa1\0" /* offset 15460 */
- "\xe5\x89\x8d\0" /* offset 15464 */
- "\xe5\xbe\x8c\0" /* offset 15468 */
- "\xe5\x86\x8d\0" /* offset 15472 */
- "\xe6\x96\xb0\0" /* offset 15476 */
- "\xe5\x88\x9d\0" /* offset 15480 */
- "\xe7\xb5\x82\0" /* offset 15484 */
- "\xe8\xb2\xa9\0" /* offset 15488 */
- "\xe5\xa3\xb0\0" /* offset 15492 */
- "\xe5\x90\xb9\0" /* offset 15496 */
- "\xe6\xbc\x94\0" /* offset 15500 */
- "\xe6\x8a\x95\0" /* offset 15504 */
- "\xe6\x8d\x95\0" /* offset 15508 */
- "\xe9\x81\x8a\0" /* offset 15512 */
- "\xe6\x8c\x87\0" /* offset 15516 */
- "\xe6\x89\x93\0" /* offset 15520 */
- "\xe7\xa6\x81\0" /* offset 15524 */
- "\xe7\xa9\xba\0" /* offset 15528 */
- "\xe5\x90\x88\0" /* offset 15532 */
- "\xe6\xba\x80\0" /* offset 15536 */
- "\xe7\x94\xb3\0" /* offset 15540 */
- "\xe5\x89\xb2\0" /* offset 15544 */
- "\xe5\x96\xb6\0" /* offset 15548 */
- "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15552 */
- "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15562 */
- "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15572 */
- "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15582 */
- "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15592 */
- "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15602 */
- "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15612 */
- "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15622 */
- "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15632 */
- "\xe5\xbe\x97\0" /* offset 15642 */
- "\xe5\x8f\xaf\0" /* offset 15646 */
- "\xe4\xb8\xbd\0" /* offset 15650 */
- "\xe4\xb8\xb8\0" /* offset 15654 */
- "\xe4\xb9\x81\0" /* offset 15658 */
- "\xf0\xa0\x84\xa2\0" /* offset 15662 */
- "\xe4\xbd\xa0\0" /* offset 15667 */
- "\xe4\xbe\xbb\0" /* offset 15671 */
- "\xe5\x80\x82\0" /* offset 15675 */
- "\xe5\x81\xba\0" /* offset 15679 */
- "\xe5\x82\x99\0" /* offset 15683 */
- "\xe5\x83\x8f\0" /* offset 15687 */
- "\xe3\x92\x9e\0" /* offset 15691 */
- "\xf0\xa0\x98\xba\0" /* offset 15695 */
- "\xe5\x85\x94\0" /* offset 15700 */
- "\xe5\x85\xa4\0" /* offset 15704 */
- "\xe5\x85\xb7\0" /* offset 15708 */
- "\xf0\xa0\x94\x9c\0" /* offset 15712 */
- "\xe3\x92\xb9\0" /* offset 15717 */
- "\xe5\x85\xa7\0" /* offset 15721 */
- "\xf0\xa0\x95\x8b\0" /* offset 15725 */
- "\xe5\x86\x97\0" /* offset 15730 */
- "\xe5\x86\xa4\0" /* offset 15734 */
- "\xe4\xbb\x8c\0" /* offset 15738 */
- "\xe5\x86\xac\0" /* offset 15742 */
- "\xf0\xa9\x87\x9f\0" /* offset 15746 */
- "\xe5\x88\x83\0" /* offset 15751 */
- "\xe3\x93\x9f\0" /* offset 15755 */
- "\xe5\x88\xbb\0" /* offset 15759 */
- "\xe5\x89\x86\0" /* offset 15763 */
- "\xe5\x89\xb7\0" /* offset 15767 */
- "\xe3\x94\x95\0" /* offset 15771 */
- "\xe5\x8c\x85\0" /* offset 15775 */
- "\xe5\x8c\x86\0" /* offset 15779 */
- "\xe5\x8d\x89\0" /* offset 15783 */
- "\xe5\x8d\x9a\0" /* offset 15787 */
- "\xe5\x8d\xb3\0" /* offset 15791 */
- "\xe5\x8d\xbd\0" /* offset 15795 */
- "\xe5\x8d\xbf\0" /* offset 15799 */
- "\xf0\xa0\xa8\xac\0" /* offset 15803 */
- "\xe7\x81\xb0\0" /* offset 15808 */
- "\xe5\x8f\x8a\0" /* offset 15812 */
- "\xe5\x8f\x9f\0" /* offset 15816 */
- "\xf0\xa0\xad\xa3\0" /* offset 15820 */
- "\xe5\x8f\xab\0" /* offset 15825 */
- "\xe5\x8f\xb1\0" /* offset 15829 */
- "\xe5\x90\x86\0" /* offset 15833 */
- "\xe5\x92\x9e\0" /* offset 15837 */
- "\xe5\x90\xb8\0" /* offset 15841 */
- "\xe5\x91\x88\0" /* offset 15845 */
- "\xe5\x91\xa8\0" /* offset 15849 */
- "\xe5\x92\xa2\0" /* offset 15853 */
- "\xe5\x93\xb6\0" /* offset 15857 */
- "\xe5\x94\x90\0" /* offset 15861 */
- "\xe5\x95\x93\0" /* offset 15865 */
- "\xe5\x95\xa3\0" /* offset 15869 */
- "\xe5\x96\x84\0" /* offset 15873 */
- "\xe5\x96\xab\0" /* offset 15877 */
- "\xe5\x96\xb3\0" /* offset 15881 */
- "\xe5\x97\x82\0" /* offset 15885 */
- "\xe5\x9c\x96\0" /* offset 15889 */
- "\xe5\x9c\x97\0" /* offset 15893 */
- "\xe5\x99\x91\0" /* offset 15897 */
- "\xe5\x99\xb4\0" /* offset 15901 */
- "\xe5\xa3\xae\0" /* offset 15905 */
- "\xe5\x9f\x8e\0" /* offset 15909 */
- "\xe5\x9f\xb4\0" /* offset 15913 */
- "\xe5\xa0\x8d\0" /* offset 15917 */
- "\xe5\x9e\x8b\0" /* offset 15921 */
- "\xe5\xa0\xb2\0" /* offset 15925 */
- "\xe5\xa0\xb1\0" /* offset 15929 */
- "\xe5\xa2\xac\0" /* offset 15933 */
- "\xf0\xa1\x93\xa4\0" /* offset 15937 */
- "\xe5\xa3\xb2\0" /* offset 15942 */
- "\xe5\xa3\xb7\0" /* offset 15946 */
- "\xe5\xa4\x86\0" /* offset 15950 */
- "\xe5\xa4\xa2\0" /* offset 15954 */
- "\xe5\xa5\xa2\0" /* offset 15958 */
- "\xf0\xa1\x9a\xa8\0" /* offset 15962 */
- "\xf0\xa1\x9b\xaa\0" /* offset 15967 */
- "\xe5\xa7\xac\0" /* offset 15972 */
- "\xe5\xa8\x9b\0" /* offset 15976 */
- "\xe5\xa8\xa7\0" /* offset 15980 */
- "\xe5\xa7\x98\0" /* offset 15984 */
- "\xe5\xa9\xa6\0" /* offset 15988 */
- "\xe3\x9b\xae\0" /* offset 15992 */
- "\xe3\x9b\xbc\0" /* offset 15996 */
- "\xe5\xac\x88\0" /* offset 16000 */
- "\xe5\xac\xbe\0" /* offset 16004 */
- "\xf0\xa1\xa7\x88\0" /* offset 16008 */
- "\xe5\xaf\x83\0" /* offset 16013 */
- "\xe5\xaf\x98\0" /* offset 16017 */
- "\xe5\xaf\xb3\0" /* offset 16021 */
- "\xf0\xa1\xac\x98\0" /* offset 16025 */
- "\xe5\xaf\xbf\0" /* offset 16030 */
- "\xe5\xb0\x86\0" /* offset 16034 */
- "\xe5\xbd\x93\0" /* offset 16038 */
- "\xe3\x9e\x81\0" /* offset 16042 */
- "\xe5\xb1\xa0\0" /* offset 16046 */
- "\xe5\xb3\x80\0" /* offset 16050 */
- "\xe5\xb2\x8d\0" /* offset 16054 */
- "\xf0\xa1\xb7\xa4\0" /* offset 16058 */
- "\xe5\xb5\x83\0" /* offset 16063 */
- "\xf0\xa1\xb7\xa6\0" /* offset 16067 */
- "\xe5\xb5\xae\0" /* offset 16072 */
- "\xe5\xb5\xab\0" /* offset 16076 */
- "\xe5\xb5\xbc\0" /* offset 16080 */
- "\xe5\xb7\xa1\0" /* offset 16084 */
- "\xe5\xb7\xa2\0" /* offset 16088 */
- "\xe3\xa0\xaf\0" /* offset 16092 */
- "\xe5\xb7\xbd\0" /* offset 16096 */
- "\xe5\xb8\xa8\0" /* offset 16100 */
- "\xe5\xb8\xbd\0" /* offset 16104 */
- "\xe5\xb9\xa9\0" /* offset 16108 */
- "\xe3\xa1\xa2\0" /* offset 16112 */
- "\xf0\xa2\x86\x83\0" /* offset 16116 */
- "\xe3\xa1\xbc\0" /* offset 16121 */
- "\xe5\xba\xb0\0" /* offset 16125 */
- "\xe5\xba\xb3\0" /* offset 16129 */
- "\xe5\xba\xb6\0" /* offset 16133 */
- "\xf0\xaa\x8e\x92\0" /* offset 16137 */
- "\xf0\xa2\x8c\xb1\0" /* offset 16142 */
- "\xe8\x88\x81\0" /* offset 16147 */
- "\xe5\xbc\xa2\0" /* offset 16151 */
- "\xe3\xa3\x87\0" /* offset 16155 */
- "\xf0\xa3\x8a\xb8\0" /* offset 16159 */
- "\xf0\xa6\x87\x9a\0" /* offset 16164 */
- "\xe5\xbd\xa2\0" /* offset 16169 */
- "\xe5\xbd\xab\0" /* offset 16173 */
- "\xe3\xa3\xa3\0" /* offset 16177 */
- "\xe5\xbe\x9a\0" /* offset 16181 */
- "\xe5\xbf\x8d\0" /* offset 16185 */
- "\xe5\xbf\x97\0" /* offset 16189 */
- "\xe5\xbf\xb9\0" /* offset 16193 */
- "\xe6\x82\x81\0" /* offset 16197 */
- "\xe3\xa4\xba\0" /* offset 16201 */
- "\xe3\xa4\x9c\0" /* offset 16205 */
- "\xf0\xa2\x9b\x94\0" /* offset 16209 */
- "\xe6\x83\x87\0" /* offset 16214 */
- "\xe6\x85\x88\0" /* offset 16218 */
- "\xe6\x85\x8c\0" /* offset 16222 */
- "\xe6\x85\xba\0" /* offset 16226 */
- "\xe6\x86\xb2\0" /* offset 16230 */
- "\xe6\x86\xa4\0" /* offset 16234 */
- "\xe6\x86\xaf\0" /* offset 16238 */
- "\xe6\x87\x9e\0" /* offset 16242 */
- "\xe6\x88\x90\0" /* offset 16246 */
- "\xe6\x88\x9b\0" /* offset 16250 */
- "\xe6\x89\x9d\0" /* offset 16254 */
- "\xe6\x8a\xb1\0" /* offset 16258 */
- "\xe6\x8b\x94\0" /* offset 16262 */
- "\xe6\x8d\x90\0" /* offset 16266 */
- "\xf0\xa2\xac\x8c\0" /* offset 16270 */
- "\xe6\x8c\xbd\0" /* offset 16275 */
- "\xe6\x8b\xbc\0" /* offset 16279 */
- "\xe6\x8d\xa8\0" /* offset 16283 */
- "\xe6\x8e\x83\0" /* offset 16287 */
- "\xe6\x8f\xa4\0" /* offset 16291 */
- "\xf0\xa2\xaf\xb1\0" /* offset 16295 */
- "\xe6\x90\xa2\0" /* offset 16300 */
- "\xe6\x8f\x85\0" /* offset 16304 */
- "\xe6\x8e\xa9\0" /* offset 16308 */
- "\xe3\xa8\xae\0" /* offset 16312 */
- "\xe6\x91\xa9\0" /* offset 16316 */
- "\xe6\x91\xbe\0" /* offset 16320 */
- "\xe6\x92\x9d\0" /* offset 16324 */
- "\xe6\x91\xb7\0" /* offset 16328 */
- "\xe3\xa9\xac\0" /* offset 16332 */
- "\xe6\x95\xac\0" /* offset 16336 */
- "\xf0\xa3\x80\x8a\0" /* offset 16340 */
- "\xe6\x97\xa3\0" /* offset 16345 */
- "\xe6\x9b\xb8\0" /* offset 16349 */
- "\xe6\x99\x89\0" /* offset 16353 */
- "\xe3\xac\x99\0" /* offset 16357 */
- "\xe3\xac\x88\0" /* offset 16361 */
- "\xe3\xab\xa4\0" /* offset 16365 */
- "\xe5\x86\x92\0" /* offset 16369 */
- "\xe5\x86\x95\0" /* offset 16373 */
- "\xe6\x9c\x80\0" /* offset 16377 */
- "\xe6\x9a\x9c\0" /* offset 16381 */
- "\xe8\x82\xad\0" /* offset 16385 */
- "\xe4\x8f\x99\0" /* offset 16389 */
- "\xe6\x9c\xa1\0" /* offset 16393 */
- "\xe6\x9d\x9e\0" /* offset 16397 */
- "\xe6\x9d\x93\0" /* offset 16401 */
- "\xf0\xa3\x8f\x83\0" /* offset 16405 */
- "\xe3\xad\x89\0" /* offset 16410 */
- "\xe6\x9f\xba\0" /* offset 16414 */
- "\xe6\x9e\x85\0" /* offset 16418 */
- "\xe6\xa1\x92\0" /* offset 16422 */
- "\xf0\xa3\x91\xad\0" /* offset 16426 */
- "\xe6\xa2\x8e\0" /* offset 16431 */
- "\xe6\xa0\x9f\0" /* offset 16435 */
- "\xe6\xa4\x94\0" /* offset 16439 */
- "\xe6\xa5\x82\0" /* offset 16443 */
- "\xe6\xa6\xa3\0" /* offset 16447 */
- "\xe6\xa7\xaa\0" /* offset 16451 */
- "\xe6\xaa\xa8\0" /* offset 16455 */
- "\xf0\xa3\x9a\xa3\0" /* offset 16459 */
- "\xe6\xab\x9b\0" /* offset 16464 */
- "\xe3\xb0\x98\0" /* offset 16468 */
- "\xe6\xac\xa1\0" /* offset 16472 */
- "\xf0\xa3\xa2\xa7\0" /* offset 16476 */
- "\xe6\xad\x94\0" /* offset 16481 */
- "\xe3\xb1\x8e\0" /* offset 16485 */
- "\xe6\xad\xb2\0" /* offset 16489 */
- "\xe6\xae\x9f\0" /* offset 16493 */
- "\xe6\xae\xbb\0" /* offset 16497 */
- "\xf0\xa3\xaa\x8d\0" /* offset 16501 */
- "\xf0\xa1\xb4\x8b\0" /* offset 16506 */
- "\xf0\xa3\xab\xba\0" /* offset 16511 */
- "\xe6\xb1\x8e\0" /* offset 16516 */
- "\xf0\xa3\xb2\xbc\0" /* offset 16520 */
- "\xe6\xb2\xbf\0" /* offset 16525 */
- "\xe6\xb3\x8d\0" /* offset 16529 */
- "\xe6\xb1\xa7\0" /* offset 16533 */
- "\xe6\xb4\x96\0" /* offset 16537 */
- "\xe6\xb4\xbe\0" /* offset 16541 */
- "\xe6\xb5\xa9\0" /* offset 16545 */
- "\xe6\xb5\xb8\0" /* offset 16549 */
- "\xe6\xb6\x85\0" /* offset 16553 */
- "\xf0\xa3\xb4\x9e\0" /* offset 16557 */
- "\xe6\xb4\xb4\0" /* offset 16562 */
- "\xe6\xb8\xaf\0" /* offset 16566 */
- "\xe6\xb9\xae\0" /* offset 16570 */
- "\xe3\xb4\xb3\0" /* offset 16574 */
- "\xe6\xbb\x87\0" /* offset 16578 */
- "\xf0\xa3\xbb\x91\0" /* offset 16582 */
- "\xe6\xb7\xb9\0" /* offset 16587 */
- "\xe6\xbd\xae\0" /* offset 16591 */
- "\xf0\xa3\xbd\x9e\0" /* offset 16595 */
- "\xf0\xa3\xbe\x8e\0" /* offset 16600 */
- "\xe6\xbf\x86\0" /* offset 16605 */
- "\xe7\x80\xb9\0" /* offset 16609 */
- "\xe7\x80\x9b\0" /* offset 16613 */
- "\xe3\xb6\x96\0" /* offset 16617 */
- "\xe7\x81\x8a\0" /* offset 16621 */
- "\xe7\x81\xbd\0" /* offset 16625 */
- "\xe7\x81\xb7\0" /* offset 16629 */
- "\xe7\x82\xad\0" /* offset 16633 */
- "\xf0\xa0\x94\xa5\0" /* offset 16637 */
- "\xe7\x85\x85\0" /* offset 16642 */
- "\xf0\xa4\x89\xa3\0" /* offset 16646 */
- "\xe7\x86\x9c\0" /* offset 16651 */
- "\xf0\xa4\x8e\xab\0" /* offset 16655 */
- "\xe7\x88\xa8\0" /* offset 16660 */
- "\xe7\x89\x90\0" /* offset 16664 */
- "\xf0\xa4\x98\x88\0" /* offset 16668 */
- "\xe7\x8a\x80\0" /* offset 16673 */
- "\xe7\x8a\x95\0" /* offset 16677 */
- "\xf0\xa4\x9c\xb5\0" /* offset 16681 */
- "\xf0\xa4\xa0\x94\0" /* offset 16686 */
- "\xe7\x8d\xba\0" /* offset 16691 */
- "\xe7\x8e\x8b\0" /* offset 16695 */
- "\xe3\xba\xac\0" /* offset 16699 */
- "\xe7\x8e\xa5\0" /* offset 16703 */
- "\xe3\xba\xb8\0" /* offset 16707 */
- "\xe7\x91\x87\0" /* offset 16711 */
- "\xe7\x91\x9c\0" /* offset 16715 */
- "\xe7\x92\x85\0" /* offset 16719 */
- "\xe7\x93\x8a\0" /* offset 16723 */
- "\xe3\xbc\x9b\0" /* offset 16727 */
- "\xe7\x94\xa4\0" /* offset 16731 */
- "\xf0\xa4\xb0\xb6\0" /* offset 16735 */
- "\xe7\x94\xbe\0" /* offset 16740 */
- "\xf0\xa4\xb2\x92\0" /* offset 16744 */
- "\xf0\xa2\x86\x9f\0" /* offset 16749 */
- "\xe7\x98\x90\0" /* offset 16754 */
- "\xf0\xa4\xbe\xa1\0" /* offset 16758 */
- "\xf0\xa4\xbe\xb8\0" /* offset 16763 */
- "\xf0\xa5\x81\x84\0" /* offset 16768 */
- "\xe3\xbf\xbc\0" /* offset 16773 */
- "\xe4\x80\x88\0" /* offset 16777 */
- "\xf0\xa5\x83\xb3\0" /* offset 16781 */
- "\xf0\xa5\x83\xb2\0" /* offset 16786 */
- "\xf0\xa5\x84\x99\0" /* offset 16791 */
- "\xf0\xa5\x84\xb3\0" /* offset 16796 */
- "\xe7\x9c\x9e\0" /* offset 16801 */
- "\xe7\x9c\x9f\0" /* offset 16805 */
- "\xe7\x9e\x8b\0" /* offset 16809 */
- "\xe4\x81\x86\0" /* offset 16813 */
- "\xe4\x82\x96\0" /* offset 16817 */
- "\xf0\xa5\x90\x9d\0" /* offset 16821 */
- "\xe7\xa1\x8e\0" /* offset 16826 */
- "\xe4\x83\xa3\0" /* offset 16830 */
- "\xf0\xa5\x98\xa6\0" /* offset 16834 */
- "\xf0\xa5\x9a\x9a\0" /* offset 16839 */
- "\xf0\xa5\x9b\x85\0" /* offset 16844 */
- "\xe7\xa7\xab\0" /* offset 16849 */
- "\xe4\x84\xaf\0" /* offset 16853 */
- "\xe7\xa9\x8a\0" /* offset 16857 */
- "\xe7\xa9\x8f\0" /* offset 16861 */
- "\xf0\xa5\xa5\xbc\0" /* offset 16865 */
- "\xf0\xa5\xaa\xa7\0" /* offset 16870 */
- "\xe7\xab\xae\0" /* offset 16875 */
- "\xe4\x88\x82\0" /* offset 16879 */
- "\xf0\xa5\xae\xab\0" /* offset 16883 */
- "\xe7\xaf\x86\0" /* offset 16888 */
- "\xe7\xaf\x89\0" /* offset 16892 */
- "\xe4\x88\xa7\0" /* offset 16896 */
- "\xf0\xa5\xb2\x80\0" /* offset 16900 */
- "\xe7\xb3\x92\0" /* offset 16905 */
- "\xe4\x8a\xa0\0" /* offset 16909 */
- "\xe7\xb3\xa8\0" /* offset 16913 */
- "\xe7\xb3\xa3\0" /* offset 16917 */
- "\xe7\xb4\x80\0" /* offset 16921 */
- "\xf0\xa5\xbe\x86\0" /* offset 16925 */
- "\xe7\xb5\xa3\0" /* offset 16930 */
- "\xe4\x8c\x81\0" /* offset 16934 */
- "\xe7\xb7\x87\0" /* offset 16938 */
- "\xe7\xb8\x82\0" /* offset 16942 */
- "\xe7\xb9\x85\0" /* offset 16946 */
- "\xe4\x8c\xb4\0" /* offset 16950 */
- "\xf0\xa6\x88\xa8\0" /* offset 16954 */
- "\xf0\xa6\x89\x87\0" /* offset 16959 */
- "\xe4\x8d\x99\0" /* offset 16964 */
- "\xf0\xa6\x8b\x99\0" /* offset 16968 */
- "\xe7\xbd\xba\0" /* offset 16973 */
- "\xf0\xa6\x8c\xbe\0" /* offset 16977 */
- "\xe7\xbe\x95\0" /* offset 16982 */
- "\xe7\xbf\xba\0" /* offset 16986 */
- "\xf0\xa6\x93\x9a\0" /* offset 16990 */
- "\xf0\xa6\x94\xa3\0" /* offset 16995 */
- "\xe8\x81\xa0\0" /* offset 17000 */
- "\xf0\xa6\x96\xa8\0" /* offset 17004 */
- "\xe8\x81\xb0\0" /* offset 17009 */
- "\xf0\xa3\x8d\x9f\0" /* offset 17013 */
- "\xe4\x8f\x95\0" /* offset 17018 */
- "\xe8\x82\xb2\0" /* offset 17022 */
- "\xe8\x84\x83\0" /* offset 17026 */
- "\xe4\x90\x8b\0" /* offset 17030 */
- "\xe8\x84\xbe\0" /* offset 17034 */
- "\xe5\xaa\xb5\0" /* offset 17038 */
- "\xf0\xa6\x9e\xa7\0" /* offset 17042 */
- "\xf0\xa6\x9e\xb5\0" /* offset 17047 */
- "\xf0\xa3\x8e\x93\0" /* offset 17052 */
- "\xf0\xa3\x8e\x9c\0" /* offset 17057 */
- "\xe8\x88\x84\0" /* offset 17062 */
- "\xe8\xbe\x9e\0" /* offset 17066 */
- "\xe4\x91\xab\0" /* offset 17070 */
- "\xe8\x8a\x91\0" /* offset 17074 */
- "\xe8\x8a\x8b\0" /* offset 17078 */
- "\xe8\x8a\x9d\0" /* offset 17082 */
- "\xe5\x8a\xb3\0" /* offset 17086 */
- "\xe8\x8a\xb1\0" /* offset 17090 */
- "\xe8\x8a\xb3\0" /* offset 17094 */
- "\xe8\x8a\xbd\0" /* offset 17098 */
- "\xe8\x8b\xa6\0" /* offset 17102 */
- "\xf0\xa6\xac\xbc\0" /* offset 17106 */
- "\xe8\x8c\x9d\0" /* offset 17111 */
- "\xe8\x8d\xa3\0" /* offset 17115 */
- "\xe8\x8e\xad\0" /* offset 17119 */
- "\xe8\x8c\xa3\0" /* offset 17123 */
- "\xe8\x8e\xbd\0" /* offset 17127 */
- "\xe8\x8f\xa7\0" /* offset 17131 */
- "\xe8\x8d\x93\0" /* offset 17135 */
- "\xe8\x8f\x8a\0" /* offset 17139 */
- "\xe8\x8f\x8c\0" /* offset 17143 */
- "\xe8\x8f\x9c\0" /* offset 17147 */
- "\xf0\xa6\xb0\xb6\0" /* offset 17151 */
- "\xf0\xa6\xb5\xab\0" /* offset 17156 */
- "\xf0\xa6\xb3\x95\0" /* offset 17161 */
- "\xe4\x94\xab\0" /* offset 17166 */
- "\xe8\x93\xb1\0" /* offset 17170 */
- "\xe8\x93\xb3\0" /* offset 17174 */
- "\xe8\x94\x96\0" /* offset 17178 */
- "\xf0\xa7\x8f\x8a\0" /* offset 17182 */
- "\xe8\x95\xa4\0" /* offset 17187 */
- "\xf0\xa6\xbc\xac\0" /* offset 17191 */
- "\xe4\x95\x9d\0" /* offset 17196 */
- "\xe4\x95\xa1\0" /* offset 17200 */
- "\xf0\xa6\xbe\xb1\0" /* offset 17204 */
- "\xf0\xa7\x83\x92\0" /* offset 17209 */
- "\xe4\x95\xab\0" /* offset 17214 */
- "\xe8\x99\x90\0" /* offset 17218 */
- "\xe8\x99\xa7\0" /* offset 17222 */
- "\xe8\x99\xa9\0" /* offset 17226 */
- "\xe8\x9a\xa9\0" /* offset 17230 */
- "\xe8\x9a\x88\0" /* offset 17234 */
- "\xe8\x9c\x8e\0" /* offset 17238 */
- "\xe8\x9b\xa2\0" /* offset 17242 */
- "\xe8\x9c\xa8\0" /* offset 17246 */
- "\xe8\x9d\xab\0" /* offset 17250 */
- "\xe8\x9e\x86\0" /* offset 17254 */
- "\xe4\x97\x97\0" /* offset 17258 */
- "\xe8\x9f\xa1\0" /* offset 17262 */
- "\xe8\xa0\x81\0" /* offset 17266 */
- "\xe4\x97\xb9\0" /* offset 17270 */
- "\xe8\xa1\xa0\0" /* offset 17274 */
- "\xf0\xa7\x99\xa7\0" /* offset 17278 */
- "\xe8\xa3\x97\0" /* offset 17283 */
- "\xe8\xa3\x9e\0" /* offset 17287 */
- "\xe4\x98\xb5\0" /* offset 17291 */
- "\xe8\xa3\xba\0" /* offset 17295 */
- "\xe3\x92\xbb\0" /* offset 17299 */
- "\xf0\xa7\xa2\xae\0" /* offset 17303 */
- "\xf0\xa7\xa5\xa6\0" /* offset 17308 */
- "\xe4\x9a\xbe\0" /* offset 17313 */
- "\xe4\x9b\x87\0" /* offset 17317 */
- "\xe8\xaa\xa0\0" /* offset 17321 */
- "\xf0\xa7\xb2\xa8\0" /* offset 17325 */
- "\xe8\xb2\xab\0" /* offset 17330 */
- "\xe8\xb3\x81\0" /* offset 17334 */
- "\xe8\xb4\x9b\0" /* offset 17338 */
- "\xe8\xb5\xb7\0" /* offset 17342 */
- "\xf0\xa7\xbc\xaf\0" /* offset 17346 */
- "\xf0\xa0\xa0\x84\0" /* offset 17351 */
- "\xe8\xb7\x8b\0" /* offset 17356 */
- "\xe8\xb6\xbc\0" /* offset 17360 */
- "\xe8\xb7\xb0\0" /* offset 17364 */
- "\xf0\xa0\xa3\x9e\0" /* offset 17368 */
- "\xe8\xbb\x94\0" /* offset 17373 */
- "\xf0\xa8\x97\x92\0" /* offset 17377 */
- "\xf0\xa8\x97\xad\0" /* offset 17382 */
- "\xe9\x82\x94\0" /* offset 17387 */
- "\xe9\x83\xb1\0" /* offset 17391 */
- "\xe9\x84\x91\0" /* offset 17395 */
- "\xf0\xa8\x9c\xae\0" /* offset 17399 */
- "\xe9\x84\x9b\0" /* offset 17404 */
- "\xe9\x88\xb8\0" /* offset 17408 */
- "\xe9\x8b\x97\0" /* offset 17412 */
- "\xe9\x8b\x98\0" /* offset 17416 */
- "\xe9\x89\xbc\0" /* offset 17420 */
- "\xe9\x8f\xb9\0" /* offset 17424 */
- "\xe9\x90\x95\0" /* offset 17428 */
- "\xf0\xa8\xaf\xba\0" /* offset 17432 */
- "\xe9\x96\x8b\0" /* offset 17437 */
- "\xe4\xa6\x95\0" /* offset 17441 */
- "\xe9\x96\xb7\0" /* offset 17445 */
- "\xf0\xa8\xb5\xb7\0" /* offset 17449 */
- "\xe4\xa7\xa6\0" /* offset 17454 */
- "\xe9\x9b\x83\0" /* offset 17458 */
- "\xe5\xb6\xb2\0" /* offset 17462 */
- "\xe9\x9c\xa3\0" /* offset 17466 */
- "\xf0\xa9\x85\x85\0" /* offset 17470 */
- "\xf0\xa9\x88\x9a\0" /* offset 17475 */
- "\xe4\xa9\xae\0" /* offset 17480 */
- "\xe4\xa9\xb6\0" /* offset 17484 */
- "\xe9\x9f\xa0\0" /* offset 17488 */
- "\xf0\xa9\x90\x8a\0" /* offset 17492 */
- "\xe4\xaa\xb2\0" /* offset 17497 */
- "\xf0\xa9\x92\x96\0" /* offset 17501 */
- "\xe9\xa0\xa9\0" /* offset 17506 */
- "\xf0\xa9\x96\xb6\0" /* offset 17510 */
- "\xe9\xa3\xa2\0" /* offset 17515 */
- "\xe4\xac\xb3\0" /* offset 17519 */
- "\xe9\xa4\xa9\0" /* offset 17523 */
- "\xe9\xa6\xa7\0" /* offset 17527 */
- "\xe9\xa7\x82\0" /* offset 17531 */
- "\xe9\xa7\xbe\0" /* offset 17535 */
- "\xe4\xaf\x8e\0" /* offset 17539 */
- "\xf0\xa9\xac\xb0\0" /* offset 17543 */
- "\xe9\xb1\x80\0" /* offset 17548 */
- "\xe9\xb3\xbd\0" /* offset 17552 */
- "\xe4\xb3\x8e\0" /* offset 17556 */
- "\xe4\xb3\xad\0" /* offset 17560 */
- "\xe9\xb5\xa7\0" /* offset 17564 */
- "\xf0\xaa\x83\x8e\0" /* offset 17568 */
- "\xe4\xb3\xb8\0" /* offset 17573 */
- "\xf0\xaa\x84\x85\0" /* offset 17577 */
- "\xf0\xaa\x88\x8e\0" /* offset 17582 */
- "\xf0\xaa\x8a\x91\0" /* offset 17587 */
- "\xe4\xb5\x96\0" /* offset 17592 */
- "\xe9\xbb\xbe\0" /* offset 17596 */
- "\xe9\xbc\x85\0" /* offset 17600 */
- "\xe9\xbc\x8f\0" /* offset 17604 */
- "\xe9\xbc\x96\0" /* offset 17608 */
- "\xf0\xaa\x98\x80\0" /* offset 17612 */;
+ "\xc4\xa6\0" /* offset 10880 */
+ "\xc5\x93\0" /* offset 10883 */
+ "\xe8\xb1\x88\0" /* offset 10886 */
+ "\xe6\x9b\xb4\0" /* offset 10890 */
+ "\xe8\xb3\x88\0" /* offset 10894 */
+ "\xe6\xbb\x91\0" /* offset 10898 */
+ "\xe4\xb8\xb2\0" /* offset 10902 */
+ "\xe5\x8f\xa5\0" /* offset 10906 */
+ "\xe5\xa5\x91\0" /* offset 10910 */
+ "\xe5\x96\x87\0" /* offset 10914 */
+ "\xe5\xa5\x88\0" /* offset 10918 */
+ "\xe6\x87\xb6\0" /* offset 10922 */
+ "\xe7\x99\xa9\0" /* offset 10926 */
+ "\xe7\xbe\x85\0" /* offset 10930 */
+ "\xe8\x98\xbf\0" /* offset 10934 */
+ "\xe8\x9e\xba\0" /* offset 10938 */
+ "\xe8\xa3\xb8\0" /* offset 10942 */
+ "\xe9\x82\x8f\0" /* offset 10946 */
+ "\xe6\xa8\x82\0" /* offset 10950 */
+ "\xe6\xb4\x9b\0" /* offset 10954 */
+ "\xe7\x83\x99\0" /* offset 10958 */
+ "\xe7\x8f\x9e\0" /* offset 10962 */
+ "\xe8\x90\xbd\0" /* offset 10966 */
+ "\xe9\x85\xaa\0" /* offset 10970 */
+ "\xe9\xa7\xb1\0" /* offset 10974 */
+ "\xe4\xba\x82\0" /* offset 10978 */
+ "\xe5\x8d\xb5\0" /* offset 10982 */
+ "\xe6\xac\x84\0" /* offset 10986 */
+ "\xe7\x88\x9b\0" /* offset 10990 */
+ "\xe8\x98\xad\0" /* offset 10994 */
+ "\xe9\xb8\x9e\0" /* offset 10998 */
+ "\xe5\xb5\x90\0" /* offset 11002 */
+ "\xe6\xbf\xab\0" /* offset 11006 */
+ "\xe8\x97\x8d\0" /* offset 11010 */
+ "\xe8\xa5\xa4\0" /* offset 11014 */
+ "\xe6\x8b\x89\0" /* offset 11018 */
+ "\xe8\x87\x98\0" /* offset 11022 */
+ "\xe8\xa0\x9f\0" /* offset 11026 */
+ "\xe5\xbb\x8a\0" /* offset 11030 */
+ "\xe6\x9c\x97\0" /* offset 11034 */
+ "\xe6\xb5\xaa\0" /* offset 11038 */
+ "\xe7\x8b\xbc\0" /* offset 11042 */
+ "\xe9\x83\x8e\0" /* offset 11046 */
+ "\xe4\xbe\x86\0" /* offset 11050 */
+ "\xe5\x86\xb7\0" /* offset 11054 */
+ "\xe5\x8b\x9e\0" /* offset 11058 */
+ "\xe6\x93\x84\0" /* offset 11062 */
+ "\xe6\xab\x93\0" /* offset 11066 */
+ "\xe7\x88\x90\0" /* offset 11070 */
+ "\xe7\x9b\xa7\0" /* offset 11074 */
+ "\xe8\x98\x86\0" /* offset 11078 */
+ "\xe8\x99\x9c\0" /* offset 11082 */
+ "\xe8\xb7\xaf\0" /* offset 11086 */
+ "\xe9\x9c\xb2\0" /* offset 11090 */
+ "\xe9\xad\xaf\0" /* offset 11094 */
+ "\xe9\xb7\xba\0" /* offset 11098 */
+ "\xe7\xa2\x8c\0" /* offset 11102 */
+ "\xe7\xa5\xbf\0" /* offset 11106 */
+ "\xe7\xb6\xa0\0" /* offset 11110 */
+ "\xe8\x8f\x89\0" /* offset 11114 */
+ "\xe9\x8c\x84\0" /* offset 11118 */
+ "\xe8\xab\x96\0" /* offset 11122 */
+ "\xe5\xa3\x9f\0" /* offset 11126 */
+ "\xe5\xbc\x84\0" /* offset 11130 */
+ "\xe7\xb1\xa0\0" /* offset 11134 */
+ "\xe8\x81\xbe\0" /* offset 11138 */
+ "\xe7\x89\xa2\0" /* offset 11142 */
+ "\xe7\xa3\x8a\0" /* offset 11146 */
+ "\xe8\xb3\x82\0" /* offset 11150 */
+ "\xe9\x9b\xb7\0" /* offset 11154 */
+ "\xe5\xa3\x98\0" /* offset 11158 */
+ "\xe5\xb1\xa2\0" /* offset 11162 */
+ "\xe6\xa8\x93\0" /* offset 11166 */
+ "\xe6\xb7\x9a\0" /* offset 11170 */
+ "\xe6\xbc\x8f\0" /* offset 11174 */
+ "\xe7\xb4\xaf\0" /* offset 11178 */
+ "\xe7\xb8\xb7\0" /* offset 11182 */
+ "\xe9\x99\x8b\0" /* offset 11186 */
+ "\xe5\x8b\x92\0" /* offset 11190 */
+ "\xe8\x82\x8b\0" /* offset 11194 */
+ "\xe5\x87\x9c\0" /* offset 11198 */
+ "\xe5\x87\x8c\0" /* offset 11202 */
+ "\xe7\xa8\x9c\0" /* offset 11206 */
+ "\xe7\xb6\xbe\0" /* offset 11210 */
+ "\xe8\x8f\xb1\0" /* offset 11214 */
+ "\xe9\x99\xb5\0" /* offset 11218 */
+ "\xe8\xae\x80\0" /* offset 11222 */
+ "\xe6\x8b\x8f\0" /* offset 11226 */
+ "\xe8\xab\xbe\0" /* offset 11230 */
+ "\xe4\xb8\xb9\0" /* offset 11234 */
+ "\xe5\xaf\xa7\0" /* offset 11238 */
+ "\xe6\x80\x92\0" /* offset 11242 */
+ "\xe7\x8e\x87\0" /* offset 11246 */
+ "\xe7\x95\xb0\0" /* offset 11250 */
+ "\xe5\x8c\x97\0" /* offset 11254 */
+ "\xe7\xa3\xbb\0" /* offset 11258 */
+ "\xe4\xbe\xbf\0" /* offset 11262 */
+ "\xe5\xbe\xa9\0" /* offset 11266 */
+ "\xe4\xb8\x8d\0" /* offset 11270 */
+ "\xe6\xb3\x8c\0" /* offset 11274 */
+ "\xe6\x95\xb8\0" /* offset 11278 */
+ "\xe7\xb4\xa2\0" /* offset 11282 */
+ "\xe5\x8f\x83\0" /* offset 11286 */
+ "\xe5\xa1\x9e\0" /* offset 11290 */
+ "\xe7\x9c\x81\0" /* offset 11294 */
+ "\xe8\x91\x89\0" /* offset 11298 */
+ "\xe8\xaa\xaa\0" /* offset 11302 */
+ "\xe6\xae\xba\0" /* offset 11306 */
+ "\xe6\xb2\x88\0" /* offset 11310 */
+ "\xe6\x8b\xbe\0" /* offset 11314 */
+ "\xe8\x8b\xa5\0" /* offset 11318 */
+ "\xe6\x8e\xa0\0" /* offset 11322 */
+ "\xe7\x95\xa5\0" /* offset 11326 */
+ "\xe4\xba\xae\0" /* offset 11330 */
+ "\xe5\x85\xa9\0" /* offset 11334 */
+ "\xe5\x87\x89\0" /* offset 11338 */
+ "\xe6\xa2\x81\0" /* offset 11342 */
+ "\xe7\xb3\xa7\0" /* offset 11346 */
+ "\xe8\x89\xaf\0" /* offset 11350 */
+ "\xe8\xab\x92\0" /* offset 11354 */
+ "\xe9\x87\x8f\0" /* offset 11358 */
+ "\xe5\x8b\xb5\0" /* offset 11362 */
+ "\xe5\x91\x82\0" /* offset 11366 */
+ "\xe5\xbb\xac\0" /* offset 11370 */
+ "\xe6\x97\x85\0" /* offset 11374 */
+ "\xe6\xbf\xbe\0" /* offset 11378 */
+ "\xe7\xa4\xaa\0" /* offset 11382 */
+ "\xe9\x96\xad\0" /* offset 11386 */
+ "\xe9\xa9\xaa\0" /* offset 11390 */
+ "\xe9\xba\x97\0" /* offset 11394 */
+ "\xe9\xbb\x8e\0" /* offset 11398 */
+ "\xe6\x9b\x86\0" /* offset 11402 */
+ "\xe6\xad\xb7\0" /* offset 11406 */
+ "\xe8\xbd\xa2\0" /* offset 11410 */
+ "\xe5\xb9\xb4\0" /* offset 11414 */
+ "\xe6\x86\x90\0" /* offset 11418 */
+ "\xe6\x88\x80\0" /* offset 11422 */
+ "\xe6\x92\x9a\0" /* offset 11426 */
+ "\xe6\xbc\xa3\0" /* offset 11430 */
+ "\xe7\x85\x89\0" /* offset 11434 */
+ "\xe7\x92\x89\0" /* offset 11438 */
+ "\xe7\xa7\x8a\0" /* offset 11442 */
+ "\xe7\xb7\xb4\0" /* offset 11446 */
+ "\xe8\x81\xaf\0" /* offset 11450 */
+ "\xe8\xbc\xa6\0" /* offset 11454 */
+ "\xe8\x93\xae\0" /* offset 11458 */
+ "\xe9\x80\xa3\0" /* offset 11462 */
+ "\xe9\x8d\x8a\0" /* offset 11466 */
+ "\xe5\x88\x97\0" /* offset 11470 */
+ "\xe5\x8a\xa3\0" /* offset 11474 */
+ "\xe5\x92\xbd\0" /* offset 11478 */
+ "\xe7\x83\x88\0" /* offset 11482 */
+ "\xe8\xa3\x82\0" /* offset 11486 */
+ "\xe5\xbb\x89\0" /* offset 11490 */
+ "\xe5\xbf\xb5\0" /* offset 11494 */
+ "\xe6\x8d\xbb\0" /* offset 11498 */
+ "\xe6\xae\xae\0" /* offset 11502 */
+ "\xe7\xb0\xbe\0" /* offset 11506 */
+ "\xe7\x8d\xb5\0" /* offset 11510 */
+ "\xe4\xbb\xa4\0" /* offset 11514 */
+ "\xe5\x9b\xb9\0" /* offset 11518 */
+ "\xe5\xb6\xba\0" /* offset 11522 */
+ "\xe6\x80\x9c\0" /* offset 11526 */
+ "\xe7\x8e\xb2\0" /* offset 11530 */
+ "\xe7\x91\xa9\0" /* offset 11534 */
+ "\xe7\xbe\x9a\0" /* offset 11538 */
+ "\xe8\x81\x86\0" /* offset 11542 */
+ "\xe9\x88\xb4\0" /* offset 11546 */
+ "\xe9\x9b\xb6\0" /* offset 11550 */
+ "\xe9\x9d\x88\0" /* offset 11554 */
+ "\xe9\xa0\x98\0" /* offset 11558 */
+ "\xe4\xbe\x8b\0" /* offset 11562 */
+ "\xe7\xa6\xae\0" /* offset 11566 */
+ "\xe9\x86\xb4\0" /* offset 11570 */
+ "\xe9\x9a\xb8\0" /* offset 11574 */
+ "\xe6\x83\xa1\0" /* offset 11578 */
+ "\xe4\xba\x86\0" /* offset 11582 */
+ "\xe5\x83\x9a\0" /* offset 11586 */
+ "\xe5\xaf\xae\0" /* offset 11590 */
+ "\xe5\xb0\xbf\0" /* offset 11594 */
+ "\xe6\x96\x99\0" /* offset 11598 */
+ "\xe7\x87\x8e\0" /* offset 11602 */
+ "\xe7\x99\x82\0" /* offset 11606 */
+ "\xe8\x93\xbc\0" /* offset 11610 */
+ "\xe9\x81\xbc\0" /* offset 11614 */
+ "\xe6\x9a\x88\0" /* offset 11618 */
+ "\xe9\x98\xae\0" /* offset 11622 */
+ "\xe5\x8a\x89\0" /* offset 11626 */
+ "\xe6\x9d\xbb\0" /* offset 11630 */
+ "\xe6\x9f\xb3\0" /* offset 11634 */
+ "\xe6\xb5\x81\0" /* offset 11638 */
+ "\xe6\xba\x9c\0" /* offset 11642 */
+ "\xe7\x90\x89\0" /* offset 11646 */
+ "\xe7\x95\x99\0" /* offset 11650 */
+ "\xe7\xa1\xab\0" /* offset 11654 */
+ "\xe7\xb4\x90\0" /* offset 11658 */
+ "\xe9\xa1\x9e\0" /* offset 11662 */
+ "\xe6\x88\xae\0" /* offset 11666 */
+ "\xe9\x99\xb8\0" /* offset 11670 */
+ "\xe5\x80\xab\0" /* offset 11674 */
+ "\xe5\xb4\x99\0" /* offset 11678 */
+ "\xe6\xb7\xaa\0" /* offset 11682 */
+ "\xe8\xbc\xaa\0" /* offset 11686 */
+ "\xe5\xbe\x8b\0" /* offset 11690 */
+ "\xe6\x85\x84\0" /* offset 11694 */
+ "\xe6\xa0\x97\0" /* offset 11698 */
+ "\xe9\x9a\x86\0" /* offset 11702 */
+ "\xe5\x88\xa9\0" /* offset 11706 */
+ "\xe5\x90\x8f\0" /* offset 11710 */
+ "\xe5\xb1\xa5\0" /* offset 11714 */
+ "\xe6\x98\x93\0" /* offset 11718 */
+ "\xe6\x9d\x8e\0" /* offset 11722 */
+ "\xe6\xa2\xa8\0" /* offset 11726 */
+ "\xe6\xb3\xa5\0" /* offset 11730 */
+ "\xe7\x90\x86\0" /* offset 11734 */
+ "\xe7\x97\xa2\0" /* offset 11738 */
+ "\xe7\xbd\xb9\0" /* offset 11742 */
+ "\xe8\xa3\x8f\0" /* offset 11746 */
+ "\xe8\xa3\xa1\0" /* offset 11750 */
+ "\xe9\x9b\xa2\0" /* offset 11754 */
+ "\xe5\x8c\xbf\0" /* offset 11758 */
+ "\xe6\xba\xba\0" /* offset 11762 */
+ "\xe5\x90\x9d\0" /* offset 11766 */
+ "\xe7\x87\x90\0" /* offset 11770 */
+ "\xe7\x92\x98\0" /* offset 11774 */
+ "\xe8\x97\xba\0" /* offset 11778 */
+ "\xe9\x9a\xa3\0" /* offset 11782 */
+ "\xe9\xb1\x97\0" /* offset 11786 */
+ "\xe9\xba\x9f\0" /* offset 11790 */
+ "\xe6\x9e\x97\0" /* offset 11794 */
+ "\xe6\xb7\x8b\0" /* offset 11798 */
+ "\xe8\x87\xa8\0" /* offset 11802 */
+ "\xe7\xac\xa0\0" /* offset 11806 */
+ "\xe7\xb2\x92\0" /* offset 11810 */
+ "\xe7\x8b\x80\0" /* offset 11814 */
+ "\xe7\x82\x99\0" /* offset 11818 */
+ "\xe8\xad\x98\0" /* offset 11822 */
+ "\xe4\xbb\x80\0" /* offset 11826 */
+ "\xe8\x8c\xb6\0" /* offset 11830 */
+ "\xe5\x88\xba\0" /* offset 11834 */
+ "\xe5\x88\x87\0" /* offset 11838 */
+ "\xe5\xba\xa6\0" /* offset 11842 */
+ "\xe6\x8b\x93\0" /* offset 11846 */
+ "\xe7\xb3\x96\0" /* offset 11850 */
+ "\xe5\xae\x85\0" /* offset 11854 */
+ "\xe6\xb4\x9e\0" /* offset 11858 */
+ "\xe6\x9a\xb4\0" /* offset 11862 */
+ "\xe8\xbc\xbb\0" /* offset 11866 */
+ "\xe9\x99\x8d\0" /* offset 11870 */
+ "\xe5\xbb\x93\0" /* offset 11874 */
+ "\xe5\x85\x80\0" /* offset 11878 */
+ "\xe5\x97\x80\0" /* offset 11882 */
+ "\xe5\xa1\x9a\0" /* offset 11886 */
+ "\xe6\x99\xb4\0" /* offset 11890 */
+ "\xe5\x87\x9e\0" /* offset 11894 */
+ "\xe7\x8c\xaa\0" /* offset 11898 */
+ "\xe7\x9b\x8a\0" /* offset 11902 */
+ "\xe7\xa4\xbc\0" /* offset 11906 */
+ "\xe7\xa5\x9e\0" /* offset 11910 */
+ "\xe7\xa5\xa5\0" /* offset 11914 */
+ "\xe7\xa6\x8f\0" /* offset 11918 */
+ "\xe9\x9d\x96\0" /* offset 11922 */
+ "\xe7\xb2\xbe\0" /* offset 11926 */
+ "\xe8\x98\x92\0" /* offset 11930 */
+ "\xe8\xab\xb8\0" /* offset 11934 */
+ "\xe9\x80\xb8\0" /* offset 11938 */
+ "\xe9\x83\xbd\0" /* offset 11942 */
+ "\xe9\xa3\xaf\0" /* offset 11946 */
+ "\xe9\xa3\xbc\0" /* offset 11950 */
+ "\xe9\xa4\xa8\0" /* offset 11954 */
+ "\xe9\xb6\xb4\0" /* offset 11958 */
+ "\xe9\x83\x9e\0" /* offset 11962 */
+ "\xe9\x9a\xb7\0" /* offset 11966 */
+ "\xe4\xbe\xae\0" /* offset 11970 */
+ "\xe5\x83\xa7\0" /* offset 11974 */
+ "\xe5\x85\x8d\0" /* offset 11978 */
+ "\xe5\x8b\x89\0" /* offset 11982 */
+ "\xe5\x8b\xa4\0" /* offset 11986 */
+ "\xe5\x8d\x91\0" /* offset 11990 */
+ "\xe5\x96\x9d\0" /* offset 11994 */
+ "\xe5\x98\x86\0" /* offset 11998 */
+ "\xe5\x99\xa8\0" /* offset 12002 */
+ "\xe5\xa1\x80\0" /* offset 12006 */
+ "\xe5\xa2\xa8\0" /* offset 12010 */
+ "\xe5\xb1\xa4\0" /* offset 12014 */
+ "\xe6\x82\x94\0" /* offset 12018 */
+ "\xe6\x85\xa8\0" /* offset 12022 */
+ "\xe6\x86\x8e\0" /* offset 12026 */
+ "\xe6\x87\xb2\0" /* offset 12030 */
+ "\xe6\x95\x8f\0" /* offset 12034 */
+ "\xe6\x97\xa2\0" /* offset 12038 */
+ "\xe6\x9a\x91\0" /* offset 12042 */
+ "\xe6\xa2\x85\0" /* offset 12046 */
+ "\xe6\xb5\xb7\0" /* offset 12050 */
+ "\xe6\xb8\x9a\0" /* offset 12054 */
+ "\xe6\xbc\xa2\0" /* offset 12058 */
+ "\xe7\x85\xae\0" /* offset 12062 */
+ "\xe7\x88\xab\0" /* offset 12066 */
+ "\xe7\x90\xa2\0" /* offset 12070 */
+ "\xe7\xa2\x91\0" /* offset 12074 */
+ "\xe7\xa5\x89\0" /* offset 12078 */
+ "\xe7\xa5\x88\0" /* offset 12082 */
+ "\xe7\xa5\x90\0" /* offset 12086 */
+ "\xe7\xa5\x96\0" /* offset 12090 */
+ "\xe7\xa6\x8d\0" /* offset 12094 */
+ "\xe7\xa6\x8e\0" /* offset 12098 */
+ "\xe7\xa9\x80\0" /* offset 12102 */
+ "\xe7\xaa\x81\0" /* offset 12106 */
+ "\xe7\xaf\x80\0" /* offset 12110 */
+ "\xe7\xb8\x89\0" /* offset 12114 */
+ "\xe7\xb9\x81\0" /* offset 12118 */
+ "\xe7\xbd\xb2\0" /* offset 12122 */
+ "\xe8\x80\x85\0" /* offset 12126 */
+ "\xe8\x87\xad\0" /* offset 12130 */
+ "\xe8\x89\xb9\0" /* offset 12134 */
+ "\xe8\x91\x97\0" /* offset 12138 */
+ "\xe8\xa4\x90\0" /* offset 12142 */
+ "\xe8\xa6\x96\0" /* offset 12146 */
+ "\xe8\xac\x81\0" /* offset 12150 */
+ "\xe8\xac\xb9\0" /* offset 12154 */
+ "\xe8\xb3\x93\0" /* offset 12158 */
+ "\xe8\xb4\x88\0" /* offset 12162 */
+ "\xe8\xbe\xb6\0" /* offset 12166 */
+ "\xe9\x9b\xa3\0" /* offset 12170 */
+ "\xe9\x9f\xbf\0" /* offset 12174 */
+ "\xe9\xa0\xbb\0" /* offset 12178 */
+ "\xe6\x81\xb5\0" /* offset 12182 */
+ "\xf0\xa4\x8b\xae\0" /* offset 12186 */
+ "\xe8\x88\x98\0" /* offset 12191 */
+ "\xe4\xb8\xa6\0" /* offset 12195 */
+ "\xe5\x86\xb5\0" /* offset 12199 */
+ "\xe5\x85\xa8\0" /* offset 12203 */
+ "\xe4\xbe\x80\0" /* offset 12207 */
+ "\xe5\x85\x85\0" /* offset 12211 */
+ "\xe5\x86\x80\0" /* offset 12215 */
+ "\xe5\x8b\x87\0" /* offset 12219 */
+ "\xe5\x8b\xba\0" /* offset 12223 */
+ "\xe5\x95\x95\0" /* offset 12227 */
+ "\xe5\x96\x99\0" /* offset 12231 */
+ "\xe5\x97\xa2\0" /* offset 12235 */
+ "\xe5\xa2\xb3\0" /* offset 12239 */
+ "\xe5\xa5\x84\0" /* offset 12243 */
+ "\xe5\xa5\x94\0" /* offset 12247 */
+ "\xe5\xa9\xa2\0" /* offset 12251 */
+ "\xe5\xac\xa8\0" /* offset 12255 */
+ "\xe5\xbb\x92\0" /* offset 12259 */
+ "\xe5\xbb\x99\0" /* offset 12263 */
+ "\xe5\xbd\xa9\0" /* offset 12267 */
+ "\xe5\xbe\xad\0" /* offset 12271 */
+ "\xe6\x83\x98\0" /* offset 12275 */
+ "\xe6\x85\x8e\0" /* offset 12279 */
+ "\xe6\x84\x88\0" /* offset 12283 */
+ "\xe6\x85\xa0\0" /* offset 12287 */
+ "\xe6\x88\xb4\0" /* offset 12291 */
+ "\xe6\x8f\x84\0" /* offset 12295 */
+ "\xe6\x90\x9c\0" /* offset 12299 */
+ "\xe6\x91\x92\0" /* offset 12303 */
+ "\xe6\x95\x96\0" /* offset 12307 */
+ "\xe6\x9c\x9b\0" /* offset 12311 */
+ "\xe6\x9d\x96\0" /* offset 12315 */
+ "\xe6\xbb\x9b\0" /* offset 12319 */
+ "\xe6\xbb\x8b\0" /* offset 12323 */
+ "\xe7\x80\x9e\0" /* offset 12327 */
+ "\xe7\x9e\xa7\0" /* offset 12331 */
+ "\xe7\x88\xb5\0" /* offset 12335 */
+ "\xe7\x8a\xaf\0" /* offset 12339 */
+ "\xe7\x91\xb1\0" /* offset 12343 */
+ "\xe7\x94\x86\0" /* offset 12347 */
+ "\xe7\x94\xbb\0" /* offset 12351 */
+ "\xe7\x98\x9d\0" /* offset 12355 */
+ "\xe7\x98\x9f\0" /* offset 12359 */
+ "\xe7\x9b\x9b\0" /* offset 12363 */
+ "\xe7\x9b\xb4\0" /* offset 12367 */
+ "\xe7\x9d\x8a\0" /* offset 12371 */
+ "\xe7\x9d\x80\0" /* offset 12375 */
+ "\xe7\xa3\x8c\0" /* offset 12379 */
+ "\xe7\xaa\xb1\0" /* offset 12383 */
+ "\xe7\xb1\xbb\0" /* offset 12387 */
+ "\xe7\xb5\x9b\0" /* offset 12391 */
+ "\xe7\xbc\xbe\0" /* offset 12395 */
+ "\xe8\x8d\x92\0" /* offset 12399 */
+ "\xe8\x8f\xaf\0" /* offset 12403 */
+ "\xe8\x9d\xb9\0" /* offset 12407 */
+ "\xe8\xa5\x81\0" /* offset 12411 */
+ "\xe8\xa6\x86\0" /* offset 12415 */
+ "\xe8\xaa\xbf\0" /* offset 12419 */
+ "\xe8\xab\x8b\0" /* offset 12423 */
+ "\xe8\xab\xad\0" /* offset 12427 */
+ "\xe8\xae\x8a\0" /* offset 12431 */
+ "\xe8\xbc\xb8\0" /* offset 12435 */
+ "\xe9\x81\xb2\0" /* offset 12439 */
+ "\xe9\x86\x99\0" /* offset 12443 */
+ "\xe9\x89\xb6\0" /* offset 12447 */
+ "\xe9\x99\xbc\0" /* offset 12451 */
+ "\xe9\x9f\x9b\0" /* offset 12455 */
+ "\xe9\xa0\x8b\0" /* offset 12459 */
+ "\xe9\xac\x92\0" /* offset 12463 */
+ "\xf0\xa2\xa1\x8a\0" /* offset 12467 */
+ "\xf0\xa2\xa1\x84\0" /* offset 12472 */
+ "\xf0\xa3\x8f\x95\0" /* offset 12477 */
+ "\xe3\xae\x9d\0" /* offset 12482 */
+ "\xe4\x80\x98\0" /* offset 12486 */
+ "\xe4\x80\xb9\0" /* offset 12490 */
+ "\xf0\xa5\x89\x89\0" /* offset 12494 */
+ "\xf0\xa5\xb3\x90\0" /* offset 12499 */
+ "\xf0\xa7\xbb\x93\0" /* offset 12504 */
+ "\xe9\xbd\x83\0" /* offset 12509 */
+ "\xe9\xbe\x8e\0" /* offset 12513 */
+ "\x66\x66\0" /* offset 12517 */
+ "\x66\x69\0" /* offset 12520 */
+ "\x66\x6c\0" /* offset 12523 */
+ "\x66\x66\x69\0" /* offset 12526 */
+ "\x66\x66\x6c\0" /* offset 12530 */
+ "\x73\x74\0" /* offset 12534 */
+ "\xd5\xb4\xd5\xb6\0" /* offset 12537 */
+ "\xd5\xb4\xd5\xa5\0" /* offset 12542 */
+ "\xd5\xb4\xd5\xab\0" /* offset 12547 */
+ "\xd5\xbe\xd5\xb6\0" /* offset 12552 */
+ "\xd5\xb4\xd5\xad\0" /* offset 12557 */
+ "\xd7\x99\xd6\xb4\0" /* offset 12562 */
+ "\xd7\xb2\xd6\xb7\0" /* offset 12567 */
+ "\xd7\xa2\0" /* offset 12572 */
+ "\xd7\x94\0" /* offset 12575 */
+ "\xd7\x9b\0" /* offset 12578 */
+ "\xd7\x9c\0" /* offset 12581 */
+ "\xd7\x9d\0" /* offset 12584 */
+ "\xd7\xa8\0" /* offset 12587 */
+ "\xd7\xaa\0" /* offset 12590 */
+ "\xd7\xa9\xd7\x81\0" /* offset 12593 */
+ "\xd7\xa9\xd7\x82\0" /* offset 12598 */
+ "\xd7\xa9\xd6\xbc\xd7\x81\0" /* offset 12603 */
+ "\xd7\xa9\xd6\xbc\xd7\x82\0" /* offset 12610 */
+ "\xd7\x90\xd6\xb7\0" /* offset 12617 */
+ "\xd7\x90\xd6\xb8\0" /* offset 12622 */
+ "\xd7\x90\xd6\xbc\0" /* offset 12627 */
+ "\xd7\x91\xd6\xbc\0" /* offset 12632 */
+ "\xd7\x92\xd6\xbc\0" /* offset 12637 */
+ "\xd7\x93\xd6\xbc\0" /* offset 12642 */
+ "\xd7\x94\xd6\xbc\0" /* offset 12647 */
+ "\xd7\x95\xd6\xbc\0" /* offset 12652 */
+ "\xd7\x96\xd6\xbc\0" /* offset 12657 */
+ "\xd7\x98\xd6\xbc\0" /* offset 12662 */
+ "\xd7\x99\xd6\xbc\0" /* offset 12667 */
+ "\xd7\x9a\xd6\xbc\0" /* offset 12672 */
+ "\xd7\x9b\xd6\xbc\0" /* offset 12677 */
+ "\xd7\x9c\xd6\xbc\0" /* offset 12682 */
+ "\xd7\x9e\xd6\xbc\0" /* offset 12687 */
+ "\xd7\xa0\xd6\xbc\0" /* offset 12692 */
+ "\xd7\xa1\xd6\xbc\0" /* offset 12697 */
+ "\xd7\xa3\xd6\xbc\0" /* offset 12702 */
+ "\xd7\xa4\xd6\xbc\0" /* offset 12707 */
+ "\xd7\xa6\xd6\xbc\0" /* offset 12712 */
+ "\xd7\xa7\xd6\xbc\0" /* offset 12717 */
+ "\xd7\xa8\xd6\xbc\0" /* offset 12722 */
+ "\xd7\xa9\xd6\xbc\0" /* offset 12727 */
+ "\xd7\xaa\xd6\xbc\0" /* offset 12732 */
+ "\xd7\x95\xd6\xb9\0" /* offset 12737 */
+ "\xd7\x91\xd6\xbf\0" /* offset 12742 */
+ "\xd7\x9b\xd6\xbf\0" /* offset 12747 */
+ "\xd7\xa4\xd6\xbf\0" /* offset 12752 */
+ "\xd7\x90\xd7\x9c\0" /* offset 12757 */
+ "\xd9\xb1\0" /* offset 12762 */
+ "\xd9\xbb\0" /* offset 12765 */
+ "\xd9\xbe\0" /* offset 12768 */
+ "\xda\x80\0" /* offset 12771 */
+ "\xd9\xba\0" /* offset 12774 */
+ "\xd9\xbf\0" /* offset 12777 */
+ "\xd9\xb9\0" /* offset 12780 */
+ "\xda\xa4\0" /* offset 12783 */
+ "\xda\xa6\0" /* offset 12786 */
+ "\xda\x84\0" /* offset 12789 */
+ "\xda\x83\0" /* offset 12792 */
+ "\xda\x86\0" /* offset 12795 */
+ "\xda\x87\0" /* offset 12798 */
+ "\xda\x8d\0" /* offset 12801 */
+ "\xda\x8c\0" /* offset 12804 */
+ "\xda\x8e\0" /* offset 12807 */
+ "\xda\x88\0" /* offset 12810 */
+ "\xda\x98\0" /* offset 12813 */
+ "\xda\x91\0" /* offset 12816 */
+ "\xda\xa9\0" /* offset 12819 */
+ "\xda\xaf\0" /* offset 12822 */
+ "\xda\xb3\0" /* offset 12825 */
+ "\xda\xb1\0" /* offset 12828 */
+ "\xda\xba\0" /* offset 12831 */
+ "\xda\xbb\0" /* offset 12834 */
+ "\xdb\x81\0" /* offset 12837 */
+ "\xda\xbe\0" /* offset 12840 */
+ "\xdb\x92\0" /* offset 12843 */
+ "\xda\xad\0" /* offset 12846 */
+ "\xdb\x87\0" /* offset 12849 */
+ "\xdb\x86\0" /* offset 12852 */
+ "\xdb\x88\0" /* offset 12855 */
+ "\xdb\x8b\0" /* offset 12858 */
+ "\xdb\x85\0" /* offset 12861 */
+ "\xdb\x89\0" /* offset 12864 */
+ "\xdb\x90\0" /* offset 12867 */
+ "\xd9\x89\0" /* offset 12870 */
+ "\xd9\x8a\xd9\x94\xd8\xa7\0" /* offset 12873 */
+ "\xd9\x8a\xd9\x94\xdb\x95\0" /* offset 12880 */
+ "\xd9\x8a\xd9\x94\xd9\x88\0" /* offset 12887 */
+ "\xd9\x8a\xd9\x94\xdb\x87\0" /* offset 12894 */
+ "\xd9\x8a\xd9\x94\xdb\x86\0" /* offset 12901 */
+ "\xd9\x8a\xd9\x94\xdb\x88\0" /* offset 12908 */
+ "\xd9\x8a\xd9\x94\xdb\x90\0" /* offset 12915 */
+ "\xd9\x8a\xd9\x94\xd9\x89\0" /* offset 12922 */
+ "\xdb\x8c\0" /* offset 12929 */
+ "\xd9\x8a\xd9\x94\xd8\xac\0" /* offset 12932 */
+ "\xd9\x8a\xd9\x94\xd8\xad\0" /* offset 12939 */
+ "\xd9\x8a\xd9\x94\xd9\x85\0" /* offset 12946 */
+ "\xd9\x8a\xd9\x94\xd9\x8a\0" /* offset 12953 */
+ "\xd8\xa8\xd8\xac\0" /* offset 12960 */
+ "\xd8\xa8\xd8\xad\0" /* offset 12965 */
+ "\xd8\xa8\xd8\xae\0" /* offset 12970 */
+ "\xd8\xa8\xd9\x85\0" /* offset 12975 */
+ "\xd8\xa8\xd9\x89\0" /* offset 12980 */
+ "\xd8\xa8\xd9\x8a\0" /* offset 12985 */
+ "\xd8\xaa\xd8\xac\0" /* offset 12990 */
+ "\xd8\xaa\xd8\xad\0" /* offset 12995 */
+ "\xd8\xaa\xd8\xae\0" /* offset 13000 */
+ "\xd8\xaa\xd9\x85\0" /* offset 13005 */
+ "\xd8\xaa\xd9\x89\0" /* offset 13010 */
+ "\xd8\xaa\xd9\x8a\0" /* offset 13015 */
+ "\xd8\xab\xd8\xac\0" /* offset 13020 */
+ "\xd8\xab\xd9\x85\0" /* offset 13025 */
+ "\xd8\xab\xd9\x89\0" /* offset 13030 */
+ "\xd8\xab\xd9\x8a\0" /* offset 13035 */
+ "\xd8\xac\xd8\xad\0" /* offset 13040 */
+ "\xd8\xac\xd9\x85\0" /* offset 13045 */
+ "\xd8\xad\xd8\xac\0" /* offset 13050 */
+ "\xd8\xad\xd9\x85\0" /* offset 13055 */
+ "\xd8\xae\xd8\xac\0" /* offset 13060 */
+ "\xd8\xae\xd8\xad\0" /* offset 13065 */
+ "\xd8\xae\xd9\x85\0" /* offset 13070 */
+ "\xd8\xb3\xd8\xac\0" /* offset 13075 */
+ "\xd8\xb3\xd8\xad\0" /* offset 13080 */
+ "\xd8\xb3\xd8\xae\0" /* offset 13085 */
+ "\xd8\xb3\xd9\x85\0" /* offset 13090 */
+ "\xd8\xb5\xd8\xad\0" /* offset 13095 */
+ "\xd8\xb5\xd9\x85\0" /* offset 13100 */
+ "\xd8\xb6\xd8\xac\0" /* offset 13105 */
+ "\xd8\xb6\xd8\xad\0" /* offset 13110 */
+ "\xd8\xb6\xd8\xae\0" /* offset 13115 */
+ "\xd8\xb6\xd9\x85\0" /* offset 13120 */
+ "\xd8\xb7\xd8\xad\0" /* offset 13125 */
+ "\xd8\xb7\xd9\x85\0" /* offset 13130 */
+ "\xd8\xb8\xd9\x85\0" /* offset 13135 */
+ "\xd8\xb9\xd8\xac\0" /* offset 13140 */
+ "\xd8\xb9\xd9\x85\0" /* offset 13145 */
+ "\xd8\xba\xd8\xac\0" /* offset 13150 */
+ "\xd8\xba\xd9\x85\0" /* offset 13155 */
+ "\xd9\x81\xd8\xac\0" /* offset 13160 */
+ "\xd9\x81\xd8\xad\0" /* offset 13165 */
+ "\xd9\x81\xd8\xae\0" /* offset 13170 */
+ "\xd9\x81\xd9\x85\0" /* offset 13175 */
+ "\xd9\x81\xd9\x89\0" /* offset 13180 */
+ "\xd9\x81\xd9\x8a\0" /* offset 13185 */
+ "\xd9\x82\xd8\xad\0" /* offset 13190 */
+ "\xd9\x82\xd9\x85\0" /* offset 13195 */
+ "\xd9\x82\xd9\x89\0" /* offset 13200 */
+ "\xd9\x82\xd9\x8a\0" /* offset 13205 */
+ "\xd9\x83\xd8\xa7\0" /* offset 13210 */
+ "\xd9\x83\xd8\xac\0" /* offset 13215 */
+ "\xd9\x83\xd8\xad\0" /* offset 13220 */
+ "\xd9\x83\xd8\xae\0" /* offset 13225 */
+ "\xd9\x83\xd9\x84\0" /* offset 13230 */
+ "\xd9\x83\xd9\x85\0" /* offset 13235 */
+ "\xd9\x83\xd9\x89\0" /* offset 13240 */
+ "\xd9\x83\xd9\x8a\0" /* offset 13245 */
+ "\xd9\x84\xd8\xac\0" /* offset 13250 */
+ "\xd9\x84\xd8\xad\0" /* offset 13255 */
+ "\xd9\x84\xd8\xae\0" /* offset 13260 */
+ "\xd9\x84\xd9\x85\0" /* offset 13265 */
+ "\xd9\x84\xd9\x89\0" /* offset 13270 */
+ "\xd9\x84\xd9\x8a\0" /* offset 13275 */
+ "\xd9\x85\xd8\xac\0" /* offset 13280 */
+ "\xd9\x85\xd8\xad\0" /* offset 13285 */
+ "\xd9\x85\xd8\xae\0" /* offset 13290 */
+ "\xd9\x85\xd9\x85\0" /* offset 13295 */
+ "\xd9\x85\xd9\x89\0" /* offset 13300 */
+ "\xd9\x85\xd9\x8a\0" /* offset 13305 */
+ "\xd9\x86\xd8\xac\0" /* offset 13310 */
+ "\xd9\x86\xd8\xad\0" /* offset 13315 */
+ "\xd9\x86\xd8\xae\0" /* offset 13320 */
+ "\xd9\x86\xd9\x85\0" /* offset 13325 */
+ "\xd9\x86\xd9\x89\0" /* offset 13330 */
+ "\xd9\x86\xd9\x8a\0" /* offset 13335 */
+ "\xd9\x87\xd8\xac\0" /* offset 13340 */
+ "\xd9\x87\xd9\x85\0" /* offset 13345 */
+ "\xd9\x87\xd9\x89\0" /* offset 13350 */
+ "\xd9\x87\xd9\x8a\0" /* offset 13355 */
+ "\xd9\x8a\xd8\xac\0" /* offset 13360 */
+ "\xd9\x8a\xd8\xad\0" /* offset 13365 */
+ "\xd9\x8a\xd8\xae\0" /* offset 13370 */
+ "\xd9\x8a\xd9\x85\0" /* offset 13375 */
+ "\xd9\x8a\xd9\x89\0" /* offset 13380 */
+ "\xd9\x8a\xd9\x8a\0" /* offset 13385 */
+ "\xd8\xb0\xd9\xb0\0" /* offset 13390 */
+ "\xd8\xb1\xd9\xb0\0" /* offset 13395 */
+ "\xd9\x89\xd9\xb0\0" /* offset 13400 */
+ "\x20\xd9\x8c\xd9\x91\0" /* offset 13405 */
+ "\x20\xd9\x8d\xd9\x91\0" /* offset 13411 */
+ "\x20\xd9\x8e\xd9\x91\0" /* offset 13417 */
+ "\x20\xd9\x8f\xd9\x91\0" /* offset 13423 */
+ "\x20\xd9\x90\xd9\x91\0" /* offset 13429 */
+ "\x20\xd9\x91\xd9\xb0\0" /* offset 13435 */
+ "\xd9\x8a\xd9\x94\xd8\xb1\0" /* offset 13441 */
+ "\xd9\x8a\xd9\x94\xd8\xb2\0" /* offset 13448 */
+ "\xd9\x8a\xd9\x94\xd9\x86\0" /* offset 13455 */
+ "\xd8\xa8\xd8\xb1\0" /* offset 13462 */
+ "\xd8\xa8\xd8\xb2\0" /* offset 13467 */
+ "\xd8\xa8\xd9\x86\0" /* offset 13472 */
+ "\xd8\xaa\xd8\xb1\0" /* offset 13477 */
+ "\xd8\xaa\xd8\xb2\0" /* offset 13482 */
+ "\xd8\xaa\xd9\x86\0" /* offset 13487 */
+ "\xd8\xab\xd8\xb1\0" /* offset 13492 */
+ "\xd8\xab\xd8\xb2\0" /* offset 13497 */
+ "\xd8\xab\xd9\x86\0" /* offset 13502 */
+ "\xd9\x85\xd8\xa7\0" /* offset 13507 */
+ "\xd9\x86\xd8\xb1\0" /* offset 13512 */
+ "\xd9\x86\xd8\xb2\0" /* offset 13517 */
+ "\xd9\x86\xd9\x86\0" /* offset 13522 */
+ "\xd9\x8a\xd8\xb1\0" /* offset 13527 */
+ "\xd9\x8a\xd8\xb2\0" /* offset 13532 */
+ "\xd9\x8a\xd9\x86\0" /* offset 13537 */
+ "\xd9\x8a\xd9\x94\xd8\xae\0" /* offset 13542 */
+ "\xd9\x8a\xd9\x94\xd9\x87\0" /* offset 13549 */
+ "\xd8\xa8\xd9\x87\0" /* offset 13556 */
+ "\xd8\xaa\xd9\x87\0" /* offset 13561 */
+ "\xd8\xb5\xd8\xae\0" /* offset 13566 */
+ "\xd9\x84\xd9\x87\0" /* offset 13571 */
+ "\xd9\x86\xd9\x87\0" /* offset 13576 */
+ "\xd9\x87\xd9\xb0\0" /* offset 13581 */
+ "\xd9\x8a\xd9\x87\0" /* offset 13586 */
+ "\xd8\xab\xd9\x87\0" /* offset 13591 */
+ "\xd8\xb3\xd9\x87\0" /* offset 13596 */
+ "\xd8\xb4\xd9\x85\0" /* offset 13601 */
+ "\xd8\xb4\xd9\x87\0" /* offset 13606 */
+ "\xd9\x80\xd9\x8e\xd9\x91\0" /* offset 13611 */
+ "\xd9\x80\xd9\x8f\xd9\x91\0" /* offset 13618 */
+ "\xd9\x80\xd9\x90\xd9\x91\0" /* offset 13625 */
+ "\xd8\xb7\xd9\x89\0" /* offset 13632 */
+ "\xd8\xb7\xd9\x8a\0" /* offset 13637 */
+ "\xd8\xb9\xd9\x89\0" /* offset 13642 */
+ "\xd8\xb9\xd9\x8a\0" /* offset 13647 */
+ "\xd8\xba\xd9\x89\0" /* offset 13652 */
+ "\xd8\xba\xd9\x8a\0" /* offset 13657 */
+ "\xd8\xb3\xd9\x89\0" /* offset 13662 */
+ "\xd8\xb3\xd9\x8a\0" /* offset 13667 */
+ "\xd8\xb4\xd9\x89\0" /* offset 13672 */
+ "\xd8\xb4\xd9\x8a\0" /* offset 13677 */
+ "\xd8\xad\xd9\x89\0" /* offset 13682 */
+ "\xd8\xad\xd9\x8a\0" /* offset 13687 */
+ "\xd8\xac\xd9\x89\0" /* offset 13692 */
+ "\xd8\xac\xd9\x8a\0" /* offset 13697 */
+ "\xd8\xae\xd9\x89\0" /* offset 13702 */
+ "\xd8\xae\xd9\x8a\0" /* offset 13707 */
+ "\xd8\xb5\xd9\x89\0" /* offset 13712 */
+ "\xd8\xb5\xd9\x8a\0" /* offset 13717 */
+ "\xd8\xb6\xd9\x89\0" /* offset 13722 */
+ "\xd8\xb6\xd9\x8a\0" /* offset 13727 */
+ "\xd8\xb4\xd8\xac\0" /* offset 13732 */
+ "\xd8\xb4\xd8\xad\0" /* offset 13737 */
+ "\xd8\xb4\xd8\xae\0" /* offset 13742 */
+ "\xd8\xb4\xd8\xb1\0" /* offset 13747 */
+ "\xd8\xb3\xd8\xb1\0" /* offset 13752 */
+ "\xd8\xb5\xd8\xb1\0" /* offset 13757 */
+ "\xd8\xb6\xd8\xb1\0" /* offset 13762 */
+ "\xd8\xa7\xd9\x8b\0" /* offset 13767 */
+ "\xd8\xaa\xd8\xac\xd9\x85\0" /* offset 13772 */
+ "\xd8\xaa\xd8\xad\xd8\xac\0" /* offset 13779 */
+ "\xd8\xaa\xd8\xad\xd9\x85\0" /* offset 13786 */
+ "\xd8\xaa\xd8\xae\xd9\x85\0" /* offset 13793 */
+ "\xd8\xaa\xd9\x85\xd8\xac\0" /* offset 13800 */
+ "\xd8\xaa\xd9\x85\xd8\xad\0" /* offset 13807 */
+ "\xd8\xaa\xd9\x85\xd8\xae\0" /* offset 13814 */
+ "\xd8\xac\xd9\x85\xd8\xad\0" /* offset 13821 */
+ "\xd8\xad\xd9\x85\xd9\x8a\0" /* offset 13828 */
+ "\xd8\xad\xd9\x85\xd9\x89\0" /* offset 13835 */
+ "\xd8\xb3\xd8\xad\xd8\xac\0" /* offset 13842 */
+ "\xd8\xb3\xd8\xac\xd8\xad\0" /* offset 13849 */
+ "\xd8\xb3\xd8\xac\xd9\x89\0" /* offset 13856 */
+ "\xd8\xb3\xd9\x85\xd8\xad\0" /* offset 13863 */
+ "\xd8\xb3\xd9\x85\xd8\xac\0" /* offset 13870 */
+ "\xd8\xb3\xd9\x85\xd9\x85\0" /* offset 13877 */
+ "\xd8\xb5\xd8\xad\xd8\xad\0" /* offset 13884 */
+ "\xd8\xb5\xd9\x85\xd9\x85\0" /* offset 13891 */
+ "\xd8\xb4\xd8\xad\xd9\x85\0" /* offset 13898 */
+ "\xd8\xb4\xd8\xac\xd9\x8a\0" /* offset 13905 */
+ "\xd8\xb4\xd9\x85\xd8\xae\0" /* offset 13912 */
+ "\xd8\xb4\xd9\x85\xd9\x85\0" /* offset 13919 */
+ "\xd8\xb6\xd8\xad\xd9\x89\0" /* offset 13926 */
+ "\xd8\xb6\xd8\xae\xd9\x85\0" /* offset 13933 */
+ "\xd8\xb7\xd9\x85\xd8\xad\0" /* offset 13940 */
+ "\xd8\xb7\xd9\x85\xd9\x85\0" /* offset 13947 */
+ "\xd8\xb7\xd9\x85\xd9\x8a\0" /* offset 13954 */
+ "\xd8\xb9\xd8\xac\xd9\x85\0" /* offset 13961 */
+ "\xd8\xb9\xd9\x85\xd9\x85\0" /* offset 13968 */
+ "\xd8\xb9\xd9\x85\xd9\x89\0" /* offset 13975 */
+ "\xd8\xba\xd9\x85\xd9\x85\0" /* offset 13982 */
+ "\xd8\xba\xd9\x85\xd9\x8a\0" /* offset 13989 */
+ "\xd8\xba\xd9\x85\xd9\x89\0" /* offset 13996 */
+ "\xd9\x81\xd8\xae\xd9\x85\0" /* offset 14003 */
+ "\xd9\x82\xd9\x85\xd8\xad\0" /* offset 14010 */
+ "\xd9\x82\xd9\x85\xd9\x85\0" /* offset 14017 */
+ "\xd9\x84\xd8\xad\xd9\x85\0" /* offset 14024 */
+ "\xd9\x84\xd8\xad\xd9\x8a\0" /* offset 14031 */
+ "\xd9\x84\xd8\xad\xd9\x89\0" /* offset 14038 */
+ "\xd9\x84\xd8\xac\xd8\xac\0" /* offset 14045 */
+ "\xd9\x84\xd8\xae\xd9\x85\0" /* offset 14052 */
+ "\xd9\x84\xd9\x85\xd8\xad\0" /* offset 14059 */
+ "\xd9\x85\xd8\xad\xd8\xac\0" /* offset 14066 */
+ "\xd9\x85\xd8\xad\xd9\x85\0" /* offset 14073 */
+ "\xd9\x85\xd8\xad\xd9\x8a\0" /* offset 14080 */
+ "\xd9\x85\xd8\xac\xd8\xad\0" /* offset 14087 */
+ "\xd9\x85\xd8\xac\xd9\x85\0" /* offset 14094 */
+ "\xd9\x85\xd8\xae\xd8\xac\0" /* offset 14101 */
+ "\xd9\x85\xd8\xae\xd9\x85\0" /* offset 14108 */
+ "\xd9\x85\xd8\xac\xd8\xae\0" /* offset 14115 */
+ "\xd9\x87\xd9\x85\xd8\xac\0" /* offset 14122 */
+ "\xd9\x87\xd9\x85\xd9\x85\0" /* offset 14129 */
+ "\xd9\x86\xd8\xad\xd9\x85\0" /* offset 14136 */
+ "\xd9\x86\xd8\xad\xd9\x89\0" /* offset 14143 */
+ "\xd9\x86\xd8\xac\xd9\x85\0" /* offset 14150 */
+ "\xd9\x86\xd8\xac\xd9\x89\0" /* offset 14157 */
+ "\xd9\x86\xd9\x85\xd9\x8a\0" /* offset 14164 */
+ "\xd9\x86\xd9\x85\xd9\x89\0" /* offset 14171 */
+ "\xd9\x8a\xd9\x85\xd9\x85\0" /* offset 14178 */
+ "\xd8\xa8\xd8\xae\xd9\x8a\0" /* offset 14185 */
+ "\xd8\xaa\xd8\xac\xd9\x8a\0" /* offset 14192 */
+ "\xd8\xaa\xd8\xac\xd9\x89\0" /* offset 14199 */
+ "\xd8\xaa\xd8\xae\xd9\x8a\0" /* offset 14206 */
+ "\xd8\xaa\xd8\xae\xd9\x89\0" /* offset 14213 */
+ "\xd8\xaa\xd9\x85\xd9\x8a\0" /* offset 14220 */
+ "\xd8\xaa\xd9\x85\xd9\x89\0" /* offset 14227 */
+ "\xd8\xac\xd9\x85\xd9\x8a\0" /* offset 14234 */
+ "\xd8\xac\xd8\xad\xd9\x89\0" /* offset 14241 */
+ "\xd8\xac\xd9\x85\xd9\x89\0" /* offset 14248 */
+ "\xd8\xb3\xd8\xae\xd9\x89\0" /* offset 14255 */
+ "\xd8\xb5\xd8\xad\xd9\x8a\0" /* offset 14262 */
+ "\xd8\xb4\xd8\xad\xd9\x8a\0" /* offset 14269 */
+ "\xd8\xb6\xd8\xad\xd9\x8a\0" /* offset 14276 */
+ "\xd9\x84\xd8\xac\xd9\x8a\0" /* offset 14283 */
+ "\xd9\x84\xd9\x85\xd9\x8a\0" /* offset 14290 */
+ "\xd9\x8a\xd8\xad\xd9\x8a\0" /* offset 14297 */
+ "\xd9\x8a\xd8\xac\xd9\x8a\0" /* offset 14304 */
+ "\xd9\x8a\xd9\x85\xd9\x8a\0" /* offset 14311 */
+ "\xd9\x85\xd9\x85\xd9\x8a\0" /* offset 14318 */
+ "\xd9\x82\xd9\x85\xd9\x8a\0" /* offset 14325 */
+ "\xd9\x86\xd8\xad\xd9\x8a\0" /* offset 14332 */
+ "\xd8\xb9\xd9\x85\xd9\x8a\0" /* offset 14339 */
+ "\xd9\x83\xd9\x85\xd9\x8a\0" /* offset 14346 */
+ "\xd9\x86\xd8\xac\xd8\xad\0" /* offset 14353 */
+ "\xd9\x85\xd8\xae\xd9\x8a\0" /* offset 14360 */
+ "\xd9\x84\xd8\xac\xd9\x85\0" /* offset 14367 */
+ "\xd9\x83\xd9\x85\xd9\x85\0" /* offset 14374 */
+ "\xd8\xac\xd8\xad\xd9\x8a\0" /* offset 14381 */
+ "\xd8\xad\xd8\xac\xd9\x8a\0" /* offset 14388 */
+ "\xd9\x85\xd8\xac\xd9\x8a\0" /* offset 14395 */
+ "\xd9\x81\xd9\x85\xd9\x8a\0" /* offset 14402 */
+ "\xd8\xa8\xd8\xad\xd9\x8a\0" /* offset 14409 */
+ "\xd8\xb3\xd8\xae\xd9\x8a\0" /* offset 14416 */
+ "\xd9\x86\xd8\xac\xd9\x8a\0" /* offset 14423 */
+ "\xd8\xb5\xd9\x84\xdb\x92\0" /* offset 14430 */
+ "\xd9\x82\xd9\x84\xdb\x92\0" /* offset 14437 */
+ "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\0" /* offset 14444 */
+ "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1\0" /* offset 14453 */
+ "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf\0" /* offset 14462 */
+ "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85\0" /* offset 14471 */
+ "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84\0" /* offset 14480 */
+ "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\0" /* offset 14489 */
+ "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14498 */
+ "\xd8\xb5\xd9\x84\xd9\x89\0" /* offset 14507 */
+ "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14514 */
+ "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87\0" /* offset 14548 */
+ "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84\0" /* offset 14564 */
+ "\x2c\0" /* offset 14573 */
+ "\xe3\x80\x81\0" /* offset 14575 */
+ "\xe3\x80\x82\0" /* offset 14579 */
+ "\x3a\0" /* offset 14583 */
+ "\x21\0" /* offset 14585 */
+ "\x3f\0" /* offset 14587 */
+ "\xe3\x80\x96\0" /* offset 14589 */
+ "\xe3\x80\x97\0" /* offset 14593 */
+ "\xe2\x80\x94\0" /* offset 14597 */
+ "\xe2\x80\x93\0" /* offset 14601 */
+ "\x5f\0" /* offset 14605 */
+ "\x7b\0" /* offset 14607 */
+ "\x7d\0" /* offset 14609 */
+ "\xe3\x80\x94\0" /* offset 14611 */
+ "\xe3\x80\x95\0" /* offset 14615 */
+ "\xe3\x80\x90\0" /* offset 14619 */
+ "\xe3\x80\x91\0" /* offset 14623 */
+ "\xe3\x80\x8a\0" /* offset 14627 */
+ "\xe3\x80\x8b\0" /* offset 14631 */
+ "\xe3\x80\x8c\0" /* offset 14635 */
+ "\xe3\x80\x8d\0" /* offset 14639 */
+ "\xe3\x80\x8e\0" /* offset 14643 */
+ "\xe3\x80\x8f\0" /* offset 14647 */
+ "\x5b\0" /* offset 14651 */
+ "\x5d\0" /* offset 14653 */
+ "\x23\0" /* offset 14655 */
+ "\x26\0" /* offset 14657 */
+ "\x2a\0" /* offset 14659 */
+ "\x2d\0" /* offset 14661 */
+ "\x3c\0" /* offset 14663 */
+ "\x3e\0" /* offset 14665 */
+ "\x5c\0" /* offset 14667 */
+ "\x24\0" /* offset 14669 */
+ "\x25\0" /* offset 14671 */
+ "\x40\0" /* offset 14673 */
+ "\x20\xd9\x8b\0" /* offset 14675 */
+ "\xd9\x80\xd9\x8b\0" /* offset 14679 */
+ "\x20\xd9\x8c\0" /* offset 14684 */
+ "\x20\xd9\x8d\0" /* offset 14688 */
+ "\x20\xd9\x8e\0" /* offset 14692 */
+ "\xd9\x80\xd9\x8e\0" /* offset 14696 */
+ "\x20\xd9\x8f\0" /* offset 14701 */
+ "\xd9\x80\xd9\x8f\0" /* offset 14705 */
+ "\x20\xd9\x90\0" /* offset 14710 */
+ "\xd9\x80\xd9\x90\0" /* offset 14714 */
+ "\x20\xd9\x91\0" /* offset 14719 */
+ "\xd9\x80\xd9\x91\0" /* offset 14723 */
+ "\x20\xd9\x92\0" /* offset 14728 */
+ "\xd9\x80\xd9\x92\0" /* offset 14732 */
+ "\xd8\xa1\0" /* offset 14737 */
+ "\xd8\xa7\0" /* offset 14740 */
+ "\xd8\xa8\0" /* offset 14743 */
+ "\xd8\xa9\0" /* offset 14746 */
+ "\xd8\xaa\0" /* offset 14749 */
+ "\xd8\xab\0" /* offset 14752 */
+ "\xd8\xac\0" /* offset 14755 */
+ "\xd8\xad\0" /* offset 14758 */
+ "\xd8\xae\0" /* offset 14761 */
+ "\xd8\xaf\0" /* offset 14764 */
+ "\xd8\xb0\0" /* offset 14767 */
+ "\xd8\xb1\0" /* offset 14770 */
+ "\xd8\xb2\0" /* offset 14773 */
+ "\xd8\xb3\0" /* offset 14776 */
+ "\xd8\xb4\0" /* offset 14779 */
+ "\xd8\xb5\0" /* offset 14782 */
+ "\xd8\xb6\0" /* offset 14785 */
+ "\xd8\xb7\0" /* offset 14788 */
+ "\xd8\xb8\0" /* offset 14791 */
+ "\xd8\xb9\0" /* offset 14794 */
+ "\xd8\xba\0" /* offset 14797 */
+ "\xd9\x81\0" /* offset 14800 */
+ "\xd9\x82\0" /* offset 14803 */
+ "\xd9\x83\0" /* offset 14806 */
+ "\xd9\x84\0" /* offset 14809 */
+ "\xd9\x85\0" /* offset 14812 */
+ "\xd9\x86\0" /* offset 14815 */
+ "\xd9\x87\0" /* offset 14818 */
+ "\xd9\x88\0" /* offset 14821 */
+ "\xd9\x8a\0" /* offset 14824 */
+ "\xd9\x84\xd8\xa7\xd9\x93\0" /* offset 14827 */
+ "\xd9\x84\xd8\xa7\xd9\x94\0" /* offset 14834 */
+ "\xd9\x84\xd8\xa7\xd9\x95\0" /* offset 14841 */
+ "\xd9\x84\xd8\xa7\0" /* offset 14848 */
+ "\x22\0" /* offset 14853 */
+ "\x27\0" /* offset 14855 */
+ "\x2f\0" /* offset 14857 */
+ "\x5e\0" /* offset 14859 */
+ "\x7c\0" /* offset 14861 */
+ "\x7e\0" /* offset 14863 */
+ "\xe2\xa6\x85\0" /* offset 14865 */
+ "\xe2\xa6\x86\0" /* offset 14869 */
+ "\xe3\x83\xbb\0" /* offset 14873 */
+ "\xe3\x82\xa1\0" /* offset 14877 */
+ "\xe3\x82\xa3\0" /* offset 14881 */
+ "\xe3\x82\xa5\0" /* offset 14885 */
+ "\xe3\x82\xa7\0" /* offset 14889 */
+ "\xe3\x82\xa9\0" /* offset 14893 */
+ "\xe3\x83\xa3\0" /* offset 14897 */
+ "\xe3\x83\xa5\0" /* offset 14901 */
+ "\xe3\x83\xa7\0" /* offset 14905 */
+ "\xe3\x83\x83\0" /* offset 14909 */
+ "\xe3\x83\xbc\0" /* offset 14913 */
+ "\xe3\x83\xb3\0" /* offset 14917 */
+ "\xe3\x82\x99\0" /* offset 14921 */
+ "\xe3\x82\x9a\0" /* offset 14925 */
+ "\xc2\xa2\0" /* offset 14929 */
+ "\xc2\xa3\0" /* offset 14932 */
+ "\xc2\xac\0" /* offset 14935 */
+ "\xc2\xa6\0" /* offset 14938 */
+ "\xc2\xa5\0" /* offset 14941 */
+ "\xe2\x82\xa9\0" /* offset 14944 */
+ "\xe2\x94\x82\0" /* offset 14948 */
+ "\xe2\x86\x90\0" /* offset 14952 */
+ "\xe2\x86\x91\0" /* offset 14956 */
+ "\xe2\x86\x92\0" /* offset 14960 */
+ "\xe2\x86\x93\0" /* offset 14964 */
+ "\xe2\x96\xa0\0" /* offset 14968 */
+ "\xe2\x97\x8b\0" /* offset 14972 */
+ "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 14976 */
+ "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 14985 */
+ "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 14994 */
+ "\xf0\x91\x84\xb1\xf0\x91\x84\xa7\0" /* offset 15003 */
+ "\xf0\x91\x84\xb2\xf0\x91\x84\xa7\0" /* offset 15012 */
+ "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 15021 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 15030 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15039 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15052 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15065 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15078 */
+ "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15091 */
+ "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15104 */
+ "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15113 */
+ "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15122 */
+ "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15135 */
+ "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15148 */
+ "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15161 */
+ "\xc4\xb1\0" /* offset 15174 */
+ "\xc8\xb7\0" /* offset 15177 */
+ "\xce\x91\0" /* offset 15180 */
+ "\xce\x92\0" /* offset 15183 */
+ "\xce\x94\0" /* offset 15186 */
+ "\xce\x95\0" /* offset 15189 */
+ "\xce\x96\0" /* offset 15192 */
+ "\xce\x97\0" /* offset 15195 */
+ "\xce\x99\0" /* offset 15198 */
+ "\xce\x9a\0" /* offset 15201 */
+ "\xce\x9b\0" /* offset 15204 */
+ "\xce\x9c\0" /* offset 15207 */
+ "\xce\x9d\0" /* offset 15210 */
+ "\xce\x9e\0" /* offset 15213 */
+ "\xce\x9f\0" /* offset 15216 */
+ "\xce\xa1\0" /* offset 15219 */
+ "\xce\xa4\0" /* offset 15222 */
+ "\xce\xa6\0" /* offset 15225 */
+ "\xce\xa7\0" /* offset 15228 */
+ "\xce\xa8\0" /* offset 15231 */
+ "\xe2\x88\x87\0" /* offset 15234 */
+ "\xce\xb1\0" /* offset 15238 */
+ "\xce\xb6\0" /* offset 15241 */
+ "\xce\xb7\0" /* offset 15244 */
+ "\xce\xbb\0" /* offset 15247 */
+ "\xce\xbd\0" /* offset 15250 */
+ "\xce\xbe\0" /* offset 15253 */
+ "\xce\xbf\0" /* offset 15256 */
+ "\xcf\x83\0" /* offset 15259 */
+ "\xcf\x84\0" /* offset 15262 */
+ "\xcf\x85\0" /* offset 15265 */
+ "\xcf\x88\0" /* offset 15268 */
+ "\xcf\x89\0" /* offset 15271 */
+ "\xe2\x88\x82\0" /* offset 15274 */
+ "\xcf\x9c\0" /* offset 15278 */
+ "\xcf\x9d\0" /* offset 15281 */
+ "\xd9\xae\0" /* offset 15284 */
+ "\xda\xa1\0" /* offset 15287 */
+ "\xd9\xaf\0" /* offset 15290 */
+ "\x30\x2e\0" /* offset 15293 */
+ "\x30\x2c\0" /* offset 15296 */
+ "\x31\x2c\0" /* offset 15299 */
+ "\x32\x2c\0" /* offset 15302 */
+ "\x33\x2c\0" /* offset 15305 */
+ "\x34\x2c\0" /* offset 15308 */
+ "\x35\x2c\0" /* offset 15311 */
+ "\x36\x2c\0" /* offset 15314 */
+ "\x37\x2c\0" /* offset 15317 */
+ "\x38\x2c\0" /* offset 15320 */
+ "\x39\x2c\0" /* offset 15323 */
+ "\x28\x41\x29\0" /* offset 15326 */
+ "\x28\x42\x29\0" /* offset 15330 */
+ "\x28\x43\x29\0" /* offset 15334 */
+ "\x28\x44\x29\0" /* offset 15338 */
+ "\x28\x45\x29\0" /* offset 15342 */
+ "\x28\x46\x29\0" /* offset 15346 */
+ "\x28\x47\x29\0" /* offset 15350 */
+ "\x28\x48\x29\0" /* offset 15354 */
+ "\x28\x49\x29\0" /* offset 15358 */
+ "\x28\x4a\x29\0" /* offset 15362 */
+ "\x28\x4b\x29\0" /* offset 15366 */
+ "\x28\x4c\x29\0" /* offset 15370 */
+ "\x28\x4d\x29\0" /* offset 15374 */
+ "\x28\x4e\x29\0" /* offset 15378 */
+ "\x28\x4f\x29\0" /* offset 15382 */
+ "\x28\x50\x29\0" /* offset 15386 */
+ "\x28\x51\x29\0" /* offset 15390 */
+ "\x28\x52\x29\0" /* offset 15394 */
+ "\x28\x53\x29\0" /* offset 15398 */
+ "\x28\x54\x29\0" /* offset 15402 */
+ "\x28\x55\x29\0" /* offset 15406 */
+ "\x28\x56\x29\0" /* offset 15410 */
+ "\x28\x57\x29\0" /* offset 15414 */
+ "\x28\x58\x29\0" /* offset 15418 */
+ "\x28\x59\x29\0" /* offset 15422 */
+ "\x28\x5a\x29\0" /* offset 15426 */
+ "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15430 */
+ "\x43\x44\0" /* offset 15438 */
+ "\x57\x5a\0" /* offset 15441 */
+ "\x48\x56\0" /* offset 15444 */
+ "\x53\x44\0" /* offset 15447 */
+ "\x53\x53\0" /* offset 15450 */
+ "\x50\x50\x56\0" /* offset 15453 */
+ "\x57\x43\0" /* offset 15457 */
+ "\x4d\x43\0" /* offset 15460 */
+ "\x4d\x44\0" /* offset 15463 */
+ "\x44\x4a\0" /* offset 15466 */
+ "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15469 */
+ "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15476 */
+ "\xe5\xad\x97\0" /* offset 15483 */
+ "\xe5\x8f\x8c\0" /* offset 15487 */
+ "\xe5\xa4\x9a\0" /* offset 15491 */
+ "\xe8\xa7\xa3\0" /* offset 15495 */
+ "\xe4\xba\xa4\0" /* offset 15499 */
+ "\xe6\x98\xa0\0" /* offset 15503 */
+ "\xe7\x84\xa1\0" /* offset 15507 */
+ "\xe5\x89\x8d\0" /* offset 15511 */
+ "\xe5\xbe\x8c\0" /* offset 15515 */
+ "\xe5\x86\x8d\0" /* offset 15519 */
+ "\xe6\x96\xb0\0" /* offset 15523 */
+ "\xe5\x88\x9d\0" /* offset 15527 */
+ "\xe7\xb5\x82\0" /* offset 15531 */
+ "\xe8\xb2\xa9\0" /* offset 15535 */
+ "\xe5\xa3\xb0\0" /* offset 15539 */
+ "\xe5\x90\xb9\0" /* offset 15543 */
+ "\xe6\xbc\x94\0" /* offset 15547 */
+ "\xe6\x8a\x95\0" /* offset 15551 */
+ "\xe6\x8d\x95\0" /* offset 15555 */
+ "\xe9\x81\x8a\0" /* offset 15559 */
+ "\xe6\x8c\x87\0" /* offset 15563 */
+ "\xe6\x89\x93\0" /* offset 15567 */
+ "\xe7\xa6\x81\0" /* offset 15571 */
+ "\xe7\xa9\xba\0" /* offset 15575 */
+ "\xe5\x90\x88\0" /* offset 15579 */
+ "\xe6\xba\x80\0" /* offset 15583 */
+ "\xe7\x94\xb3\0" /* offset 15587 */
+ "\xe5\x89\xb2\0" /* offset 15591 */
+ "\xe5\x96\xb6\0" /* offset 15595 */
+ "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15599 */
+ "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15609 */
+ "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15619 */
+ "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15629 */
+ "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15639 */
+ "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15649 */
+ "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15659 */
+ "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15669 */
+ "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15679 */
+ "\xe5\xbe\x97\0" /* offset 15689 */
+ "\xe5\x8f\xaf\0" /* offset 15693 */
+ "\xe4\xb8\xbd\0" /* offset 15697 */
+ "\xe4\xb8\xb8\0" /* offset 15701 */
+ "\xe4\xb9\x81\0" /* offset 15705 */
+ "\xf0\xa0\x84\xa2\0" /* offset 15709 */
+ "\xe4\xbd\xa0\0" /* offset 15714 */
+ "\xe4\xbe\xbb\0" /* offset 15718 */
+ "\xe5\x80\x82\0" /* offset 15722 */
+ "\xe5\x81\xba\0" /* offset 15726 */
+ "\xe5\x82\x99\0" /* offset 15730 */
+ "\xe5\x83\x8f\0" /* offset 15734 */
+ "\xe3\x92\x9e\0" /* offset 15738 */
+ "\xf0\xa0\x98\xba\0" /* offset 15742 */
+ "\xe5\x85\x94\0" /* offset 15747 */
+ "\xe5\x85\xa4\0" /* offset 15751 */
+ "\xe5\x85\xb7\0" /* offset 15755 */
+ "\xf0\xa0\x94\x9c\0" /* offset 15759 */
+ "\xe3\x92\xb9\0" /* offset 15764 */
+ "\xe5\x85\xa7\0" /* offset 15768 */
+ "\xf0\xa0\x95\x8b\0" /* offset 15772 */
+ "\xe5\x86\x97\0" /* offset 15777 */
+ "\xe5\x86\xa4\0" /* offset 15781 */
+ "\xe4\xbb\x8c\0" /* offset 15785 */
+ "\xe5\x86\xac\0" /* offset 15789 */
+ "\xf0\xa9\x87\x9f\0" /* offset 15793 */
+ "\xe5\x88\x83\0" /* offset 15798 */
+ "\xe3\x93\x9f\0" /* offset 15802 */
+ "\xe5\x88\xbb\0" /* offset 15806 */
+ "\xe5\x89\x86\0" /* offset 15810 */
+ "\xe5\x89\xb7\0" /* offset 15814 */
+ "\xe3\x94\x95\0" /* offset 15818 */
+ "\xe5\x8c\x85\0" /* offset 15822 */
+ "\xe5\x8c\x86\0" /* offset 15826 */
+ "\xe5\x8d\x89\0" /* offset 15830 */
+ "\xe5\x8d\x9a\0" /* offset 15834 */
+ "\xe5\x8d\xb3\0" /* offset 15838 */
+ "\xe5\x8d\xbd\0" /* offset 15842 */
+ "\xe5\x8d\xbf\0" /* offset 15846 */
+ "\xf0\xa0\xa8\xac\0" /* offset 15850 */
+ "\xe7\x81\xb0\0" /* offset 15855 */
+ "\xe5\x8f\x8a\0" /* offset 15859 */
+ "\xe5\x8f\x9f\0" /* offset 15863 */
+ "\xf0\xa0\xad\xa3\0" /* offset 15867 */
+ "\xe5\x8f\xab\0" /* offset 15872 */
+ "\xe5\x8f\xb1\0" /* offset 15876 */
+ "\xe5\x90\x86\0" /* offset 15880 */
+ "\xe5\x92\x9e\0" /* offset 15884 */
+ "\xe5\x90\xb8\0" /* offset 15888 */
+ "\xe5\x91\x88\0" /* offset 15892 */
+ "\xe5\x91\xa8\0" /* offset 15896 */
+ "\xe5\x92\xa2\0" /* offset 15900 */
+ "\xe5\x93\xb6\0" /* offset 15904 */
+ "\xe5\x94\x90\0" /* offset 15908 */
+ "\xe5\x95\x93\0" /* offset 15912 */
+ "\xe5\x95\xa3\0" /* offset 15916 */
+ "\xe5\x96\x84\0" /* offset 15920 */
+ "\xe5\x96\xab\0" /* offset 15924 */
+ "\xe5\x96\xb3\0" /* offset 15928 */
+ "\xe5\x97\x82\0" /* offset 15932 */
+ "\xe5\x9c\x96\0" /* offset 15936 */
+ "\xe5\x9c\x97\0" /* offset 15940 */
+ "\xe5\x99\x91\0" /* offset 15944 */
+ "\xe5\x99\xb4\0" /* offset 15948 */
+ "\xe5\xa3\xae\0" /* offset 15952 */
+ "\xe5\x9f\x8e\0" /* offset 15956 */
+ "\xe5\x9f\xb4\0" /* offset 15960 */
+ "\xe5\xa0\x8d\0" /* offset 15964 */
+ "\xe5\x9e\x8b\0" /* offset 15968 */
+ "\xe5\xa0\xb2\0" /* offset 15972 */
+ "\xe5\xa0\xb1\0" /* offset 15976 */
+ "\xe5\xa2\xac\0" /* offset 15980 */
+ "\xf0\xa1\x93\xa4\0" /* offset 15984 */
+ "\xe5\xa3\xb2\0" /* offset 15989 */
+ "\xe5\xa3\xb7\0" /* offset 15993 */
+ "\xe5\xa4\x86\0" /* offset 15997 */
+ "\xe5\xa4\xa2\0" /* offset 16001 */
+ "\xe5\xa5\xa2\0" /* offset 16005 */
+ "\xf0\xa1\x9a\xa8\0" /* offset 16009 */
+ "\xf0\xa1\x9b\xaa\0" /* offset 16014 */
+ "\xe5\xa7\xac\0" /* offset 16019 */
+ "\xe5\xa8\x9b\0" /* offset 16023 */
+ "\xe5\xa8\xa7\0" /* offset 16027 */
+ "\xe5\xa7\x98\0" /* offset 16031 */
+ "\xe5\xa9\xa6\0" /* offset 16035 */
+ "\xe3\x9b\xae\0" /* offset 16039 */
+ "\xe3\x9b\xbc\0" /* offset 16043 */
+ "\xe5\xac\x88\0" /* offset 16047 */
+ "\xe5\xac\xbe\0" /* offset 16051 */
+ "\xf0\xa1\xa7\x88\0" /* offset 16055 */
+ "\xe5\xaf\x83\0" /* offset 16060 */
+ "\xe5\xaf\x98\0" /* offset 16064 */
+ "\xe5\xaf\xb3\0" /* offset 16068 */
+ "\xf0\xa1\xac\x98\0" /* offset 16072 */
+ "\xe5\xaf\xbf\0" /* offset 16077 */
+ "\xe5\xb0\x86\0" /* offset 16081 */
+ "\xe5\xbd\x93\0" /* offset 16085 */
+ "\xe3\x9e\x81\0" /* offset 16089 */
+ "\xe5\xb1\xa0\0" /* offset 16093 */
+ "\xe5\xb3\x80\0" /* offset 16097 */
+ "\xe5\xb2\x8d\0" /* offset 16101 */
+ "\xf0\xa1\xb7\xa4\0" /* offset 16105 */
+ "\xe5\xb5\x83\0" /* offset 16110 */
+ "\xf0\xa1\xb7\xa6\0" /* offset 16114 */
+ "\xe5\xb5\xae\0" /* offset 16119 */
+ "\xe5\xb5\xab\0" /* offset 16123 */
+ "\xe5\xb5\xbc\0" /* offset 16127 */
+ "\xe5\xb7\xa1\0" /* offset 16131 */
+ "\xe5\xb7\xa2\0" /* offset 16135 */
+ "\xe3\xa0\xaf\0" /* offset 16139 */
+ "\xe5\xb7\xbd\0" /* offset 16143 */
+ "\xe5\xb8\xa8\0" /* offset 16147 */
+ "\xe5\xb8\xbd\0" /* offset 16151 */
+ "\xe5\xb9\xa9\0" /* offset 16155 */
+ "\xe3\xa1\xa2\0" /* offset 16159 */
+ "\xf0\xa2\x86\x83\0" /* offset 16163 */
+ "\xe3\xa1\xbc\0" /* offset 16168 */
+ "\xe5\xba\xb0\0" /* offset 16172 */
+ "\xe5\xba\xb3\0" /* offset 16176 */
+ "\xe5\xba\xb6\0" /* offset 16180 */
+ "\xf0\xaa\x8e\x92\0" /* offset 16184 */
+ "\xf0\xa2\x8c\xb1\0" /* offset 16189 */
+ "\xe8\x88\x81\0" /* offset 16194 */
+ "\xe5\xbc\xa2\0" /* offset 16198 */
+ "\xe3\xa3\x87\0" /* offset 16202 */
+ "\xf0\xa3\x8a\xb8\0" /* offset 16206 */
+ "\xf0\xa6\x87\x9a\0" /* offset 16211 */
+ "\xe5\xbd\xa2\0" /* offset 16216 */
+ "\xe5\xbd\xab\0" /* offset 16220 */
+ "\xe3\xa3\xa3\0" /* offset 16224 */
+ "\xe5\xbe\x9a\0" /* offset 16228 */
+ "\xe5\xbf\x8d\0" /* offset 16232 */
+ "\xe5\xbf\x97\0" /* offset 16236 */
+ "\xe5\xbf\xb9\0" /* offset 16240 */
+ "\xe6\x82\x81\0" /* offset 16244 */
+ "\xe3\xa4\xba\0" /* offset 16248 */
+ "\xe3\xa4\x9c\0" /* offset 16252 */
+ "\xf0\xa2\x9b\x94\0" /* offset 16256 */
+ "\xe6\x83\x87\0" /* offset 16261 */
+ "\xe6\x85\x88\0" /* offset 16265 */
+ "\xe6\x85\x8c\0" /* offset 16269 */
+ "\xe6\x85\xba\0" /* offset 16273 */
+ "\xe6\x86\xb2\0" /* offset 16277 */
+ "\xe6\x86\xa4\0" /* offset 16281 */
+ "\xe6\x86\xaf\0" /* offset 16285 */
+ "\xe6\x87\x9e\0" /* offset 16289 */
+ "\xe6\x88\x90\0" /* offset 16293 */
+ "\xe6\x88\x9b\0" /* offset 16297 */
+ "\xe6\x89\x9d\0" /* offset 16301 */
+ "\xe6\x8a\xb1\0" /* offset 16305 */
+ "\xe6\x8b\x94\0" /* offset 16309 */
+ "\xe6\x8d\x90\0" /* offset 16313 */
+ "\xf0\xa2\xac\x8c\0" /* offset 16317 */
+ "\xe6\x8c\xbd\0" /* offset 16322 */
+ "\xe6\x8b\xbc\0" /* offset 16326 */
+ "\xe6\x8d\xa8\0" /* offset 16330 */
+ "\xe6\x8e\x83\0" /* offset 16334 */
+ "\xe6\x8f\xa4\0" /* offset 16338 */
+ "\xf0\xa2\xaf\xb1\0" /* offset 16342 */
+ "\xe6\x90\xa2\0" /* offset 16347 */
+ "\xe6\x8f\x85\0" /* offset 16351 */
+ "\xe6\x8e\xa9\0" /* offset 16355 */
+ "\xe3\xa8\xae\0" /* offset 16359 */
+ "\xe6\x91\xa9\0" /* offset 16363 */
+ "\xe6\x91\xbe\0" /* offset 16367 */
+ "\xe6\x92\x9d\0" /* offset 16371 */
+ "\xe6\x91\xb7\0" /* offset 16375 */
+ "\xe3\xa9\xac\0" /* offset 16379 */
+ "\xe6\x95\xac\0" /* offset 16383 */
+ "\xf0\xa3\x80\x8a\0" /* offset 16387 */
+ "\xe6\x97\xa3\0" /* offset 16392 */
+ "\xe6\x9b\xb8\0" /* offset 16396 */
+ "\xe6\x99\x89\0" /* offset 16400 */
+ "\xe3\xac\x99\0" /* offset 16404 */
+ "\xe3\xac\x88\0" /* offset 16408 */
+ "\xe3\xab\xa4\0" /* offset 16412 */
+ "\xe5\x86\x92\0" /* offset 16416 */
+ "\xe5\x86\x95\0" /* offset 16420 */
+ "\xe6\x9c\x80\0" /* offset 16424 */
+ "\xe6\x9a\x9c\0" /* offset 16428 */
+ "\xe8\x82\xad\0" /* offset 16432 */
+ "\xe4\x8f\x99\0" /* offset 16436 */
+ "\xe6\x9c\xa1\0" /* offset 16440 */
+ "\xe6\x9d\x9e\0" /* offset 16444 */
+ "\xe6\x9d\x93\0" /* offset 16448 */
+ "\xf0\xa3\x8f\x83\0" /* offset 16452 */
+ "\xe3\xad\x89\0" /* offset 16457 */
+ "\xe6\x9f\xba\0" /* offset 16461 */
+ "\xe6\x9e\x85\0" /* offset 16465 */
+ "\xe6\xa1\x92\0" /* offset 16469 */
+ "\xf0\xa3\x91\xad\0" /* offset 16473 */
+ "\xe6\xa2\x8e\0" /* offset 16478 */
+ "\xe6\xa0\x9f\0" /* offset 16482 */
+ "\xe6\xa4\x94\0" /* offset 16486 */
+ "\xe6\xa5\x82\0" /* offset 16490 */
+ "\xe6\xa6\xa3\0" /* offset 16494 */
+ "\xe6\xa7\xaa\0" /* offset 16498 */
+ "\xe6\xaa\xa8\0" /* offset 16502 */
+ "\xf0\xa3\x9a\xa3\0" /* offset 16506 */
+ "\xe6\xab\x9b\0" /* offset 16511 */
+ "\xe3\xb0\x98\0" /* offset 16515 */
+ "\xe6\xac\xa1\0" /* offset 16519 */
+ "\xf0\xa3\xa2\xa7\0" /* offset 16523 */
+ "\xe6\xad\x94\0" /* offset 16528 */
+ "\xe3\xb1\x8e\0" /* offset 16532 */
+ "\xe6\xad\xb2\0" /* offset 16536 */
+ "\xe6\xae\x9f\0" /* offset 16540 */
+ "\xe6\xae\xbb\0" /* offset 16544 */
+ "\xf0\xa3\xaa\x8d\0" /* offset 16548 */
+ "\xf0\xa1\xb4\x8b\0" /* offset 16553 */
+ "\xf0\xa3\xab\xba\0" /* offset 16558 */
+ "\xe6\xb1\x8e\0" /* offset 16563 */
+ "\xf0\xa3\xb2\xbc\0" /* offset 16567 */
+ "\xe6\xb2\xbf\0" /* offset 16572 */
+ "\xe6\xb3\x8d\0" /* offset 16576 */
+ "\xe6\xb1\xa7\0" /* offset 16580 */
+ "\xe6\xb4\x96\0" /* offset 16584 */
+ "\xe6\xb4\xbe\0" /* offset 16588 */
+ "\xe6\xb5\xa9\0" /* offset 16592 */
+ "\xe6\xb5\xb8\0" /* offset 16596 */
+ "\xe6\xb6\x85\0" /* offset 16600 */
+ "\xf0\xa3\xb4\x9e\0" /* offset 16604 */
+ "\xe6\xb4\xb4\0" /* offset 16609 */
+ "\xe6\xb8\xaf\0" /* offset 16613 */
+ "\xe6\xb9\xae\0" /* offset 16617 */
+ "\xe3\xb4\xb3\0" /* offset 16621 */
+ "\xe6\xbb\x87\0" /* offset 16625 */
+ "\xf0\xa3\xbb\x91\0" /* offset 16629 */
+ "\xe6\xb7\xb9\0" /* offset 16634 */
+ "\xe6\xbd\xae\0" /* offset 16638 */
+ "\xf0\xa3\xbd\x9e\0" /* offset 16642 */
+ "\xf0\xa3\xbe\x8e\0" /* offset 16647 */
+ "\xe6\xbf\x86\0" /* offset 16652 */
+ "\xe7\x80\xb9\0" /* offset 16656 */
+ "\xe7\x80\x9b\0" /* offset 16660 */
+ "\xe3\xb6\x96\0" /* offset 16664 */
+ "\xe7\x81\x8a\0" /* offset 16668 */
+ "\xe7\x81\xbd\0" /* offset 16672 */
+ "\xe7\x81\xb7\0" /* offset 16676 */
+ "\xe7\x82\xad\0" /* offset 16680 */
+ "\xf0\xa0\x94\xa5\0" /* offset 16684 */
+ "\xe7\x85\x85\0" /* offset 16689 */
+ "\xf0\xa4\x89\xa3\0" /* offset 16693 */
+ "\xe7\x86\x9c\0" /* offset 16698 */
+ "\xf0\xa4\x8e\xab\0" /* offset 16702 */
+ "\xe7\x88\xa8\0" /* offset 16707 */
+ "\xe7\x89\x90\0" /* offset 16711 */
+ "\xf0\xa4\x98\x88\0" /* offset 16715 */
+ "\xe7\x8a\x80\0" /* offset 16720 */
+ "\xe7\x8a\x95\0" /* offset 16724 */
+ "\xf0\xa4\x9c\xb5\0" /* offset 16728 */
+ "\xf0\xa4\xa0\x94\0" /* offset 16733 */
+ "\xe7\x8d\xba\0" /* offset 16738 */
+ "\xe7\x8e\x8b\0" /* offset 16742 */
+ "\xe3\xba\xac\0" /* offset 16746 */
+ "\xe7\x8e\xa5\0" /* offset 16750 */
+ "\xe3\xba\xb8\0" /* offset 16754 */
+ "\xe7\x91\x87\0" /* offset 16758 */
+ "\xe7\x91\x9c\0" /* offset 16762 */
+ "\xe7\x92\x85\0" /* offset 16766 */
+ "\xe7\x93\x8a\0" /* offset 16770 */
+ "\xe3\xbc\x9b\0" /* offset 16774 */
+ "\xe7\x94\xa4\0" /* offset 16778 */
+ "\xf0\xa4\xb0\xb6\0" /* offset 16782 */
+ "\xe7\x94\xbe\0" /* offset 16787 */
+ "\xf0\xa4\xb2\x92\0" /* offset 16791 */
+ "\xf0\xa2\x86\x9f\0" /* offset 16796 */
+ "\xe7\x98\x90\0" /* offset 16801 */
+ "\xf0\xa4\xbe\xa1\0" /* offset 16805 */
+ "\xf0\xa4\xbe\xb8\0" /* offset 16810 */
+ "\xf0\xa5\x81\x84\0" /* offset 16815 */
+ "\xe3\xbf\xbc\0" /* offset 16820 */
+ "\xe4\x80\x88\0" /* offset 16824 */
+ "\xf0\xa5\x83\xb3\0" /* offset 16828 */
+ "\xf0\xa5\x83\xb2\0" /* offset 16833 */
+ "\xf0\xa5\x84\x99\0" /* offset 16838 */
+ "\xf0\xa5\x84\xb3\0" /* offset 16843 */
+ "\xe7\x9c\x9e\0" /* offset 16848 */
+ "\xe7\x9c\x9f\0" /* offset 16852 */
+ "\xe7\x9e\x8b\0" /* offset 16856 */
+ "\xe4\x81\x86\0" /* offset 16860 */
+ "\xe4\x82\x96\0" /* offset 16864 */
+ "\xf0\xa5\x90\x9d\0" /* offset 16868 */
+ "\xe7\xa1\x8e\0" /* offset 16873 */
+ "\xe4\x83\xa3\0" /* offset 16877 */
+ "\xf0\xa5\x98\xa6\0" /* offset 16881 */
+ "\xf0\xa5\x9a\x9a\0" /* offset 16886 */
+ "\xf0\xa5\x9b\x85\0" /* offset 16891 */
+ "\xe7\xa7\xab\0" /* offset 16896 */
+ "\xe4\x84\xaf\0" /* offset 16900 */
+ "\xe7\xa9\x8a\0" /* offset 16904 */
+ "\xe7\xa9\x8f\0" /* offset 16908 */
+ "\xf0\xa5\xa5\xbc\0" /* offset 16912 */
+ "\xf0\xa5\xaa\xa7\0" /* offset 16917 */
+ "\xe7\xab\xae\0" /* offset 16922 */
+ "\xe4\x88\x82\0" /* offset 16926 */
+ "\xf0\xa5\xae\xab\0" /* offset 16930 */
+ "\xe7\xaf\x86\0" /* offset 16935 */
+ "\xe7\xaf\x89\0" /* offset 16939 */
+ "\xe4\x88\xa7\0" /* offset 16943 */
+ "\xf0\xa5\xb2\x80\0" /* offset 16947 */
+ "\xe7\xb3\x92\0" /* offset 16952 */
+ "\xe4\x8a\xa0\0" /* offset 16956 */
+ "\xe7\xb3\xa8\0" /* offset 16960 */
+ "\xe7\xb3\xa3\0" /* offset 16964 */
+ "\xe7\xb4\x80\0" /* offset 16968 */
+ "\xf0\xa5\xbe\x86\0" /* offset 16972 */
+ "\xe7\xb5\xa3\0" /* offset 16977 */
+ "\xe4\x8c\x81\0" /* offset 16981 */
+ "\xe7\xb7\x87\0" /* offset 16985 */
+ "\xe7\xb8\x82\0" /* offset 16989 */
+ "\xe7\xb9\x85\0" /* offset 16993 */
+ "\xe4\x8c\xb4\0" /* offset 16997 */
+ "\xf0\xa6\x88\xa8\0" /* offset 17001 */
+ "\xf0\xa6\x89\x87\0" /* offset 17006 */
+ "\xe4\x8d\x99\0" /* offset 17011 */
+ "\xf0\xa6\x8b\x99\0" /* offset 17015 */
+ "\xe7\xbd\xba\0" /* offset 17020 */
+ "\xf0\xa6\x8c\xbe\0" /* offset 17024 */
+ "\xe7\xbe\x95\0" /* offset 17029 */
+ "\xe7\xbf\xba\0" /* offset 17033 */
+ "\xf0\xa6\x93\x9a\0" /* offset 17037 */
+ "\xf0\xa6\x94\xa3\0" /* offset 17042 */
+ "\xe8\x81\xa0\0" /* offset 17047 */
+ "\xf0\xa6\x96\xa8\0" /* offset 17051 */
+ "\xe8\x81\xb0\0" /* offset 17056 */
+ "\xf0\xa3\x8d\x9f\0" /* offset 17060 */
+ "\xe4\x8f\x95\0" /* offset 17065 */
+ "\xe8\x82\xb2\0" /* offset 17069 */
+ "\xe8\x84\x83\0" /* offset 17073 */
+ "\xe4\x90\x8b\0" /* offset 17077 */
+ "\xe8\x84\xbe\0" /* offset 17081 */
+ "\xe5\xaa\xb5\0" /* offset 17085 */
+ "\xf0\xa6\x9e\xa7\0" /* offset 17089 */
+ "\xf0\xa6\x9e\xb5\0" /* offset 17094 */
+ "\xf0\xa3\x8e\x93\0" /* offset 17099 */
+ "\xf0\xa3\x8e\x9c\0" /* offset 17104 */
+ "\xe8\x88\x84\0" /* offset 17109 */
+ "\xe8\xbe\x9e\0" /* offset 17113 */
+ "\xe4\x91\xab\0" /* offset 17117 */
+ "\xe8\x8a\x91\0" /* offset 17121 */
+ "\xe8\x8a\x8b\0" /* offset 17125 */
+ "\xe8\x8a\x9d\0" /* offset 17129 */
+ "\xe5\x8a\xb3\0" /* offset 17133 */
+ "\xe8\x8a\xb1\0" /* offset 17137 */
+ "\xe8\x8a\xb3\0" /* offset 17141 */
+ "\xe8\x8a\xbd\0" /* offset 17145 */
+ "\xe8\x8b\xa6\0" /* offset 17149 */
+ "\xf0\xa6\xac\xbc\0" /* offset 17153 */
+ "\xe8\x8c\x9d\0" /* offset 17158 */
+ "\xe8\x8d\xa3\0" /* offset 17162 */
+ "\xe8\x8e\xad\0" /* offset 17166 */
+ "\xe8\x8c\xa3\0" /* offset 17170 */
+ "\xe8\x8e\xbd\0" /* offset 17174 */
+ "\xe8\x8f\xa7\0" /* offset 17178 */
+ "\xe8\x8d\x93\0" /* offset 17182 */
+ "\xe8\x8f\x8a\0" /* offset 17186 */
+ "\xe8\x8f\x8c\0" /* offset 17190 */
+ "\xe8\x8f\x9c\0" /* offset 17194 */
+ "\xf0\xa6\xb0\xb6\0" /* offset 17198 */
+ "\xf0\xa6\xb5\xab\0" /* offset 17203 */
+ "\xf0\xa6\xb3\x95\0" /* offset 17208 */
+ "\xe4\x94\xab\0" /* offset 17213 */
+ "\xe8\x93\xb1\0" /* offset 17217 */
+ "\xe8\x93\xb3\0" /* offset 17221 */
+ "\xe8\x94\x96\0" /* offset 17225 */
+ "\xf0\xa7\x8f\x8a\0" /* offset 17229 */
+ "\xe8\x95\xa4\0" /* offset 17234 */
+ "\xf0\xa6\xbc\xac\0" /* offset 17238 */
+ "\xe4\x95\x9d\0" /* offset 17243 */
+ "\xe4\x95\xa1\0" /* offset 17247 */
+ "\xf0\xa6\xbe\xb1\0" /* offset 17251 */
+ "\xf0\xa7\x83\x92\0" /* offset 17256 */
+ "\xe4\x95\xab\0" /* offset 17261 */
+ "\xe8\x99\x90\0" /* offset 17265 */
+ "\xe8\x99\xa7\0" /* offset 17269 */
+ "\xe8\x99\xa9\0" /* offset 17273 */
+ "\xe8\x9a\xa9\0" /* offset 17277 */
+ "\xe8\x9a\x88\0" /* offset 17281 */
+ "\xe8\x9c\x8e\0" /* offset 17285 */
+ "\xe8\x9b\xa2\0" /* offset 17289 */
+ "\xe8\x9c\xa8\0" /* offset 17293 */
+ "\xe8\x9d\xab\0" /* offset 17297 */
+ "\xe8\x9e\x86\0" /* offset 17301 */
+ "\xe4\x97\x97\0" /* offset 17305 */
+ "\xe8\x9f\xa1\0" /* offset 17309 */
+ "\xe8\xa0\x81\0" /* offset 17313 */
+ "\xe4\x97\xb9\0" /* offset 17317 */
+ "\xe8\xa1\xa0\0" /* offset 17321 */
+ "\xf0\xa7\x99\xa7\0" /* offset 17325 */
+ "\xe8\xa3\x97\0" /* offset 17330 */
+ "\xe8\xa3\x9e\0" /* offset 17334 */
+ "\xe4\x98\xb5\0" /* offset 17338 */
+ "\xe8\xa3\xba\0" /* offset 17342 */
+ "\xe3\x92\xbb\0" /* offset 17346 */
+ "\xf0\xa7\xa2\xae\0" /* offset 17350 */
+ "\xf0\xa7\xa5\xa6\0" /* offset 17355 */
+ "\xe4\x9a\xbe\0" /* offset 17360 */
+ "\xe4\x9b\x87\0" /* offset 17364 */
+ "\xe8\xaa\xa0\0" /* offset 17368 */
+ "\xf0\xa7\xb2\xa8\0" /* offset 17372 */
+ "\xe8\xb2\xab\0" /* offset 17377 */
+ "\xe8\xb3\x81\0" /* offset 17381 */
+ "\xe8\xb4\x9b\0" /* offset 17385 */
+ "\xe8\xb5\xb7\0" /* offset 17389 */
+ "\xf0\xa7\xbc\xaf\0" /* offset 17393 */
+ "\xf0\xa0\xa0\x84\0" /* offset 17398 */
+ "\xe8\xb7\x8b\0" /* offset 17403 */
+ "\xe8\xb6\xbc\0" /* offset 17407 */
+ "\xe8\xb7\xb0\0" /* offset 17411 */
+ "\xf0\xa0\xa3\x9e\0" /* offset 17415 */
+ "\xe8\xbb\x94\0" /* offset 17420 */
+ "\xf0\xa8\x97\x92\0" /* offset 17424 */
+ "\xf0\xa8\x97\xad\0" /* offset 17429 */
+ "\xe9\x82\x94\0" /* offset 17434 */
+ "\xe9\x83\xb1\0" /* offset 17438 */
+ "\xe9\x84\x91\0" /* offset 17442 */
+ "\xf0\xa8\x9c\xae\0" /* offset 17446 */
+ "\xe9\x84\x9b\0" /* offset 17451 */
+ "\xe9\x88\xb8\0" /* offset 17455 */
+ "\xe9\x8b\x97\0" /* offset 17459 */
+ "\xe9\x8b\x98\0" /* offset 17463 */
+ "\xe9\x89\xbc\0" /* offset 17467 */
+ "\xe9\x8f\xb9\0" /* offset 17471 */
+ "\xe9\x90\x95\0" /* offset 17475 */
+ "\xf0\xa8\xaf\xba\0" /* offset 17479 */
+ "\xe9\x96\x8b\0" /* offset 17484 */
+ "\xe4\xa6\x95\0" /* offset 17488 */
+ "\xe9\x96\xb7\0" /* offset 17492 */
+ "\xf0\xa8\xb5\xb7\0" /* offset 17496 */
+ "\xe4\xa7\xa6\0" /* offset 17501 */
+ "\xe9\x9b\x83\0" /* offset 17505 */
+ "\xe5\xb6\xb2\0" /* offset 17509 */
+ "\xe9\x9c\xa3\0" /* offset 17513 */
+ "\xf0\xa9\x85\x85\0" /* offset 17517 */
+ "\xf0\xa9\x88\x9a\0" /* offset 17522 */
+ "\xe4\xa9\xae\0" /* offset 17527 */
+ "\xe4\xa9\xb6\0" /* offset 17531 */
+ "\xe9\x9f\xa0\0" /* offset 17535 */
+ "\xf0\xa9\x90\x8a\0" /* offset 17539 */
+ "\xe4\xaa\xb2\0" /* offset 17544 */
+ "\xf0\xa9\x92\x96\0" /* offset 17548 */
+ "\xe9\xa0\xa9\0" /* offset 17553 */
+ "\xf0\xa9\x96\xb6\0" /* offset 17557 */
+ "\xe9\xa3\xa2\0" /* offset 17562 */
+ "\xe4\xac\xb3\0" /* offset 17566 */
+ "\xe9\xa4\xa9\0" /* offset 17570 */
+ "\xe9\xa6\xa7\0" /* offset 17574 */
+ "\xe9\xa7\x82\0" /* offset 17578 */
+ "\xe9\xa7\xbe\0" /* offset 17582 */
+ "\xe4\xaf\x8e\0" /* offset 17586 */
+ "\xf0\xa9\xac\xb0\0" /* offset 17590 */
+ "\xe9\xb1\x80\0" /* offset 17595 */
+ "\xe9\xb3\xbd\0" /* offset 17599 */
+ "\xe4\xb3\x8e\0" /* offset 17603 */
+ "\xe4\xb3\xad\0" /* offset 17607 */
+ "\xe9\xb5\xa7\0" /* offset 17611 */
+ "\xf0\xaa\x83\x8e\0" /* offset 17615 */
+ "\xe4\xb3\xb8\0" /* offset 17620 */
+ "\xf0\xaa\x84\x85\0" /* offset 17624 */
+ "\xf0\xaa\x88\x8e\0" /* offset 17629 */
+ "\xf0\xaa\x8a\x91\0" /* offset 17634 */
+ "\xe4\xb5\x96\0" /* offset 17639 */
+ "\xe9\xbb\xbe\0" /* offset 17643 */
+ "\xe9\xbc\x85\0" /* offset 17647 */
+ "\xe9\xbc\x8f\0" /* offset 17651 */
+ "\xe9\xbc\x96\0" /* offset 17655 */
+ "\xf0\xaa\x98\x80\0" /* offset 17659 */;
typedef struct
{
@@ -12556,6 +12743,8 @@ static const decomposition_step decomp_step_table[] =
{ 0x0fa2b, 0x098fc, 0x00000 },
{ 0x0fa2c, 0x09928, 0x00000 },
{ 0x0fa2d, 0x09db4, 0x00000 },
+ { 0x0fa2e, 0x090de, 0x00000 },
+ { 0x0fa2f, 0x096b7, 0x00000 },
{ 0x0fa30, 0x04fae, 0x00000 },
{ 0x0fa31, 0x050e7, 0x00000 },
{ 0x0fa32, 0x0514d, 0x00000 },
@@ -12761,6 +12950,8 @@ static const decomposition_step decomp_step_table[] =
{ 0x1109a, 0x11099, 0x110ba },
{ 0x1109c, 0x1109b, 0x110ba },
{ 0x110ab, 0x110a5, 0x110ba },
+ { 0x1112e, 0x11131, 0x11127 },
+ { 0x1112f, 0x11132, 0x11127 },
{ 0x1d15e, 0x1d157, 0x1d165 },
{ 0x1d15f, 0x1d158, 0x1d165 },
{ 0x1d160, 0x1d15f, 0x1d16e },
diff --git a/glib/glib/guniprop.c b/glib/glib/guniprop.c
index 420d58a..2211818 100644
--- a/glib/glib/guniprop.c
+++ b/glib/glib/guniprop.c
@@ -468,13 +468,12 @@ g_unichar_iswide (gunichar c)
{
/* See NOTE earlier for how to update this table. */
static const struct Interval wide[] = {
- {0x1100, 0x115F}, {0x11A3, 0x11A7}, {0x11FA, 0x11FF}, {0x2329, 0x232A},
- {0x2E80, 0x2E99}, {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB},
- {0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312D},
- {0x3131, 0x318E}, {0x3190, 0x31BA}, {0x31C0, 0x31E3}, {0x31F0, 0x321E},
- {0x3220, 0x3247}, {0x3250, 0x32FE}, {0x3300, 0x4DBF}, {0x4E00, 0xA48C},
- {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, {0xD7B0, 0xD7C6},
- {0xD7CB, 0xD7FB}, {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52},
+ {0x1100, 0x115F}, {0x2329, 0x232A}, {0x2E80, 0x2E99}, {0x2E9B, 0x2EF3},
+ {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB}, {0x3000, 0x303E}, {0x3041, 0x3096},
+ {0x3099, 0x30FF}, {0x3105, 0x312D}, {0x3131, 0x318E}, {0x3190, 0x31BA},
+ {0x31C0, 0x31E3}, {0x31F0, 0x321E}, {0x3220, 0x3247}, {0x3250, 0x32FE},
+ {0x3300, 0x4DBF}, {0x4E00, 0xA48C}, {0xA490, 0xA4C6}, {0xA960, 0xA97C},
+ {0xAC00, 0xD7A3}, {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52},
{0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, {0xFFE0, 0xFFE6},
{0x1B000, 0x1B001}, {0x1F200, 0x1F202}, {0x1F210, 0x1F23A}, {0x1F240,
0x1F248}, {0x1F250, 0x1F251}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}
@@ -753,6 +752,9 @@ get_locale_type (void)
g_free (tem);
#else
const char *locale = setlocale (LC_CTYPE, NULL);
+
+ if (locale == NULL)
+ return LOCALE_NORMAL;
#endif
switch (locale[0])
diff --git a/glib/glib/gurifuncs.c b/glib/glib/gurifuncs.c
index d438205..b2128a2 100644
--- a/glib/glib/gurifuncs.c
+++ b/glib/glib/gurifuncs.c
@@ -139,7 +139,8 @@ g_uri_unescape_segment (const char *escaped_string,
/**
* g_uri_unescape_string:
* @escaped_string: an escaped string to be unescaped.
- * @illegal_characters: an optional string of illegal characters not to be allowed.
+ * @illegal_characters: (allow-none): a string of illegal characters not to be
+ * allowed, or %NULL.
*
* Unescapes a whole escaped string.
*
@@ -217,8 +218,8 @@ g_uri_parse_scheme (const char *uri)
/**
* g_uri_escape_string:
* @unescaped: the unescaped input string.
- * @reserved_chars_allowed: a string of reserved characters that are
- * allowed to be used, or %NULL.
+ * @reserved_chars_allowed: (allow-none): a string of reserved characters that
+ * are allowed to be used, or %NULL.
* @allow_utf8: %TRUE if the result can include UTF-8 characters.
*
* Escapes a string for use in a URI.
diff --git a/glib/glib/gurifuncs.h b/glib/glib/gurifuncs.h
index 6e6b739..9f89770 100644
--- a/glib/glib/gurifuncs.h
+++ b/glib/glib/gurifuncs.h
@@ -20,13 +20,13 @@
* Author: Alexander Larsson <alexl@redhat.com>
*/
+#ifndef __G_URI_FUNCS_H__
+#define __G_URI_FUNCS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_URI_FUNCS_H__
-#define __G_URI_FUNCS_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -66,12 +66,16 @@ G_BEGIN_DECLS
**/
#define G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":"
+GLIB_AVAILABLE_IN_ALL
char * g_uri_unescape_string (const char *escaped_string,
const char *illegal_characters);
+GLIB_AVAILABLE_IN_ALL
char * g_uri_unescape_segment (const char *escaped_string,
const char *escaped_string_end,
const char *illegal_characters);
+GLIB_AVAILABLE_IN_ALL
char * g_uri_parse_scheme (const char *uri);
+GLIB_AVAILABLE_IN_ALL
char * g_uri_escape_string (const char *unescaped,
const char *reserved_chars_allowed,
gboolean allow_utf8);
diff --git a/glib/glib/gutf8.c b/glib/glib/gutf8.c
index e61d33d..9244fe8 100644
--- a/glib/glib/gutf8.c
+++ b/glib/glib/gutf8.c
@@ -104,22 +104,14 @@
* a point above 0x0010ffff, since UTF-16 couldn't represent it.
*
* The second check covers surrogate pairs (category Cs).
- *
- * The last two checks cover "Noncharacter": defined as:
- * "A code point that is permanently reserved for
- * internal use, and that should never be interchanged. In
- * Unicode 3.1, these consist of the values U+nFFFE and U+nFFFF
- * (where n is from 0 to 10_16) and the values U+FDD0..U+FDEF."
*
* @param Char the character
*/
#define UNICODE_VALID(Char) \
((Char) < 0x110000 && \
- (((Char) & 0xFFFFF800) != 0xD800) && \
- ((Char) < 0xFDD0 || (Char) > 0xFDEF) && \
- ((Char) & 0xFFFE) != 0xFFFE)
-
-
+ (((Char) & 0xFFFFF800) != 0xD800))
+
+
static const gchar utf8_skip_data[256] = {
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
diff --git a/glib/glib/gutils.c b/glib/glib/gutils.c
index 38b5e44..2620cb6 100644
--- a/glib/glib/gutils.c
+++ b/glib/glib/gutils.c
@@ -60,6 +60,7 @@
#include "gutils.h"
#include "glib-init.h"
+#include "glib-private.h"
#include "genviron.h"
#include "gfileutils.h"
#include "ggettext.h"
@@ -423,9 +424,9 @@ g_find_program_in_path (const gchar *program)
#if defined(G_OS_UNIX) || defined(G_OS_BEOS)
if (path == NULL)
{
- /* There is no `PATH' in the environment. The default
+ /* There is no 'PATH' in the environment. The default
* search path in GNU libc is the current directory followed by
- * the path `confstr' returns for `_CS_PATH'.
+ * the path 'confstr' returns for '_CS_PATH'.
*/
/* In GLib we put . last, for security, and don't use the
@@ -509,7 +510,7 @@ g_find_program_in_path (const gchar *program)
if (p == path)
/* Two adjacent colons, or a colon at the beginning or the end
- * of `PATH' means to search the current directory.
+ * of 'PATH' means to search the current directory.
*/
startp = name + 1;
else
@@ -576,21 +577,12 @@ g_find_program_in_path (const gchar *program)
G_LOCK_DEFINE_STATIC (g_utils_global);
-static gchar *g_tmp_dir = NULL;
-static gchar *g_user_name = NULL;
-static gchar *g_real_name = NULL;
-static gchar *g_home_dir = NULL;
-static gchar *g_host_name = NULL;
-
-#ifdef G_OS_WIN32
-/* System codepage versions of the above, kept at file level so that they,
- * too, are produced only once.
- */
-static gchar *g_tmp_dir_cp = NULL;
-static gchar *g_user_name_cp = NULL;
-static gchar *g_real_name_cp = NULL;
-static gchar *g_home_dir_cp = NULL;
-#endif
+typedef struct
+{
+ gchar *user_name;
+ gchar *real_name;
+ gchar *home_dir;
+} UserDatabaseEntry;
static gchar *g_user_data_dir = NULL;
static gchar **g_system_data_dirs = NULL;
@@ -654,288 +646,163 @@ get_windows_directory_root (void)
#endif
/* HOLDS: g_utils_global_lock */
-static void
-g_get_any_init_do (void)
+static UserDatabaseEntry *
+g_get_user_database_entry (void)
{
- gchar hostname[100];
-
- g_tmp_dir = g_strdup (g_getenv ("TMPDIR"));
-
- if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
- {
- g_free (g_tmp_dir);
- g_tmp_dir = g_strdup (g_getenv ("TMP"));
- }
-
- if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
- {
- g_free (g_tmp_dir);
- g_tmp_dir = g_strdup (g_getenv ("TEMP"));
- }
+ static UserDatabaseEntry *entry;
-#ifdef G_OS_WIN32
- if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
+ if (g_once_init_enter (&entry))
{
- g_free (g_tmp_dir);
- g_tmp_dir = get_windows_directory_root ();
- }
-#else
-
-#ifdef P_tmpdir
- if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
- {
- gsize k;
- g_free (g_tmp_dir);
- g_tmp_dir = g_strdup (P_tmpdir);
- k = strlen (g_tmp_dir);
- if (k > 1 && G_IS_DIR_SEPARATOR (g_tmp_dir[k - 1]))
- g_tmp_dir[k - 1] = '\0';
- }
-#endif
-
- if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
- {
- g_free (g_tmp_dir);
- g_tmp_dir = g_strdup (g_getenv ("/tmp"));
- }
-#endif /* !G_OS_WIN32 */
-
-#ifdef G_OS_WIN32
- /* We check $HOME first for Win32, though it is a last resort for Unix
- * where we prefer the results of getpwuid().
- */
- g_home_dir = g_strdup (g_getenv ("HOME"));
+ static UserDatabaseEntry e;
- /* Only believe HOME if it is an absolute path and exists */
- if (g_home_dir)
- {
- if (!(g_path_is_absolute (g_home_dir) &&
- g_file_test (g_home_dir, G_FILE_TEST_IS_DIR)))
- {
- g_free (g_home_dir);
- g_home_dir = NULL;
- }
- }
-
- /* In case HOME is Unix-style (it happens), convert it to
- * Windows style.
- */
- if (g_home_dir)
- {
- gchar *p;
- while ((p = strchr (g_home_dir, '/')) != NULL)
- *p = '\\';
- }
-
- if (!g_home_dir)
- {
- /* USERPROFILE is probably the closest equivalent to $HOME? */
- if (g_getenv ("USERPROFILE") != NULL)
- g_home_dir = g_strdup (g_getenv ("USERPROFILE"));
- }
-
- if (!g_home_dir)
- g_home_dir = get_special_folder (CSIDL_PROFILE);
-
- if (!g_home_dir)
- g_home_dir = get_windows_directory_root ();
-#endif /* G_OS_WIN32 */
-
#ifdef HAVE_PWD_H
- {
- struct passwd *pw = NULL;
- gpointer buffer = NULL;
- gint error;
- gchar *logname;
+ {
+ struct passwd *pw = NULL;
+ gpointer buffer = NULL;
+ gint error;
+ gchar *logname;
# if defined (HAVE_POSIX_GETPWUID_R) || defined (HAVE_NONPOSIX_GETPWUID_R)
- struct passwd pwd;
-# ifdef _SC_GETPW_R_SIZE_MAX
- /* This reurns the maximum length */
- glong bufsize = sysconf (_SC_GETPW_R_SIZE_MAX);
-
- if (bufsize < 0)
- bufsize = 64;
+ struct passwd pwd;
+# ifdef _SC_GETPW_R_SIZE_MAX
+ /* This reurns the maximum length */
+ glong bufsize = sysconf (_SC_GETPW_R_SIZE_MAX);
+
+ if (bufsize < 0)
+ bufsize = 64;
# else /* _SC_GETPW_R_SIZE_MAX */
- glong bufsize = 64;
+ glong bufsize = 64;
# endif /* _SC_GETPW_R_SIZE_MAX */
- logname = (gchar *) g_getenv ("LOGNAME");
-
- do
- {
- g_free (buffer);
- /* we allocate 6 extra bytes to work around a bug in
- * Mac OS < 10.3. See #156446
- */
- buffer = g_malloc (bufsize + 6);
- errno = 0;
-
+ logname = (gchar *) g_getenv ("LOGNAME");
+
+ do
+ {
+ g_free (buffer);
+ /* we allocate 6 extra bytes to work around a bug in
+ * Mac OS < 10.3. See #156446
+ */
+ buffer = g_malloc (bufsize + 6);
+ errno = 0;
+
# ifdef HAVE_POSIX_GETPWUID_R
- if (logname) {
- error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
- if (!pw || (pw->pw_uid != getuid ())) {
- /* LOGNAME is lying, fall back to looking up the uid */
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
- }
- } else {
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
- }
- error = error < 0 ? errno : error;
+ if (logname) {
+ error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
+ if (!pw || (pw->pw_uid != getuid ())) {
+ /* LOGNAME is lying, fall back to looking up the uid */
+ error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
+ }
+ } else {
+ error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
+ }
+ error = error < 0 ? errno : error;
# else /* HAVE_NONPOSIX_GETPWUID_R */
- /* HPUX 11 falls into the HAVE_POSIX_GETPWUID_R case */
+ /* HPUX 11 falls into the HAVE_POSIX_GETPWUID_R case */
# if defined(_AIX) || defined(__hpux)
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- pw = error == 0 ? &pwd : NULL;
+ error = getpwuid_r (getuid (), &pwd, buffer, bufsize);
+ pw = error == 0 ? &pwd : NULL;
# else /* !_AIX */
- if (logname) {
- pw = getpwnam_r (logname, &pwd, buffer, bufsize);
- if (!pw || (pw->pw_uid != getuid ())) {
- /* LOGNAME is lying, fall back to looking up the uid */
- pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- }
- } else {
- pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- }
- error = pw ? 0 : errno;
-# endif /* !_AIX */
+ if (logname) {
+ pw = getpwnam_r (logname, &pwd, buffer, bufsize);
+ if (!pw || (pw->pw_uid != getuid ())) {
+ /* LOGNAME is lying, fall back to looking up the uid */
+ pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
+ }
+ } else {
+ pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
+ }
+ error = pw ? 0 : errno;
+# endif /* !_AIX */
# endif /* HAVE_NONPOSIX_GETPWUID_R */
-
- if (!pw)
- {
- /* we bail out prematurely if the user id can't be found
- * (should be pretty rare case actually), or if the buffer
- * should be sufficiently big and lookups are still not
- * successful.
- */
- if (error == 0 || error == ENOENT)
- {
- g_warning ("getpwuid_r(): failed due to unknown user id (%lu)",
- (gulong) getuid ());
- break;
- }
- if (bufsize > 32 * 1024)
- {
- g_warning ("getpwuid_r(): failed due to: %s.",
- g_strerror (error));
- break;
- }
-
- bufsize *= 2;
- }
- }
- while (!pw);
+
+ if (!pw)
+ {
+ /* we bail out prematurely if the user id can't be found
+ * (should be pretty rare case actually), or if the buffer
+ * should be sufficiently big and lookups are still not
+ * successful.
+ */
+ if (error == 0 || error == ENOENT)
+ {
+ g_warning ("getpwuid_r(): failed due to unknown user id (%lu)",
+ (gulong) getuid ());
+ break;
+ }
+ if (bufsize > 32 * 1024)
+ {
+ g_warning ("getpwuid_r(): failed due to: %s.",
+ g_strerror (error));
+ break;
+ }
+
+ bufsize *= 2;
+ }
+ }
+ while (!pw);
# endif /* HAVE_POSIX_GETPWUID_R || HAVE_NONPOSIX_GETPWUID_R */
-
- if (!pw)
- {
- setpwent ();
- pw = getpwuid (getuid ());
- endpwent ();
- }
- if (pw)
- {
- g_user_name = g_strdup (pw->pw_name);
-
- if (pw->pw_gecos && *pw->pw_gecos != '\0')
- {
- gchar **gecos_fields;
- gchar **name_parts;
-
- /* split the gecos field and substitute '&' */
- gecos_fields = g_strsplit (pw->pw_gecos, ",", 0);
- name_parts = g_strsplit (gecos_fields[0], "&", 0);
- pw->pw_name[0] = g_ascii_toupper (pw->pw_name[0]);
- g_real_name = g_strjoinv (pw->pw_name, name_parts);
- g_strfreev (gecos_fields);
- g_strfreev (name_parts);
- }
-
- if (!g_home_dir)
- g_home_dir = g_strdup (pw->pw_dir);
+
+ if (!pw)
+ {
+ pw = getpwuid (getuid ());
+ }
+ if (pw)
+ {
+ e.user_name = g_strdup (pw->pw_name);
+
+#ifndef __BIONIC__
+ if (pw->pw_gecos && *pw->pw_gecos != '\0')
+ {
+ gchar **gecos_fields;
+ gchar **name_parts;
+
+ /* split the gecos field and substitute '&' */
+ gecos_fields = g_strsplit (pw->pw_gecos, ",", 0);
+ name_parts = g_strsplit (gecos_fields[0], "&", 0);
+ pw->pw_name[0] = g_ascii_toupper (pw->pw_name[0]);
+ e.real_name = g_strjoinv (pw->pw_name, name_parts);
+ g_strfreev (gecos_fields);
+ g_strfreev (name_parts);
+ }
+#endif
+
+ if (!e.home_dir)
+ e.home_dir = g_strdup (pw->pw_dir);
+ }
+ g_free (buffer);
}
- g_free (buffer);
- }
-
+
#else /* !HAVE_PWD_H */
-
+
#ifdef G_OS_WIN32
- {
- guint len = UNLEN+1;
- wchar_t buffer[UNLEN+1];
-
- if (GetUserNameW (buffer, (LPDWORD) &len))
{
- g_user_name = g_utf16_to_utf8 (buffer, -1, NULL, NULL, NULL);
- g_real_name = g_strdup (g_user_name);
+ guint len = UNLEN+1;
+ wchar_t buffer[UNLEN+1];
+
+ if (GetUserNameW (buffer, (LPDWORD) &len))
+ {
+ e.user_name = g_utf16_to_utf8 (buffer, -1, NULL, NULL, NULL);
+ e.real_name = g_strdup (e.user_name);
+ }
}
- }
#endif /* G_OS_WIN32 */
#endif /* !HAVE_PWD_H */
-#ifndef G_OS_WIN32
- if (!g_home_dir)
- g_home_dir = g_strdup (g_getenv ("HOME"));
-#endif
-
#ifdef __EMX__
- /* change '\\' in %HOME% to '/' */
- g_strdelimit (g_home_dir, "\\",'/');
-#endif
- if (!g_user_name)
- g_user_name = g_strdup ("somebody");
- if (!g_real_name)
- g_real_name = g_strdup ("Unknown");
-
- {
-#ifndef G_OS_WIN32
- gboolean hostname_fail = (gethostname (hostname, sizeof (hostname)) == -1);
-#else
- DWORD size = sizeof (hostname);
- gboolean hostname_fail = (!GetComputerName (hostname, &size));
+ /* change '\\' in %HOME% to '/' */
+ g_strdelimit (e.home_dir, "\\",'/');
#endif
- g_host_name = g_strdup (hostname_fail ? "localhost" : hostname);
- }
+ if (!e.user_name)
+ e.user_name = g_strdup ("somebody");
+ if (!e.real_name)
+ e.real_name = g_strdup ("Unknown");
-#ifdef G_OS_WIN32
- g_tmp_dir_cp = g_locale_from_utf8 (g_tmp_dir, -1, NULL, NULL, NULL);
- g_user_name_cp = g_locale_from_utf8 (g_user_name, -1, NULL, NULL, NULL);
- g_real_name_cp = g_locale_from_utf8 (g_real_name, -1, NULL, NULL, NULL);
-
- if (!g_tmp_dir_cp)
- g_tmp_dir_cp = g_strdup ("\\");
- if (!g_user_name_cp)
- g_user_name_cp = g_strdup ("somebody");
- if (!g_real_name_cp)
- g_real_name_cp = g_strdup ("Unknown");
-
- /* home_dir might be NULL, unlike tmp_dir, user_name and
- * real_name.
- */
- if (g_home_dir)
- g_home_dir_cp = g_locale_from_utf8 (g_home_dir, -1, NULL, NULL, NULL);
- else
- g_home_dir_cp = NULL;
-#endif /* G_OS_WIN32 */
-}
-
-static inline void
-g_get_any_init (void)
-{
- if (!g_tmp_dir)
- g_get_any_init_do ();
-}
+ g_once_init_leave (&entry, &e);
+ }
-static inline void
-g_get_any_init_locked (void)
-{
- G_LOCK (g_utils_global);
- g_get_any_init ();
- G_UNLOCK (g_utils_global);
+ return entry;
}
-
/**
* g_get_user_name:
*
@@ -949,8 +816,11 @@ g_get_any_init_locked (void)
const gchar *
g_get_user_name (void)
{
- g_get_any_init_locked ();
- return g_user_name;
+ UserDatabaseEntry *entry;
+
+ entry = g_get_user_database_entry ();
+
+ return entry->user_name;
}
/**
@@ -967,65 +837,182 @@ g_get_user_name (void)
const gchar *
g_get_real_name (void)
{
- g_get_any_init_locked ();
- return g_real_name;
+ UserDatabaseEntry *entry;
+
+ entry = g_get_user_database_entry ();
+
+ return entry->real_name;
}
/**
* g_get_home_dir:
*
- * Gets the current user's home directory as defined in the
- * password database.
- *
- * Note that in contrast to traditional UNIX tools, this function
- * prefers <filename>passwd</filename> entries over the <envar>HOME</envar>
- * environment variable.
- *
- * One of the reasons for this decision is that applications in many
- * cases need special handling to deal with the case where
- * <envar>HOME</envar> is
- * <simplelist>
- * <member>Not owned by the user</member>
- * <member>Not writeable</member>
- * <member>Not even readable</member>
- * </simplelist>
- * Since applications are in general <emphasis>not</emphasis> written
- * to deal with these situations it was considered better to make
- * g_get_home_dir() not pay attention to <envar>HOME</envar> and to
- * return the real home directory for the user. If applications
- * want to pay attention to <envar>HOME</envar>, they can do:
- * |[
- * const char *homedir = g_getenv ("HOME");
- * if (!homedir)
- * homedir = g_get_home_dir (<!-- -->);
- * ]|
+ * Gets the current user's home directory.
+ *
+ * As with most UNIX tools, this function will return the value of the
+ * <envar>HOME</envar> environment variable if it is set to an existing
+ * absolute path name, falling back to the <filename>passwd</filename>
+ * file in the case that it is unset.
+ *
+ * If the path given in <envar>HOME</envar> is non-absolute, does not
+ * exist, or is not a directory, the result is undefined.
+ *
+ * <note><para>
+ * Before version 2.36 this function would ignore the
+ * <envar>HOME</envar> environment variable, taking the value from the
+ * <filename>passwd</filename> database instead. This was changed to
+ * increase the compatibility of GLib with other programs (and the XDG
+ * basedir specification) and to increase testability of programs
+ * based on GLib (by making it easier to run them from test
+ * frameworks).
+ * </para><para>
+ * If your program has a strong requirement for either the new or the
+ * old behaviour (and if you don't wish to increase your GLib
+ * dependency to ensure that the new behaviour is in effect) then you
+ * should either directly check the <envar>HOME</envar> environment
+ * variable yourself or unset it before calling any functions in GLib.
+ * </para></note>
*
* Returns: the current user's home directory
*/
const gchar *
g_get_home_dir (void)
{
- g_get_any_init_locked ();
- return g_home_dir;
+ static gchar *home_dir;
+
+ if (g_once_init_enter (&home_dir))
+ {
+ gchar *tmp;
+
+ /* We first check HOME and use it if it is set */
+ tmp = g_strdup (g_getenv ("HOME"));
+
+#ifdef G_OS_WIN32
+ /* Only believe HOME if it is an absolute path and exists.
+ *
+ * We only do this check on Windows for a couple of reasons.
+ * Historically, we only did it there because we used to ignore $HOME
+ * on UNIX. There are concerns about enabling it now on UNIX because
+ * of things like autofs. In short, if the user has a bogus value in
+ * $HOME then they get what they pay for...
+ */
+ if (tmp)
+ {
+ if (!(g_path_is_absolute (tmp) &&
+ g_file_test (tmp, G_FILE_TEST_IS_DIR)))
+ {
+ g_free (tmp);
+ tmp = NULL;
+ }
+ }
+
+ /* In case HOME is Unix-style (it happens), convert it to
+ * Windows style.
+ */
+ if (tmp)
+ {
+ gchar *p;
+ while ((p = strchr (tmp, '/')) != NULL)
+ *p = '\\';
+ }
+
+ if (!tmp)
+ {
+ /* USERPROFILE is probably the closest equivalent to $HOME? */
+ if (g_getenv ("USERPROFILE") != NULL)
+ tmp = g_strdup (g_getenv ("USERPROFILE"));
+ }
+
+ if (!tmp)
+ tmp = get_special_folder (CSIDL_PROFILE);
+
+ if (!tmp)
+ tmp = get_windows_directory_root ();
+#endif /* G_OS_WIN32 */
+
+ if (!tmp)
+ {
+ /* If we didn't get it from any of those methods, we will have
+ * to read the user database entry.
+ */
+ UserDatabaseEntry *entry;
+
+ entry = g_get_user_database_entry ();
+
+ /* Strictly speaking, we should copy this, but we know that
+ * neither will ever be freed, so don't bother...
+ */
+ tmp = entry->home_dir;
+ }
+
+ g_once_init_leave (&home_dir, tmp);
+ }
+
+ return home_dir;
}
/**
* g_get_tmp_dir:
*
- * Gets the directory to use for temporary files. This is found from
- * inspecting the environment variables <envar>TMPDIR</envar>,
- * <envar>TMP</envar>, and <envar>TEMP</envar> in that order. If none
- * of those are defined "/tmp" is returned on UNIX and "C:\" on Windows.
- * The encoding of the returned string is system-defined. On Windows,
- * it is always UTF-8. The return value is never %NULL or the empty string.
+ * Gets the directory to use for temporary files.
+ *
+ * On UNIX, this is taken from the <envar>TMPDIR</envar> environment
+ * variable. If the variable is not set, <literal>P_tmpdir</literal> is
+ * used, as defined by the system C library. Failing that, a hard-coded
+ * default of "/tmp" is returned.
+ *
+ * On Windows, the <envar>TEMP</envar> environment variable is used,
+ * with the root directory of the Windows installation (eg: "C:\") used
+ * as a default.
+ *
+ * The encoding of the returned string is system-defined. On Windows, it
+ * is always UTF-8. The return value is never %NULL or the empty string.
*
* Returns: the directory to use for temporary files.
*/
const gchar *
g_get_tmp_dir (void)
{
- g_get_any_init_locked ();
- return g_tmp_dir;
+ static gchar *tmp_dir;
+
+ if (g_once_init_enter (&tmp_dir))
+ {
+ gchar *tmp;
+
+#ifdef G_OS_WIN32
+ tmp = g_strdup (g_getenv ("TEMP"));
+
+ if (tmp == NULL || *tmp == '\0')
+ {
+ g_free (tmp);
+ tmp = get_windows_directory_root ();
+ }
+#else /* G_OS_WIN32 */
+ tmp = g_strdup (g_getenv ("TMPDIR"));
+
+#ifdef P_tmpdir
+ if (tmp == NULL || *tmp == '\0')
+ {
+ gsize k;
+ g_free (tmp);
+ tmp = g_strdup (P_tmpdir);
+ k = strlen (tmp);
+ if (k > 1 && G_IS_DIR_SEPARATOR (tmp[k - 1]))
+ tmp[k - 1] = '\0';
+ }
+#endif /* P_tmpdir */
+
+ if (tmp == NULL || *tmp == '\0')
+ {
+ g_free (tmp);
+ tmp = g_strdup ("/tmp");
+ }
+#endif /* !G_OS_WIN32 */
+
+ g_once_init_leave (&tmp_dir, tmp);
+ }
+
+ return tmp_dir;
}
/**
@@ -1051,8 +1038,24 @@ g_get_tmp_dir (void)
const gchar *
g_get_host_name (void)
{
- g_get_any_init_locked ();
- return g_host_name;
+ static gchar *hostname;
+
+ if (g_once_init_enter (&hostname))
+ {
+ gboolean failed;
+ gchar tmp[100];
+
+#ifndef G_OS_WIN32
+ failed = (gethostname (tmp, sizeof (tmp)) == -1);
+#else
+ DWORD size = sizeof (tmp);
+ failed = (!GetComputerName (tmp, &size));
+#endif
+
+ g_once_init_leave (&hostname, g_strdup (failed ? "localhost" : tmp));
+ }
+
+ return hostname;
}
G_LOCK_DEFINE_STATIC (g_prgname);
@@ -1070,7 +1073,7 @@ static gchar *g_prgname = NULL;
* Returns: the name of the program. The returned string belongs
* to GLib and must not be modified or freed.
*/
-gchar*
+const gchar*
g_get_prgname (void)
{
gchar* retval;
@@ -1228,14 +1231,12 @@ g_get_user_data_dir (void)
#endif
if (!data_dir || !data_dir[0])
{
- g_get_any_init ();
+ const gchar *home_dir = g_get_home_dir ();
- if (g_home_dir)
- data_dir = g_build_filename (g_home_dir, ".local",
- "share", NULL);
+ if (home_dir)
+ data_dir = g_build_filename (home_dir, ".local", "share", NULL);
else
- data_dir = g_build_filename (g_tmp_dir, g_user_name, ".local",
- "share", NULL);
+ data_dir = g_build_filename (g_get_tmp_dir (), g_get_user_name (), ".local", "share", NULL);
}
g_user_data_dir = data_dir;
@@ -1265,12 +1266,12 @@ g_init_user_config_dir (void)
#endif
if (!config_dir || !config_dir[0])
{
- g_get_any_init ();
+ const gchar *home_dir = g_get_home_dir ();
- if (g_home_dir)
- config_dir = g_build_filename (g_home_dir, ".config", NULL);
+ if (home_dir)
+ config_dir = g_build_filename (home_dir, ".config", NULL);
else
- config_dir = g_build_filename (g_tmp_dir, g_user_name, ".config", NULL);
+ config_dir = g_build_filename (g_get_tmp_dir (), g_get_user_name (), ".config", NULL);
}
g_user_config_dir = config_dir;
@@ -1348,12 +1349,12 @@ g_get_user_cache_dir (void)
#endif
if (!cache_dir || !cache_dir[0])
{
- g_get_any_init ();
-
- if (g_home_dir)
- cache_dir = g_build_filename (g_home_dir, ".cache", NULL);
+ const gchar *home_dir = g_get_home_dir ();
+
+ if (home_dir)
+ cache_dir = g_build_filename (home_dir, ".cache", NULL);
else
- cache_dir = g_build_filename (g_tmp_dir, g_user_name, ".cache", NULL);
+ cache_dir = g_build_filename (g_get_tmp_dir (), g_get_user_name (), ".cache", NULL);
}
g_user_cache_dir = cache_dir;
}
@@ -1683,8 +1684,7 @@ load_user_special_dirs (void)
if (is_relative)
{
- g_get_any_init ();
- g_user_special_dirs[directory] = g_build_filename (g_home_dir, d, NULL);
+ g_user_special_dirs[directory] = g_build_filename (g_get_home_dir (), d, NULL);
}
else
g_user_special_dirs[directory] = g_strdup (d);
@@ -1790,12 +1790,7 @@ g_get_user_special_dir (GUserDirectory directory)
/* Special-case desktop for historical compatibility */
if (g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] == NULL)
- {
- g_get_any_init ();
-
- g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] =
- g_build_filename (g_home_dir, "Desktop", NULL);
- }
+ g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] = g_build_filename (g_get_home_dir (), "Desktop", NULL);
}
G_UNLOCK (g_utils_global);
@@ -1860,7 +1855,7 @@ get_module_share_dir (gconstpointer address)
}
const gchar * const *
-g_win32_get_system_data_dirs_for_module (void (*address_of_function)())
+g_win32_get_system_data_dirs_for_module (void (*address_of_function)(void))
{
GArray *data_dirs;
HMODULE hmodule;
@@ -2153,6 +2148,9 @@ g_format_size (guint64 size)
* Flags to modify the format of the string returned by g_format_size_full().
*/
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
/**
* g_format_size_full:
* @size: a size in bytes
@@ -2286,6 +2284,8 @@ g_format_size_full (guint64 size,
return g_string_free (string, FALSE);
}
+#pragma GCC diagnostic pop
+
/**
* g_format_size_for_display:
* @size: a size in bytes
@@ -2320,6 +2320,11 @@ g_format_size_for_display (goffset size)
if (size < (goffset) MEBIBYTE_FACTOR)
{
displayed_size = (gdouble) size / (gdouble) KIBIBYTE_FACTOR;
+ /* Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+ * mean 1024 bytes. I am aware that 'KB' is not correct, but it has been preserved for reasons of
+ * compatibility. Users will not see this string unless a program is using this deprecated function.
+ * Please translate as literally as possible.
+ */
return g_strdup_printf (_("%.1f KB"), displayed_size);
}
else if (size < (goffset) GIBIBYTE_FACTOR)
@@ -2354,58 +2359,78 @@ g_format_size_for_display (goffset size)
/* Binary compatibility versions. Not for newly compiled code. */
-#undef g_find_program_in_path
+_GLIB_EXTERN const gchar *g_get_user_name_utf8 (void);
+_GLIB_EXTERN const gchar *g_get_real_name_utf8 (void);
+_GLIB_EXTERN const gchar *g_get_home_dir_utf8 (void);
+_GLIB_EXTERN const gchar *g_get_tmp_dir_utf8 (void);
+_GLIB_EXTERN gchar *g_find_program_in_path_utf8 (const gchar *program);
-gchar*
-g_find_program_in_path (const gchar *program)
+gchar *
+g_find_program_in_path_utf8 (const gchar *program)
{
- gchar *utf8_program = g_locale_to_utf8 (program, -1, NULL, NULL, NULL);
- gchar *utf8_retval = g_find_program_in_path_utf8 (utf8_program);
- gchar *retval;
-
- g_free (utf8_program);
- if (utf8_retval == NULL)
- return NULL;
- retval = g_locale_from_utf8 (utf8_retval, -1, NULL, NULL, NULL);
- g_free (utf8_retval);
-
- return retval;
+ return g_find_program_in_path (program);
}
-#undef g_get_user_name
-
-const gchar *
-g_get_user_name (void)
-{
- g_get_any_init_locked ();
- return g_user_name_cp;
-}
+const gchar *g_get_user_name_utf8 (void) { return g_get_user_name (); }
+const gchar *g_get_real_name_utf8 (void) { return g_get_real_name (); }
+const gchar *g_get_home_dir_utf8 (void) { return g_get_home_dir (); }
+const gchar *g_get_tmp_dir_utf8 (void) { return g_get_tmp_dir (); }
-#undef g_get_real_name
+#endif
-const gchar *
-g_get_real_name (void)
+/* Private API:
+ *
+ * Returns %TRUE if the current process was executed as setuid (or an
+ * equivalent __libc_enable_secure is available). See:
+ * http://osdir.com/ml/linux.lfs.hardened/2007-04/msg00032.html
+ */
+gboolean
+g_check_setuid (void)
{
- g_get_any_init_locked ();
- return g_real_name_cp;
-}
-
-#undef g_get_home_dir
+ /* TODO: get __libc_enable_secure exported from glibc.
+ * See http://www.openwall.com/lists/owl-dev/2012/08/14/1
+ */
+#if 0 && defined(HAVE_LIBC_ENABLE_SECURE)
+ {
+ /* See glibc/include/unistd.h */
+ extern int __libc_enable_secure;
+ return __libc_enable_secure;
+ }
+#elif defined(HAVE_ISSETUGID)
+ /* BSD: http://www.freebsd.org/cgi/man.cgi?query=issetugid&sektion=2 */
+ return issetugid ();
+#elif defined(G_OS_UNIX)
+ uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
+ gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
-const gchar *
-g_get_home_dir (void)
-{
- g_get_any_init_locked ();
- return g_home_dir_cp;
-}
+ static gsize check_setuid_initialised;
+ static gboolean is_setuid;
-#undef g_get_tmp_dir
+ if (g_once_init_enter (&check_setuid_initialised))
+ {
+#ifdef HAVE_GETRESUID
+ /* These aren't in the header files, so we prototype them here.
+ */
+ int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
+ int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
+
+ if (getresuid (&ruid, &euid, &suid) != 0 ||
+ getresgid (&rgid, &egid, &sgid) != 0)
+#endif /* HAVE_GETRESUID */
+ {
+ suid = ruid = getuid ();
+ sgid = rgid = getgid ();
+ euid = geteuid ();
+ egid = getegid ();
+ }
-const gchar *
-g_get_tmp_dir (void)
-{
- g_get_any_init_locked ();
- return g_tmp_dir_cp;
-}
+ is_setuid = (ruid != euid || ruid != suid ||
+ rgid != egid || rgid != sgid);
+ g_once_init_leave (&check_setuid_initialised, 1);
+ }
+ return is_setuid;
+#else
+ return FALSE;
#endif
+}
diff --git a/glib/glib/gutils.h b/glib/glib/gutils.h
index 213a39f..472f3c2 100644
--- a/glib/glib/gutils.h
+++ b/glib/glib/gutils.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_UTILS_H__
+#define __G_UTILS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_UTILS_H__
-#define __G_UTILS_H__
-
#include <glib/gtypes.h>
#include <stdarg.h>
@@ -49,9 +49,9 @@ G_BEGIN_DECLS
# endif /* va_list is a pointer */
#endif /* !G_VA_COPY */
-/* inlining hassle. for compilers that don't allow the `inline' keyword,
+/* 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'.
+ * back to either '__inline__' or '__inline'.
* G_CAN_INLINE is defined in glibconfig.h if the compiler seems to be
* actually *capable* to do function inlining, in which case inline
* function bodies do make sense. we also define G_INLINE_FUNC to properly
@@ -74,43 +74,49 @@ G_BEGIN_DECLS
# endif
#endif
#ifdef G_IMPLEMENT_INLINES
-# define G_INLINE_FUNC
+# define G_INLINE_FUNC _GLIB_EXTERN
# undef G_CAN_INLINE
#elif defined (__GNUC__)
# define G_INLINE_FUNC static __inline __attribute__ ((unused))
#elif defined (G_CAN_INLINE)
# define G_INLINE_FUNC static inline
#else /* can't inline */
-# define G_INLINE_FUNC
+# define G_INLINE_FUNC _GLIB_EXTERN
#endif /* !G_INLINE_FUNC */
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_get_user_name g_get_user_name_utf8
-#define g_get_real_name g_get_real_name_utf8
-#define g_get_home_dir g_get_home_dir_utf8
-#define g_get_tmp_dir g_get_tmp_dir_utf8
-#endif
-#endif
-
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_name (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_real_name (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_home_dir (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_tmp_dir (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_host_name (void);
-gchar * g_get_prgname (void);
+GLIB_AVAILABLE_IN_ALL
+const gchar * g_get_prgname (void);
+GLIB_AVAILABLE_IN_ALL
void g_set_prgname (const gchar *prgname);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_application_name (void);
+GLIB_AVAILABLE_IN_ALL
void g_set_application_name (const gchar *application_name);
+GLIB_AVAILABLE_IN_ALL
void g_reload_user_special_dirs_cache (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_data_dir (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_config_dir (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_cache_dir (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * const * g_get_system_data_dirs (void);
#ifdef G_OS_WIN32
/* This functions is not part of the public GLib API */
+GLIB_AVAILABLE_IN_ALL
const gchar * const * g_win32_get_system_data_dirs_for_module (void (*address_of_function)(void));
#endif
@@ -127,8 +133,10 @@ _g_win32_get_system_data_dirs (void)
#define g_get_system_data_dirs _g_win32_get_system_data_dirs
#endif
+GLIB_AVAILABLE_IN_ALL
const gchar * const * g_get_system_config_dirs (void);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_runtime_dir (void);
/**
@@ -166,6 +174,7 @@ typedef enum {
G_USER_N_DIRECTORIES
} GUserDirectory;
+GLIB_AVAILABLE_IN_ALL
const gchar * g_get_user_special_dir (GUserDirectory directory);
/**
@@ -185,19 +194,24 @@ struct _GDebugKey
/* Miscellaneous utility functions
*/
+GLIB_AVAILABLE_IN_ALL
guint g_parse_debug_string (const gchar *string,
const GDebugKey *keys,
guint nkeys);
+GLIB_AVAILABLE_IN_ALL
gint g_snprintf (gchar *string,
gulong n,
gchar const *format,
...) G_GNUC_PRINTF (3, 4);
+GLIB_AVAILABLE_IN_ALL
gint g_vsnprintf (gchar *string,
gulong n,
gchar const *format,
- va_list args);
+ va_list args)
+ G_GNUC_PRINTF(3, 0);
+GLIB_AVAILABLE_IN_ALL
void g_nullify_pointer (gpointer *nullify_location);
typedef enum
@@ -253,13 +267,9 @@ int atexit (void (*)(void));
#endif /* G_DISABLE_DEPRECATED */
-#ifndef __GTK_DOC_IGNORE__
-#ifdef G_OS_WIN32
-#define g_find_program_in_path g_find_program_in_path_utf8
-#endif
-#endif
/* Look for an executable in PATH, following execvp() rules */
+GLIB_AVAILABLE_IN_ALL
gchar* g_find_program_in_path (const gchar *program);
/* Bit tests
@@ -321,8 +331,6 @@ g_bit_storage (gulong number)
}
#endif /* G_CAN_INLINE || __G_UTILS_C__ */
-G_END_DECLS
-
#ifndef G_DISABLE_DEPRECATED
/*
@@ -372,4 +380,6 @@ DllMain (HINSTANCE hinstDLL, \
#endif /* G_PLATFORM_WIN32 */
+G_END_DECLS
+
#endif /* __G_UTILS_H__ */
diff --git a/glib/glib/gvariant-core.c b/glib/glib/gvariant-core.c
index 1633463..dc20c32 100644
--- a/glib/glib/gvariant-core.c
+++ b/glib/glib/gvariant-core.c
@@ -18,6 +18,8 @@
* Boston, MA 02111-1307, USA.
*/
+#include "config.h"
+
#include <glib/gvariant-core.h>
#include <glib/gvariant-serialiser.h>
@@ -484,8 +486,7 @@ g_variant_alloc (const GVariantType *type,
return value;
}
-/* -- internal -- */
-/* < internal >
+/**
* g_variant_new_from_bytes:
* @type: a #GVariantType
* @bytes: a #GBytes
@@ -497,7 +498,9 @@ g_variant_alloc (const GVariantType *type,
*
* A reference is taken on @bytes.
*
- * Returns: a new #GVariant with a floating reference
+ * Returns: (transfer none): a new #GVariant with a floating reference
+ *
+ * Since: 2.36
*/
GVariant *
g_variant_new_from_bytes (const GVariantType *type,
@@ -535,6 +538,8 @@ g_variant_new_from_bytes (const GVariantType *type,
return value;
}
+/* -- internal -- */
+
/* < internal >
* g_variant_new_from_children:
* @type: a #GVariantType
@@ -862,6 +867,43 @@ g_variant_get_data (GVariant *value)
}
/**
+ * g_variant_get_data_as_bytes:
+ * @value: a #GVariant
+ *
+ * Returns a pointer to the serialised form of a #GVariant instance.
+ * The semantics of this function are exactly the same as
+ * g_variant_get_data(), except that the returned #GBytes holds
+ * a reference to the variant data.
+ *
+ * Returns: (transfer full): A new #GBytes representing the variant data
+ *
+ * Since: 2.36
+ */
+GBytes *
+g_variant_get_data_as_bytes (GVariant *value)
+{
+ const gchar *bytes_data;
+ const gchar *data;
+ gsize bytes_size;
+ gsize size;
+
+ g_variant_lock (value);
+ g_variant_ensure_serialised (value);
+ g_variant_unlock (value);
+
+ bytes_data = g_bytes_get_data (value->contents.serialised.bytes, &bytes_size);
+ data = value->contents.serialised.data;
+ size = value->size;
+
+ if (data == bytes_data && size == bytes_size)
+ return g_bytes_ref (value->contents.serialised.bytes);
+ else
+ return g_bytes_new_from_bytes (value->contents.serialised.bytes,
+ data - bytes_data, size);
+}
+
+
+/**
* g_variant_n_children:
* @value: a container #GVariant
*
diff --git a/glib/glib/gvariant-core.h b/glib/glib/gvariant-core.h
index 1fd4829..d5a653d 100644
--- a/glib/glib/gvariant-core.h
+++ b/glib/glib/gvariant-core.h
@@ -26,21 +26,14 @@
#include <glib/gbytes.h>
/* gvariant-core.c */
-G_GNUC_INTERNAL
-GVariant * g_variant_new_from_bytes (const GVariantType *type,
- GBytes *bytes,
- gboolean trusted);
-G_GNUC_INTERNAL
GVariant * g_variant_new_from_children (const GVariantType *type,
GVariant **children,
gsize n_children,
gboolean trusted);
-G_GNUC_INTERNAL
gboolean g_variant_is_trusted (GVariant *value);
-G_GNUC_INTERNAL
GVariantTypeInfo * g_variant_get_type_info (GVariant *value);
#endif /* __G_VARIANT_CORE_H__ */
diff --git a/glib/glib/gvariant-internal.h b/glib/glib/gvariant-internal.h
index 66a080a..7d7eb99 100644
--- a/glib/glib/gvariant-internal.h
+++ b/glib/glib/gvariant-internal.h
@@ -28,9 +28,8 @@
#ifndef __G_VARIANT_INTERNAL_H__
#define __G_VARIANT_INTERNAL_H__
-#ifndef GLIB_COMPILATION
-#define GLIB_COMPILATION
-#endif
+/* Hack */
+#define __GLIB_H_INSIDE__
#include <glib/gvarianttype.h>
#include <glib/gtypes.h>
@@ -38,10 +37,14 @@
#include "gvariant-serialiser.h"
#include "gvarianttypeinfo.h"
+#undef __GLIB_H_INSIDE__
+
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_format_string_scan (const gchar *string,
const gchar *limit,
const gchar **endptr);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_format_string_scan_type (const gchar *string,
const gchar *limit,
const gchar **endptr);
diff --git a/glib/glib/gvariant-parser.c b/glib/glib/gvariant-parser.c
index 0d1b093..dc655ce 100644
--- a/glib/glib/gvariant-parser.c
+++ b/glib/glib/gvariant-parser.c
@@ -33,6 +33,7 @@
#include "gvariant.h"
#include "gvarianttype.h"
#include "gslice.h"
+#include "gthread.h"
/*
* two-pass algorithm
@@ -70,22 +71,14 @@
*
* Error codes returned by parsing text-format GVariants.
**/
-GQuark
-g_variant_parser_get_error_quark (void)
-{
- static GQuark the_quark;
-
- if (the_quark == 0)
- the_quark = g_quark_from_static_string ("g-variant-parse-error-quark");
-
- return the_quark;
-}
+G_DEFINE_QUARK (g-variant-parse-error-quark, g_variant_parser_get_error)
typedef struct
{
gint start, end;
} SourceRef;
+G_GNUC_PRINTF(5, 0)
static void
parser_set_error_va (GError **error,
SourceRef *location,
@@ -113,6 +106,7 @@ parser_set_error_va (GError **error,
g_string_free (msg, TRUE);
}
+G_GNUC_PRINTF(5, 6)
static void
parser_set_error (GError **error,
SourceRef *location,
@@ -138,6 +132,7 @@ typedef struct
} TokenStream;
+G_GNUC_PRINTF(5, 6)
static void
token_stream_set_error (TokenStream *stream,
GError **error,
@@ -228,10 +223,11 @@ token_stream_prepare (TokenStream *stream)
case '@': case '%':
/* stop at the first space, comma, colon or unmatched bracket.
* deals nicely with cases like (%i, %i) or {%i: %i}.
+ * Also: ] and > are never in format strings.
*/
for (end = stream->stream + 1;
end != stream->end && *end != ',' &&
- *end != ':' && *end != '>' && !g_ascii_isspace (*end);
+ *end != ':' && *end != '>' && *end != ']' && !g_ascii_isspace (*end);
end++)
if (*end == '(' || *end == '{')
@@ -336,7 +332,7 @@ token_stream_require (TokenStream *stream,
{
token_stream_set_error (stream, error, FALSE,
G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN,
- "expected `%s'%s", token, purpose);
+ "expected '%s'%s", token, purpose);
return FALSE;
}
@@ -533,6 +529,7 @@ ast_free (AST *ast)
ast->class->free (ast);
}
+G_GNUC_PRINTF(5, 6)
static void
ast_set_error (AST *ast,
GError **error,
@@ -561,7 +558,7 @@ ast_type_error (AST *ast,
typestr = g_variant_type_dup_string (type);
ast_set_error (ast, error, NULL,
G_VARIANT_PARSE_ERROR_TYPE_ERROR,
- "can not parse as value of type `%s'",
+ "can not parse as value of type '%s'",
typestr);
g_free (typestr);
@@ -947,7 +944,7 @@ array_parse (TokenStream *stream,
if (need_comma &&
!token_stream_require (stream, ",",
- " or `]' to follow array element",
+ " or ']' to follow array element",
error))
goto error;
@@ -1086,7 +1083,7 @@ tuple_parse (TokenStream *stream,
if (need_comma &&
!token_stream_require (stream, ",",
- " or `)' to follow tuple element",
+ " or ')' to follow tuple element",
error))
goto error;
@@ -1146,7 +1143,9 @@ variant_get_value (AST *ast,
Variant *variant = (Variant *) ast;
GVariant *child;
- g_assert (g_variant_type_equal (type, G_VARIANT_TYPE_VARIANT));
+ if (!g_variant_type_equal (type, G_VARIANT_TYPE_VARIANT))
+ return ast_type_error (ast, type, error);
+
child = ast_resolve (variant->value, error);
if (child == NULL)
@@ -1387,7 +1386,7 @@ dictionary_parse (TokenStream *stream,
only_one = token_stream_consume (stream, ",");
if (!only_one &&
!token_stream_require (stream, ":",
- " or `,' to follow dictionary entry key",
+ " or ',' to follow dictionary entry key",
error))
goto error;
@@ -1413,7 +1412,7 @@ dictionary_parse (TokenStream *stream,
AST *child;
if (!token_stream_require (stream, ",",
- " or `}' to follow dictionary entry", error))
+ " or '}' to follow dictionary entry", error))
goto error;
child = parse (stream, app, error);
@@ -1660,7 +1659,8 @@ bytestring_get_value (AST *ast,
{
ByteString *string = (ByteString *) ast;
- g_assert (g_variant_type_equal (type, G_VARIANT_TYPE_BYTESTRING));
+ if (!g_variant_type_equal (type, G_VARIANT_TYPE_BYTESTRING))
+ return ast_type_error (ast, type, error);
return g_variant_new_bytestring (string->string);
}
@@ -1793,7 +1793,7 @@ number_overflow (AST *ast,
{
ast_set_error (ast, error, NULL,
G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE,
- "number out of range for type `%c'",
+ "number out of range for type '%c'",
g_variant_type_peek_string (type)[0]);
return NULL;
}
@@ -2311,7 +2311,6 @@ parse (TokenStream *stream,
* @limit: (allow-none): a pointer to the end of @text, or %NULL
* @endptr: (allow-none): a location to store the end pointer, or %NULL
* @error: (allow-none): a pointer to a %NULL #GError pointer, or %NULL
- * @Returns: a reference to a #GVariant, or %NULL
*
* Parses a #GVariant from a text representation.
*
@@ -2343,6 +2342,8 @@ parse (TokenStream *stream,
*
* Officially, the language understood by the parser is "any string
* produced by g_variant_print()".
+ *
+ * Returns: a reference to a #GVariant, or %NULL
**/
GVariant *
g_variant_parse (const GVariantType *type,
diff --git a/glib/glib/gvariant-serialiser.c b/glib/glib/gvariant-serialiser.c
index 4ee6c72..cc5cc7b 100644
--- a/glib/glib/gvariant-serialiser.c
+++ b/glib/glib/gvariant-serialiser.c
@@ -1023,6 +1023,10 @@ gvs_tuple_is_normal (GVariantSerialised value)
gsize offset;
gsize i;
+ /* as per the comment in gvs_tuple_get_child() */
+ if G_UNLIKELY (value.data == NULL && value.size != 0)
+ return FALSE;
+
offset_size = gvs_get_offset_size (value.size);
length = g_variant_type_info_n_members (value.type_info);
offset_ptr = value.size;
diff --git a/glib/glib/gvariant-serialiser.h b/glib/glib/gvariant-serialiser.h
index f26b118..b003aed 100644
--- a/glib/glib/gvariant-serialiser.h
+++ b/glib/glib/gvariant-serialiser.h
@@ -33,7 +33,9 @@ typedef struct
} GVariantSerialised;
/* deserialisation */
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_serialised_n_children (GVariantSerialised container);
+GLIB_AVAILABLE_IN_ALL
GVariantSerialised g_variant_serialised_get_child (GVariantSerialised container,
gsize index);
@@ -41,25 +43,32 @@ GVariantSerialised g_variant_serialised_get_child (GVarian
typedef void (*GVariantSerialisedFiller) (GVariantSerialised *serialised,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_serialiser_needed_size (GVariantTypeInfo *info,
GVariantSerialisedFiller gsv_filler,
const gpointer *children,
gsize n_children);
+GLIB_AVAILABLE_IN_ALL
void g_variant_serialiser_serialise (GVariantSerialised container,
GVariantSerialisedFiller gsv_filler,
const gpointer *children,
gsize n_children);
/* misc */
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_serialised_is_normal (GVariantSerialised value);
+GLIB_AVAILABLE_IN_ALL
void g_variant_serialised_byteswap (GVariantSerialised value);
/* validation of strings */
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_serialiser_is_string (gconstpointer data,
gsize size);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_serialiser_is_object_path (gconstpointer data,
gsize size);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_serialiser_is_signature (gconstpointer data,
gsize size);
diff --git a/glib/glib/gvariant.c b/glib/glib/gvariant.c
index 5f2337c..3b3f7df 100644
--- a/glib/glib/gvariant.c
+++ b/glib/glib/gvariant.c
@@ -1160,13 +1160,13 @@ g_variant_get_fixed_array (GVariant *value,
{
if (array_element_size)
g_critical ("g_variant_get_fixed_array: assertion "
- "`g_variant_array_has_fixed_size (value, element_size)' "
+ "'g_variant_array_has_fixed_size (value, element_size)' "
"failed: array size %"G_GSIZE_FORMAT" does not match "
"given element_size %"G_GSIZE_FORMAT".",
array_element_size, element_size);
else
g_critical ("g_variant_get_fixed_array: assertion "
- "`g_variant_array_has_fixed_size (value, element_size)' "
+ "'g_variant_array_has_fixed_size (value, element_size)' "
"failed: array does not have fixed size.");
}
@@ -1274,6 +1274,80 @@ g_variant_new_string (const gchar *string)
}
/**
+ * g_variant_new_take_string: (skip)
+ * @string: a normal utf8 nul-terminated string
+ *
+ * Creates a string #GVariant with the contents of @string.
+ *
+ * @string must be valid utf8.
+ *
+ * This function consumes @string. g_free() will be called on @string
+ * when it is no longer required.
+ *
+ * You must not modify or access @string in any other way after passing
+ * it to this function. It is even possible that @string is immediately
+ * freed.
+ *
+ * Returns: (transfer none): a floating reference to a new string
+ * #GVariant instance
+ *
+ * Since: 2.38
+ **/
+GVariant *
+g_variant_new_take_string (gchar *string)
+{
+ GVariant *value;
+ GBytes *bytes;
+
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (g_utf8_validate (string, -1, NULL), NULL);
+
+ bytes = g_bytes_new_take (string, strlen (string) + 1);
+ value = g_variant_new_from_bytes (G_VARIANT_TYPE_STRING, bytes, TRUE);
+ g_bytes_unref (bytes);
+
+ return value;
+}
+
+/**
+ * g_variant_new_printf: (skip)
+ * @format_string: a printf-style format string
+ * @...: arguments for @format_string
+ *
+ * Creates a string-type GVariant using printf formatting.
+ *
+ * This is similar to calling g_strdup_printf() and then
+ * g_variant_new_string() but it saves a temporary variable and an
+ * unnecessary copy.
+ *
+ * Returns: (transfer none): a floating reference to a new string
+ * #GVariant instance
+ *
+ * Since: 2.38
+ **/
+GVariant *
+g_variant_new_printf (const gchar *format_string,
+ ...)
+{
+ GVariant *value;
+ GBytes *bytes;
+ gchar *string;
+ va_list ap;
+
+ g_return_val_if_fail (format_string != NULL, NULL);
+
+ va_start (ap, format_string);
+ string = g_strdup_vprintf (format_string, ap);
+ va_end (ap);
+
+ bytes = g_bytes_new_take (string, strlen (string) + 1);
+ value = g_variant_new_from_bytes (G_VARIANT_TYPE_STRING, bytes, TRUE);
+ g_bytes_unref (bytes);
+
+ return value;
+}
+
+/**
* g_variant_new_object_path:
* @object_path: a normal C nul-terminated string
*
@@ -3741,6 +3815,110 @@ g_variant_format_string_scan (const gchar *string,
return TRUE;
}
+/**
+ * g_variant_check_format_string:
+ * @value: a #GVariant
+ * @format_string: a valid #GVariant format string
+ * @copy_only: %TRUE to ensure the format string makes deep copies
+ *
+ * Checks if calling g_variant_get() with @format_string on @value would
+ * be valid from a type-compatibility standpoint. @format_string is
+ * assumed to be a valid format string (from a syntactic standpoint).
+ *
+ * If @copy_only is %TRUE then this function additionally checks that it
+ * would be safe to call g_variant_unref() on @value immediately after
+ * the call to g_variant_get() without invalidating the result. This is
+ * only possible if deep copies are made (ie: there are no pointers to
+ * the data inside of the soon-to-be-freed #GVariant instance). If this
+ * check fails then a g_critical() is printed and %FALSE is returned.
+ *
+ * This function is meant to be used by functions that wish to provide
+ * varargs accessors to #GVariant values of uncertain values (eg:
+ * g_variant_lookup() or g_menu_model_get_item_attribute()).
+ *
+ * Returns: %TRUE if @format_string is safe to use
+ *
+ * Since: 2.34
+ */
+gboolean
+g_variant_check_format_string (GVariant *value,
+ const gchar *format_string,
+ gboolean copy_only)
+{
+ const gchar *original_format = format_string;
+ const gchar *type_string;
+
+ /* Interesting factoid: assuming a format string is valid, it can be
+ * converted to a type string by removing all '@' '&' and '^'
+ * characters.
+ *
+ * Instead of doing that, we can just skip those characters when
+ * comparing it to the type string of @value.
+ *
+ * For the copy-only case we can just drop the '&' from the list of
+ * characters to skip over. A '&' will never appear in a type string
+ * so we know that it won't be possible to return %TRUE if it is in a
+ * format string.
+ */
+ type_string = g_variant_get_type_string (value);
+
+ while (*type_string || *format_string)
+ {
+ gchar format = *format_string++;
+
+ switch (format)
+ {
+ case '&':
+ if G_UNLIKELY (copy_only)
+ {
+ /* for the love of all that is good, please don't mark this string for translation... */
+ g_critical ("g_variant_check_format_string() is being called by a function with a GVariant varargs "
+ "interface to validate the passed format string for type safety. The passed format "
+ "(%s) contains a '&' character which would result in a pointer being returned to the "
+ "data inside of a GVariant instance that may no longer exist by the time the function "
+ "returns. Modify your code to use a format string without '&'.", original_format);
+ return FALSE;
+ }
+
+ /* fall through */
+ case '^':
+ case '@':
+ /* ignore these 2 (or 3) */
+ continue;
+
+ case '?':
+ /* attempt to consume one of 'bynqiuxthdsog' */
+ {
+ char s = *type_string++;
+
+ if (s == '\0' || strchr ("bynqiuxthdsog", s) == NULL)
+ return FALSE;
+ }
+ continue;
+
+ case 'r':
+ /* ensure it's a tuple */
+ if (*type_string != '(')
+ return FALSE;
+
+ /* fall through */
+ case '*':
+ /* consume a full type string for the '*' or 'r' */
+ if (!g_variant_type_string_scan (type_string, NULL, &type_string))
+ return FALSE;
+
+ continue;
+
+ default:
+ /* attempt to consume exactly one character equal to the format */
+ if (format != *type_string++)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
/*< private >
* g_variant_format_string_scan_type:
* @string: a string that may be prefixed with a format string
@@ -3803,10 +3981,10 @@ valid_format_string (const gchar *format_string,
if G_UNLIKELY (type == NULL || (single && *endptr != '\0'))
{
if (single)
- g_critical ("`%s' is not a valid GVariant format string",
+ g_critical ("'%s' is not a valid GVariant format string",
format_string);
else
- g_critical ("`%s' does not have a valid GVariant format "
+ g_critical ("'%s' does not have a valid GVariant format "
"string as a prefix", format_string);
if (type != NULL)
@@ -3823,11 +4001,13 @@ valid_format_string (const gchar *format_string,
fragment = g_strndup (format_string, endptr - format_string);
typestr = g_variant_type_dup_string (type);
- g_critical ("the GVariant format string `%s' has a type of "
- "`%s' but the given value has a type of `%s'",
+ g_critical ("the GVariant format string '%s' has a type of "
+ "'%s' but the given value has a type of '%s'",
fragment, typestr, g_variant_get_type_string (value));
g_variant_type_free (type);
+ g_free (fragment);
+ g_free (typestr);
return FALSE;
}
@@ -3977,14 +4157,14 @@ g_variant_valist_new_nnp (const gchar **str,
if G_UNLIKELY (!g_variant_type_is_array (type))
g_error ("g_variant_new: expected array GVariantBuilder but "
- "the built value has type `%s'",
+ "the built value has type '%s'",
g_variant_get_type_string (value));
type = g_variant_type_element (type);
if G_UNLIKELY (!g_variant_type_is_subtype_of (type, (GVariantType *) *str))
g_error ("g_variant_new: expected GVariantBuilder array element "
- "type `%s' but the built value has element type `%s'",
+ "type '%s' but the built value has element type '%s'",
g_variant_type_dup_string ((GVariantType *) *str),
g_variant_get_type_string (value) + 1);
@@ -4048,8 +4228,8 @@ g_variant_valist_new_nnp (const gchar **str,
case '@':
if G_UNLIKELY (!g_variant_is_of_type (ptr, (GVariantType *) *str))
- g_error ("g_variant_new: expected GVariant of type `%s' but "
- "received value has type `%s'",
+ g_error ("g_variant_new: expected GVariant of type '%s' but "
+ "received value has type '%s'",
g_variant_type_dup_string ((GVariantType *) *str),
g_variant_get_type_string (ptr));
@@ -4062,16 +4242,16 @@ g_variant_valist_new_nnp (const gchar **str,
case '?':
if G_UNLIKELY (!g_variant_type_is_basic (g_variant_get_type (ptr)))
- g_error ("g_variant_new: format string `?' expects basic-typed "
- "GVariant, but received value has type `%s'",
+ g_error ("g_variant_new: format string '?' expects basic-typed "
+ "GVariant, but received value has type '%s'",
g_variant_get_type_string (ptr));
return ptr;
case 'r':
if G_UNLIKELY (!g_variant_type_is_tuple (g_variant_get_type (ptr)))
- g_error ("g_variant_new: format string `r` expects tuple-typed "
- "GVariant, but received value has type `%s'",
+ g_error ("g_variant_new: format string 'r' expects tuple-typed "
+ "GVariant, but received value has type '%s'",
g_variant_get_type_string (ptr));
return ptr;
diff --git a/glib/glib/gvariant.h b/glib/glib/gvariant.h
index d0cd857..dbace86 100644
--- a/glib/glib/gvariant.h
+++ b/glib/glib/gvariant.h
@@ -20,15 +20,16 @@
* Author: Ryan Lortie <desrt@desrt.ca>
*/
+#ifndef __G_VARIANT_H__
+#define __G_VARIANT_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_VARIANT_H__
-#define __G_VARIANT_H__
-
#include <glib/gvarianttype.h>
#include <glib/gstring.h>
+#include <glib/gbytes.h>
G_BEGIN_DECLS
@@ -56,125 +57,209 @@ typedef enum
G_VARIANT_CLASS_DICT_ENTRY = '{'
} GVariantClass;
+GLIB_AVAILABLE_IN_ALL
void g_variant_unref (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_ref (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_ref_sink (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_floating (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_take_ref (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_get_type (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_variant_get_type_string (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_of_type (GVariant *value,
const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_container (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariantClass g_variant_classify (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_boolean (gboolean value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_byte (guchar value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_int16 (gint16 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_uint16 (guint16 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_int32 (gint32 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_uint32 (guint32 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_int64 (gint64 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_uint64 (guint64 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_handle (gint32 value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_double (gdouble value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_string (const gchar *string);
+GLIB_AVAILABLE_IN_2_38
+GVariant * g_variant_new_take_string (gchar *string);
+GLIB_AVAILABLE_IN_2_38
+GVariant * g_variant_new_printf (const gchar *format_string,
+ ...) G_GNUC_PRINTF (1, 2);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_object_path (const gchar *object_path);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_object_path (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_signature (const gchar *signature);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_signature (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_variant (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_strv (const gchar * const *strv,
gssize length);
GLIB_AVAILABLE_IN_2_30
GVariant * g_variant_new_objv (const gchar * const *strv,
gssize length);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_bytestring (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_bytestring_array (const gchar * const *strv,
gssize length);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_fixed_array (const GVariantType *element_type,
gconstpointer elements,
gsize n_elements,
gsize element_size);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_get_boolean (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
guchar g_variant_get_byte (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gint16 g_variant_get_int16 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
guint16 g_variant_get_uint16 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gint32 g_variant_get_int32 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
guint32 g_variant_get_uint32 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gint64 g_variant_get_int64 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
guint64 g_variant_get_uint64 (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gint32 g_variant_get_handle (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gdouble g_variant_get_double (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_get_variant (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_variant_get_string (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
gchar * g_variant_dup_string (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
const gchar ** g_variant_get_strv (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_variant_dup_strv (GVariant *value,
gsize *length);
GLIB_AVAILABLE_IN_2_30
const gchar ** g_variant_get_objv (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_variant_dup_objv (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_variant_get_bytestring (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gchar * g_variant_dup_bytestring (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
const gchar ** g_variant_get_bytestring_array (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
gchar ** g_variant_dup_bytestring_array (GVariant *value,
gsize *length);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_maybe (const GVariantType *child_type,
GVariant *child);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_array (const GVariantType *child_type,
GVariant * const *children,
gsize n_children);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_tuple (GVariant * const *children,
gsize n_children);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_dict_entry (GVariant *key,
GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_get_maybe (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_n_children (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
void g_variant_get_child (GVariant *value,
gsize index_,
const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_get_child_value (GVariant *value,
gsize index_);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_lookup (GVariant *dictionary,
const gchar *key,
const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_lookup_value (GVariant *dictionary,
const gchar *key,
const GVariantType *expected_type);
+GLIB_AVAILABLE_IN_ALL
gconstpointer g_variant_get_fixed_array (GVariant *value,
gsize *n_elements,
gsize element_size);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_get_size (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gconstpointer g_variant_get_data (GVariant *value);
+GLIB_AVAILABLE_IN_2_36
+GBytes * g_variant_get_data_as_bytes (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
void g_variant_store (GVariant *value,
gpointer data);
+GLIB_AVAILABLE_IN_ALL
gchar * g_variant_print (GVariant *value,
gboolean type_annotate);
+GLIB_AVAILABLE_IN_ALL
GString * g_variant_print_string (GVariant *value,
GString *string,
gboolean type_annotate);
+GLIB_AVAILABLE_IN_ALL
guint g_variant_hash (gconstpointer value);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_equal (gconstpointer one,
gconstpointer two);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_get_normal_form (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_is_normal_form (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_byteswap (GVariant *value);
+
+GLIB_AVAILABLE_IN_2_36
+GVariant * g_variant_new_from_bytes (const GVariantType *type,
+ GBytes *bytes,
+ gboolean trusted);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_from_data (const GVariantType *type,
gconstpointer data,
gsize size,
@@ -188,16 +273,24 @@ struct _GVariantIter {
gsize x[16];
};
+GLIB_AVAILABLE_IN_ALL
GVariantIter * g_variant_iter_new (GVariant *value);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_iter_init (GVariantIter *iter,
GVariant *value);
+GLIB_AVAILABLE_IN_ALL
GVariantIter * g_variant_iter_copy (GVariantIter *iter);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_iter_n_children (GVariantIter *iter);
+GLIB_AVAILABLE_IN_ALL
void g_variant_iter_free (GVariantIter *iter);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_iter_next_value (GVariantIter *iter);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_iter_next (GVariantIter *iter,
const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_iter_loop (GVariantIter *iter,
const gchar *format_string,
...);
@@ -232,51 +325,74 @@ typedef enum
} GVariantParseError;
#define G_VARIANT_PARSE_ERROR (g_variant_parser_get_error_quark ())
+GLIB_AVAILABLE_IN_ALL
GQuark g_variant_parser_get_error_quark (void);
+GLIB_AVAILABLE_IN_ALL
GVariantBuilder * g_variant_builder_new (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_unref (GVariantBuilder *builder);
+GLIB_AVAILABLE_IN_ALL
GVariantBuilder * g_variant_builder_ref (GVariantBuilder *builder);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_init (GVariantBuilder *builder,
const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_builder_end (GVariantBuilder *builder);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_clear (GVariantBuilder *builder);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_open (GVariantBuilder *builder,
const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_close (GVariantBuilder *builder);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_add_value (GVariantBuilder *builder,
GVariant *value);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_add (GVariantBuilder *builder,
const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
void g_variant_builder_add_parsed (GVariantBuilder *builder,
const gchar *format,
...);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new (const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
void g_variant_get (GVariant *value,
const gchar *format_string,
...);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_va (const gchar *format_string,
const gchar **endptr,
va_list *app);
+GLIB_AVAILABLE_IN_ALL
void g_variant_get_va (GVariant *value,
const gchar *format_string,
const gchar **endptr,
va_list *app);
+GLIB_AVAILABLE_IN_2_34
+gboolean g_variant_check_format_string (GVariant *value,
+ const gchar *format_string,
+ gboolean copy_only);
-
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_parse (const GVariantType *type,
const gchar *text,
const gchar *limit,
const gchar **endptr,
GError **error);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_parsed (const gchar *format,
...);
+GLIB_AVAILABLE_IN_ALL
GVariant * g_variant_new_parsed_va (const gchar *format,
va_list *app);
+GLIB_AVAILABLE_IN_ALL
gint g_variant_compare (gconstpointer one,
gconstpointer two);
G_END_DECLS
diff --git a/glib/glib/gvarianttype.c b/glib/glib/gvarianttype.c
index 5c27fe0..658af77 100644
--- a/glib/glib/gvarianttype.c
+++ b/glib/glib/gvarianttype.c
@@ -486,14 +486,11 @@
static gboolean
g_variant_type_check (const GVariantType *type)
{
- const gchar *type_string;
-
if (type == NULL)
return FALSE;
- type_string = (const gchar *) type;
-#ifndef G_DISABLE_CHECKS
- return g_variant_type_string_scan (type_string, NULL, NULL);
+#if 0
+ return g_variant_type_string_scan ((const gchar *) type, NULL, NULL);
#else
return TRUE;
#endif
@@ -1418,7 +1415,7 @@ g_variant_type_new_tuple (const GVariantType * const *items,
}
/**
- * g_variant_type_new_array:
+ * g_variant_type_new_array: (constructor)
* @element: a #GVariantType
*
* Constructs the type corresponding to an array of elements of the
@@ -1448,7 +1445,7 @@ g_variant_type_new_array (const GVariantType *element)
}
/**
- * g_variant_type_new_maybe:
+ * g_variant_type_new_maybe: (constructor)
* @element: a #GVariantType
*
* Constructs the type corresponding to a maybe instance containing
@@ -1478,7 +1475,7 @@ g_variant_type_new_maybe (const GVariantType *element)
}
/**
- * g_variant_type_new_dict_entry:
+ * g_variant_type_new_dict_entry: (constructor)
* @key: a basic #GVariantType
* @value: a #GVariantType
*
diff --git a/glib/glib/gvarianttype.h b/glib/glib/gvarianttype.h
index fe1ba84..81e324f 100644
--- a/glib/glib/gvarianttype.h
+++ b/glib/glib/gvarianttype.h
@@ -20,13 +20,13 @@
* Author: Ryan Lortie <desrt@desrt.ca>
*/
+#ifndef __G_VARIANT_TYPE_H__
+#define __G_VARIANT_TYPE_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_VARIANT_TYPE_H__
-#define __G_VARIANT_TYPE_H__
-
#include <glib/gmessages.h>
#include <glib/gtypes.h>
@@ -294,57 +294,87 @@ typedef struct _GVariantType GVariantType;
#endif
/* type string checking */
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_string_is_valid (const gchar *type_string);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_string_scan (const gchar *string,
const gchar *limit,
const gchar **endptr);
/* create/destroy */
+GLIB_AVAILABLE_IN_ALL
void g_variant_type_free (GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_copy (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_new (const gchar *type_string);
/* getters */
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_type_get_string_length (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_variant_type_peek_string (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gchar * g_variant_type_dup_string (const GVariantType *type);
/* classification */
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_definite (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_container (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_basic (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_maybe (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_array (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_tuple (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_dict_entry (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_variant (const GVariantType *type);
/* for hash tables */
+GLIB_AVAILABLE_IN_ALL
guint g_variant_type_hash (gconstpointer type);
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_equal (gconstpointer type1,
gconstpointer type2);
/* subtypes */
+GLIB_AVAILABLE_IN_ALL
gboolean g_variant_type_is_subtype_of (const GVariantType *type,
const GVariantType *supertype);
/* type iterator interface */
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_element (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_first (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_next (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_type_n_items (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_key (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_value (const GVariantType *type);
/* constructors */
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_new_array (const GVariantType *element);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_new_maybe (const GVariantType *element);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_new_tuple (const GVariantType * const *items,
gint length);
+GLIB_AVAILABLE_IN_ALL
GVariantType * g_variant_type_new_dict_entry (const GVariantType *key,
const GVariantType *value);
/*< private >*/
+GLIB_AVAILABLE_IN_ALL
const GVariantType * g_variant_type_checked_ (const gchar *);
G_END_DECLS
diff --git a/glib/glib/gvarianttypeinfo.h b/glib/glib/gvarianttypeinfo.h
index aaf14f4..7247bf2 100644
--- a/glib/glib/gvarianttypeinfo.h
+++ b/glib/glib/gvarianttypeinfo.h
@@ -125,27 +125,37 @@ typedef struct
#define G_VARIANT_MEMBER_ENDING_OFFSET 2
/* query */
+GLIB_AVAILABLE_IN_ALL
const gchar * g_variant_type_info_get_type_string (GVariantTypeInfo *typeinfo);
+GLIB_AVAILABLE_IN_ALL
void g_variant_type_info_query (GVariantTypeInfo *typeinfo,
guint *alignment,
gsize *size);
/* array */
+GLIB_AVAILABLE_IN_ALL
GVariantTypeInfo * g_variant_type_info_element (GVariantTypeInfo *typeinfo);
+GLIB_AVAILABLE_IN_ALL
void g_variant_type_info_query_element (GVariantTypeInfo *typeinfo,
guint *alignment,
gsize *size);
/* structure */
+GLIB_AVAILABLE_IN_ALL
gsize g_variant_type_info_n_members (GVariantTypeInfo *typeinfo);
+GLIB_AVAILABLE_IN_ALL
const GVariantMemberInfo * g_variant_type_info_member_info (GVariantTypeInfo *typeinfo,
gsize index);
/* new/ref/unref */
+GLIB_AVAILABLE_IN_ALL
GVariantTypeInfo * g_variant_type_info_get (const GVariantType *type);
+GLIB_AVAILABLE_IN_ALL
GVariantTypeInfo * g_variant_type_info_ref (GVariantTypeInfo *typeinfo);
+GLIB_AVAILABLE_IN_ALL
void g_variant_type_info_unref (GVariantTypeInfo *typeinfo);
+GLIB_AVAILABLE_IN_ALL
void g_variant_type_info_assert_no_infos (void);
#endif /* __G_VARIANT_TYPE_INFO_H__ */
diff --git a/glib/glib/gversion.h b/glib/glib/gversion.h
index d0581c2..7eb414d 100644
--- a/glib/glib/gversion.h
+++ b/glib/glib/gversion.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_VERSION_H__
+#define __G_VERSION_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_VERSION_H__
-#define __G_VERSION_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
@@ -41,6 +41,7 @@ GLIB_VAR const guint glib_micro_version;
GLIB_VAR const guint glib_interface_age;
GLIB_VAR const guint glib_binary_age;
+GLIB_AVAILABLE_IN_ALL
const gchar * glib_check_version (guint required_major,
guint required_minor,
guint required_micro);
diff --git a/glib/glib/gversionmacros.h b/glib/glib/gversionmacros.h
index 95b0e7f..b591534 100644
--- a/glib/glib/gversionmacros.h
+++ b/glib/glib/gversionmacros.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_VERSION_MACROS_H__
+#define __G_VERSION_MACROS_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_VERSION_MACROS_H__
-#define __G_VERSION_MACROS_H__
-
/* Version boundaries checks */
#define G_ENCODE_VERSION(major,minor) ((major) << 16 | (minor) << 8)
@@ -77,6 +77,36 @@
*/
#define GLIB_VERSION_2_32 (G_ENCODE_VERSION (2, 32))
+/**
+ * GLIB_VERSION_2_34:
+ *
+ * A macro that evaluates to the 2.34 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.34
+ */
+#define GLIB_VERSION_2_34 (G_ENCODE_VERSION (2, 34))
+
+/**
+ * GLIB_VERSION_2_36:
+ *
+ * A macro that evaluates to the 2.36 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.36
+ */
+#define GLIB_VERSION_2_36 (G_ENCODE_VERSION (2, 36))
+
+/**
+ * GLIB_VERSION_2_38:
+ *
+ * A macro that evaluates to the 2.38 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.38
+ */
+#define GLIB_VERSION_2_38 (G_ENCODE_VERSION (2, 38))
+
/* evaluates to the current stable version; for development cycles,
* this means the next stable target
*/
@@ -101,16 +131,25 @@
* The definition should be one of the predefined GLib version
* macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,...
*
- * This macro defines the lower bound for the GLib API to use.
+ * This macro defines the earliest version of GLib that the package is
+ * required to be able to compile against.
*
- * If a function has been deprecated in a newer version of GLib,
- * it is possible to use this symbol to avoid the compiler warnings
- * without disabling warning for every deprecated function.
+ * If the compiler is configured to warn about the use of deprecated
+ * functions, then using functions that were deprecated in version
+ * %GLIB_VERSION_MIN_REQUIRED or earlier will cause warnings (but
+ * using functions deprecated in later releases will not).
*
* Since: 2.32
*/
+/* If the package sets GLIB_VERSION_MIN_REQUIRED to some future
+ * GLIB_VERSION_X_Y value that we don't know about, it will compare as
+ * 0 in preprocessor tests.
+ */
#ifndef GLIB_VERSION_MIN_REQUIRED
-# define GLIB_VERSION_MIN_REQUIRED (GLIB_VERSION_PREV_STABLE)
+# define GLIB_VERSION_MIN_REQUIRED (GLIB_VERSION_CUR_STABLE)
+#elif GLIB_VERSION_MIN_REQUIRED == 0
+# undef GLIB_VERSION_MIN_REQUIRED
+# define GLIB_VERSION_MIN_REQUIRED (GLIB_VERSION_CUR_STABLE + 2)
#endif
/**
@@ -121,23 +160,28 @@
* The definition should be one of the predefined GLib version
* macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,...
*
- * This macro defines the upper bound for the GLib API to use.
+ * This macro defines the latest version of the GLib API that the
+ * package is allowed to make use of.
+ *
+ * If the compiler is configured to warn about the use of deprecated
+ * functions, then using functions added after version
+ * %GLIB_VERSION_MAX_ALLOWED will cause warnings.
*
- * If a function has been introduced in a newer version of GLib,
- * it is possible to use this symbol to get compiler warnings when
- * trying to use that function.
+ * Unless you are using GLIB_CHECK_VERSION() or the like to compile
+ * different code depending on the GLib version, then this should be
+ * set to the same value as %GLIB_VERSION_MIN_REQUIRED.
*
* Since: 2.32
*/
-#ifndef GLIB_VERSION_MAX_ALLOWED
-# if GLIB_VERSION_MIN_REQUIRED > GLIB_VERSION_PREV_STABLE
-# define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_MIN_REQUIRED
-# else
-# define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_CUR_STABLE
-# endif
+#if !defined (GLIB_VERSION_MAX_ALLOWED) || (GLIB_VERSION_MAX_ALLOWED == 0)
+# undef GLIB_VERSION_MAX_ALLOWED
+# define GLIB_VERSION_MAX_ALLOWED (GLIB_VERSION_CUR_STABLE)
#endif
/* sanity checks */
+#if GLIB_VERSION_MIN_REQUIRED > GLIB_VERSION_CUR_STABLE
+#error "GLIB_VERSION_MIN_REQUIRED must be <= GLIB_VERSION_CUR_STABLE"
+#endif
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_MIN_REQUIRED
#error "GLIB_VERSION_MAX_ALLOWED must be >= GLIB_VERSION_MIN_REQUIRED"
#endif
@@ -150,6 +194,7 @@
* do *not* use them in other projects. Instead, use G_DEPRECATED
* or define your own wrappers around it.
*/
+#define GLIB_AVAILABLE_IN_ALL _GLIB_EXTERN
/* XXX: Every new stable minor release should add a set of macros here */
@@ -157,56 +202,98 @@
# define GLIB_DEPRECATED_IN_2_26 GLIB_DEPRECATED
# define GLIB_DEPRECATED_IN_2_26_FOR(f) GLIB_DEPRECATED_FOR(f)
#else
-# define GLIB_DEPRECATED_IN_2_26
-# define GLIB_DEPRECATED_IN_2_26_FOR(f)
+# define GLIB_DEPRECATED_IN_2_26 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_26_FOR(f) _GLIB_EXTERN
#endif
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_26
# define GLIB_AVAILABLE_IN_2_26 GLIB_UNAVAILABLE(2, 26)
#else
-# define GLIB_AVAILABLE_IN_2_26
+# define GLIB_AVAILABLE_IN_2_26 _GLIB_EXTERN
#endif
#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_28
# define GLIB_DEPRECATED_IN_2_28 GLIB_DEPRECATED
# define GLIB_DEPRECATED_IN_2_28_FOR(f) GLIB_DEPRECATED_FOR(f)
#else
-# define GLIB_DEPRECATED_IN_2_28
-# define GLIB_DEPRECATED_IN_2_28_FOR(f)
+# define GLIB_DEPRECATED_IN_2_28 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_28_FOR(f) _GLIB_EXTERN
#endif
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_28
# define GLIB_AVAILABLE_IN_2_28 GLIB_UNAVAILABLE(2, 28)
#else
-# define GLIB_AVAILABLE_IN_2_28
+# define GLIB_AVAILABLE_IN_2_28 _GLIB_EXTERN
#endif
#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_30
# define GLIB_DEPRECATED_IN_2_30 GLIB_DEPRECATED
# define GLIB_DEPRECATED_IN_2_30_FOR(f) GLIB_DEPRECATED_FOR(f)
#else
-# define GLIB_DEPRECATED_IN_2_30
-# define GLIB_DEPRECATED_IN_2_30_FOR(f)
+# define GLIB_DEPRECATED_IN_2_30 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_30_FOR(f) _GLIB_EXTERN
#endif
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_30
# define GLIB_AVAILABLE_IN_2_30 GLIB_UNAVAILABLE(2, 30)
#else
-# define GLIB_AVAILABLE_IN_2_30
+# define GLIB_AVAILABLE_IN_2_30 _GLIB_EXTERN
#endif
#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_32
# define GLIB_DEPRECATED_IN_2_32 GLIB_DEPRECATED
# define GLIB_DEPRECATED_IN_2_32_FOR(f) GLIB_DEPRECATED_FOR(f)
#else
-# define GLIB_DEPRECATED_IN_2_32
-# define GLIB_DEPRECATED_IN_2_32_FOR(f)
+# define GLIB_DEPRECATED_IN_2_32 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_32_FOR(f) _GLIB_EXTERN
#endif
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_32
# define GLIB_AVAILABLE_IN_2_32 GLIB_UNAVAILABLE(2, 32)
#else
-# define GLIB_AVAILABLE_IN_2_32
+# define GLIB_AVAILABLE_IN_2_32 _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_34
+# define GLIB_DEPRECATED_IN_2_34 GLIB_DEPRECATED
+# define GLIB_DEPRECATED_IN_2_34_FOR(f) GLIB_DEPRECATED_FOR(f)
+#else
+# define GLIB_DEPRECATED_IN_2_34 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_34_FOR(f) _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_34
+# define GLIB_AVAILABLE_IN_2_34 GLIB_UNAVAILABLE(2, 34)
+#else
+# define GLIB_AVAILABLE_IN_2_34 _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_36
+# define GLIB_DEPRECATED_IN_2_36 GLIB_DEPRECATED
+# define GLIB_DEPRECATED_IN_2_36_FOR(f) GLIB_DEPRECATED_FOR(f)
+#else
+# define GLIB_DEPRECATED_IN_2_36 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_36_FOR(f) _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_36
+# define GLIB_AVAILABLE_IN_2_36 GLIB_UNAVAILABLE(2, 36)
+#else
+# define GLIB_AVAILABLE_IN_2_36 _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_38
+# define GLIB_DEPRECATED_IN_2_38 GLIB_DEPRECATED
+# define GLIB_DEPRECATED_IN_2_38_FOR(f) GLIB_DEPRECATED_FOR(f)
+#else
+# define GLIB_DEPRECATED_IN_2_38 _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_38_FOR(f) _GLIB_EXTERN
+#endif
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+# define GLIB_AVAILABLE_IN_2_38 GLIB_UNAVAILABLE(2, 38)
+#else
+# define GLIB_AVAILABLE_IN_2_38 _GLIB_EXTERN
#endif
#endif /* __G_VERSION_MACROS_H__ */
diff --git a/glib/glib/gwakeup.c b/glib/glib/gwakeup.c
index bb49059..2aec2f5 100644
--- a/glib/glib/gwakeup.c
+++ b/glib/glib/gwakeup.c
@@ -22,7 +22,7 @@
#include "config.h"
-/* gwakeup.h is special -- GIO and some test cases include it. As such,
+/* gwakeup.c is special -- GIO and some test cases include it. As such,
* it cannot include other glib headers without triggering the single
* includes warnings. We have to manually include its dependencies here
* (and at all other use sites).
@@ -230,11 +230,20 @@ void
g_wakeup_signal (GWakeup *wakeup)
{
guint64 one = 1;
+ int res;
if (wakeup->fds[1] == -1)
- write (wakeup->fds[0], &one, sizeof one);
+ {
+ do
+ res = write (wakeup->fds[0], &one, sizeof one);
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
+ }
else
- write (wakeup->fds[1], &one, 1);
+ {
+ do
+ res = write (wakeup->fds[1], &one, 1);
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
+ }
}
/**
diff --git a/glib/glib/gwakeup.h b/glib/glib/gwakeup.h
index bd94520..d871cdf 100644
--- a/glib/glib/gwakeup.h
+++ b/glib/glib/gwakeup.h
@@ -26,12 +26,12 @@
typedef struct _GWakeup GWakeup;
-G_GNUC_INTERNAL GWakeup * g_wakeup_new (void);
-G_GNUC_INTERNAL void g_wakeup_free (GWakeup *wakeup);
+GWakeup * g_wakeup_new (void);
+void g_wakeup_free (GWakeup *wakeup);
-G_GNUC_INTERNAL void g_wakeup_get_pollfd (GWakeup *wakeup,
- GPollFD *poll_fd);
-G_GNUC_INTERNAL void g_wakeup_signal (GWakeup *wakeup);
-G_GNUC_INTERNAL void g_wakeup_acknowledge (GWakeup *wakeup);
+void g_wakeup_get_pollfd (GWakeup *wakeup,
+ GPollFD *poll_fd);
+void g_wakeup_signal (GWakeup *wakeup);
+void g_wakeup_acknowledge (GWakeup *wakeup);
#endif
diff --git a/glib/glib/gwin32.h b/glib/glib/gwin32.h
index b0fb7c0..ae87a45 100644
--- a/glib/glib/gwin32.h
+++ b/glib/glib/gwin32.h
@@ -24,13 +24,13 @@
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_WIN32_H__
+#define __G_WIN32_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_WIN32_H__
-#define __G_WIN32_H__
-
#include <glib/gtypes.h>
#ifdef G_PLATFORM_WIN32
@@ -65,6 +65,7 @@ G_BEGIN_DECLS
* g_win32_. Or that was the idea at some time, but there is just one
* of those:
*/
+GLIB_AVAILABLE_IN_ALL
gint g_win32_ftruncate (gint f,
guint size);
#endif /* G_OS_WIN32 */
@@ -75,36 +76,34 @@ gint g_win32_ftruncate (gint f,
* returns it as a string of the above form for use in forming file
* names etc. The returned string should be deallocated with g_free().
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_win32_getlocale (void);
/* Translate a Win32 error code (as returned by GetLastError()) into
* the corresponding message. The returned string should be deallocated
* with g_free().
*/
+GLIB_AVAILABLE_IN_ALL
gchar* g_win32_error_message (gint error);
-#ifndef G_DISABLE_DEPRECATED
-
-#ifndef __GTK_DOC_IGNORE__
-#ifdef _WIN64
-#define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
-#define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
-#endif
-#endif
-
+#ifndef _WIN64
+GLIB_DEPRECATED
gchar* g_win32_get_package_installation_directory (const gchar *package,
const gchar *dll_name);
+GLIB_DEPRECATED
gchar* g_win32_get_package_installation_subdirectory (const gchar *package,
const gchar *dll_name,
const gchar *subdir);
-
#endif
+GLIB_AVAILABLE_IN_ALL
gchar* g_win32_get_package_installation_directory_of_module (gpointer hmodule);
+GLIB_AVAILABLE_IN_ALL
guint g_win32_get_windows_version (void);
+GLIB_AVAILABLE_IN_ALL
gchar* g_win32_locale_filename_from_utf8 (const gchar *utf8filename);
/* As of GLib 2.14 we only support NT-based Windows */
@@ -115,4 +114,20 @@ G_END_DECLS
#endif /* G_PLATFORM_WIN32 */
+#ifdef G_OS_WIN32
+#ifdef _WIN64
+#define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
+#define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
+#endif
+
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_directory_utf8 (const gchar *package,
+ const gchar *dll_name);
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_subdirectory_utf8 (const gchar *package,
+ const gchar *dll_name,
+ const gchar *subdir);
+
+#endif /* G_OS_WIN32 */
+
#endif /* __G_WIN32_H__ */
diff --git a/glib/glib/libcharset/Makefile.am b/glib/glib/libcharset/Makefile.am
index f45e498..abf32cb 100644
--- a/glib/glib/libcharset/Makefile.am
+++ b/glib/glib/libcharset/Makefile.am
@@ -1,11 +1,13 @@
## Process this file with automake to produce Makefile.in
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib.mk
-INCLUDES = \
- -DLIBDIR=\"$(libdir)\" $(config_h_INCLUDES)
+AM_CPPFLAGS = \
+ -DLIBDIR=\"$(libdir)\" \
+ $(config_h_INCLUDES)
-noinst_LTLIBRARIES = libcharset.la
+noinst_LTLIBRARIES += libcharset.la
+libcharset_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libcharset_la_SOURCES = \
libcharset.h \
localcharset.h \
@@ -36,4 +38,4 @@ SUFFIXES = .sed .sin
$(AM_V_GEN) $(SED) -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
@mv t-$@ $@
-CLEANFILES = charset.alias ref-add.sed ref-del.sed
+CLEANFILES += charset.alias ref-add.sed ref-del.sed
diff --git a/glib/glib/libcharset/Makefile.in b/glib/glib/libcharset/Makefile.in
index 344bc3d..10272bb 100644
--- a/glib/glib/libcharset/Makefile.in
+++ b/glib/glib/libcharset/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,24 +16,65 @@
# GLIB - Library of useful C routines
+
+
+
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -52,12 +93,43 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/Makefile.decl $(top_srcdir)/depcomp \
- $(top_srcdir)/mkinstalldirs
+installed_test_PROGRAMS = $(am__EXEEXT_1)
+noinst_PROGRAMS = $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_1)
+@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs)
+
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
subdir = glib/libcharset
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
+ $(top_srcdir)/m4macros/glibtests.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/m4macros/ltoptions.m4 \
$(top_srcdir)/m4macros/ltsugar.m4 \
$(top_srcdir)/m4macros/ltversion.m4 \
@@ -69,18 +141,59 @@ am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_test_metadir)" \
+ "$(DESTDIR)$(installed_testdir)"
+LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
libcharset_la_LIBADD =
-am_libcharset_la_OBJECTS = localcharset.lo
+am_libcharset_la_OBJECTS = libcharset_la-localcharset.lo
libcharset_la_OBJECTS = $(am_libcharset_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+libcharset_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcharset_la_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am__EXEEXT_1 =
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1)
+PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
+SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -122,8 +235,204 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
+ $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/glib.mk $(top_srcdir)/test-driver README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ABS_GLIB_RUNTIME_LIBDIR = @ABS_GLIB_RUNTIME_LIBDIR@
ACLOCAL = @ACLOCAL@
@@ -164,6 +473,7 @@ GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
@@ -171,6 +481,7 @@ GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
+GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GREP = @GREP@
GSPAWN = @GSPAWN@
@@ -201,7 +512,6 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
@@ -217,6 +527,7 @@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
+NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -243,14 +554,13 @@ PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
-SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDRES = @WINDRES@
-XATTR_LIBS = @XATTR_LIBS@
+WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -281,7 +591,6 @@ gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
-gthread_INCLUDES = @gthread_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -291,6 +600,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -317,17 +628,104 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
# initialize variables for unconditional += appending
-EXTRA_DIST = README config.charset ref-add.sin ref-del.sin glibc21.m4 \
- codeset.m4 update.sh make-patch.sh libcharset-glib.patch
-TEST_PROGS =
-INCLUDES = \
- -DLIBDIR=\"$(libdir)\" $(config_h_INCLUDES)
-
-noinst_LTLIBRARIES = libcharset.la
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs $(am__append_14) charset.alias ref-add.sed \
+ ref-del.sed
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) README \
+ config.charset ref-add.sin ref-del.sin glibc21.m4 codeset.m4 \
+ update.sh make-patch.sh libcharset-glib.patch
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
+ $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+installed_test_LTLIBRARIES = $(am__append_13)
+installed_test_SCRIPTS = $(am__append_11)
+nobase_installed_test_DATA = $(am__append_12)
+noinst_LTLIBRARIES = $(am__append_2) libcharset.la
+noinst_SCRIPTS = $(am__append_4)
+noinst_DATA = $(am__append_5)
+check_LTLIBRARIES = $(am__append_6)
+check_SCRIPTS = $(am__append_8)
+check_DATA = $(am__append_9)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
+ $(installed_test_scripts) $(test_extra_scripts) \
+ $(uninstalled_test_extra_scripts) \
+ $(installed_test_extra_scripts) $(all_dist_test_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+
+all_test_data = $(test_data) $(uninstalled_test_data) \
+ $(installed_test_data) $(all_dist_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
+AM_CPPFLAGS = \
+ -DLIBDIR=\"$(libdir)\" \
+ $(config_h_INCLUDES)
+
+libcharset_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libcharset_la_SOURCES = \
libcharset.h \
localcharset.h \
@@ -336,12 +734,12 @@ libcharset_la_SOURCES = \
charset_alias = $(DESTDIR)$(libdir)/charset.alias
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
SUFFIXES = .sed .sin
-CLEANFILES = charset.alias ref-add.sed ref-del.sed
-all: all-am
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .sed .sin .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
+.SUFFIXES: .sed .sin .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -353,7 +751,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glib/libcharset/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign glib/libcharset/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -362,7 +759,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/Makefile.decl:
+$(top_srcdir)/glib.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -373,6 +770,52 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+clean-checkLTLIBRARIES:
+ -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
+ @list='$(check_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
+ }
+
+uninstall-installed_testLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
+ done
+
+clean-installed_testLTLIBRARIES:
+ -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
+ @list='$(installed_test_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
@@ -383,8 +826,111 @@ clean-noinstLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
+
libcharset.la: $(libcharset_la_OBJECTS) $(libcharset_la_DEPENDENCIES) $(EXTRA_libcharset_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcharset_la_OBJECTS) $(libcharset_la_LIBADD) $(LIBS)
+ $(AM_V_CCLD)$(libcharset_la_LINK) $(libcharset_la_OBJECTS) $(libcharset_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files
+
+clean-installed_testPROGRAMS:
+ @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -392,21 +938,21 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcharset_la-localcharset.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -415,32 +961,73 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+libcharset_la-localcharset.lo: localcharset.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcharset_la_CFLAGS) $(CFLAGS) -MT libcharset_la-localcharset.lo -MD -MP -MF $(DEPDIR)/libcharset_la-localcharset.Tpo -c -o libcharset_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcharset_la-localcharset.Tpo $(DEPDIR)/libcharset_la-localcharset.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='localcharset.c' object='libcharset_la-localcharset.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcharset_la_CFLAGS) $(CFLAGS) -c -o libcharset_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c
+
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
+install-installed_test_metaDATA: $(installed_test_meta_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
+ done
+
+uninstall-installed_test_metaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
+install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_installed_testDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -452,15 +1039,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -469,9 +1052,10 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
-cscopelist: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
@@ -487,6 +1071,162 @@ cscopelist: $(HEADERS) $(SOURCES) $(LISP)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -518,11 +1258,19 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(LTLIBRARIES) all-local
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
+ $(check_SCRIPTS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+ all-local
installdirs:
-install: install-am
+ for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -542,6 +1290,9 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -549,13 +1300,18 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
mostlyclean-am
distclean: distclean-am
@@ -576,7 +1332,10 @@ info: info-am
info-am:
-install-data-am:
+install-data-am: install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA \
+ install-nobase_installed_testDATA
install-dvi: install-dvi-am
@@ -622,23 +1381,40 @@ ps: ps-am
ps-am:
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am all-local check check-am check-local \
- clean clean-generic clean-libtool clean-noinstLTLIBRARIES \
- cscopelist ctags distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
+uninstall-am: uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \
+ check-am check-local clean clean-checkLTLIBRARIES \
+ clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA install-man \
+ install-nobase_installed_testDATA install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am
+ recheck tags tags-am uninstall uninstall-am \
+ uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.PRECIOUS: Makefile
### testing rules
@@ -652,7 +1428,7 @@ test: test-nonrecursive
# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
-@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:
# test-report: run tests in subdirs and generate report
@@ -666,9 +1442,9 @@ test-report perf-report full-report: ${TEST_PROGS}
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}
@ ignore_logdir=true ; \
@@ -726,6 +1502,12 @@ lcov-clean:
# run tests in cwd as part of make check
check-local: test-nonrecursive
+@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
+@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@)
+
charset.alias: config.charset
$(AM_V_GEN) $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
@mv t-$@ $@
diff --git a/glib/glib/libcharset/config.charset b/glib/glib/libcharset/config.charset
index e8c258b..cb1d8f0 100755
--- a/glib/glib/libcharset/config.charset
+++ b/glib/glib/libcharset/config.charset
@@ -467,6 +467,38 @@ case "$os" in
# minimize the use of decomposed Unicode. Unfortunately, through the
# Darwin file system, decomposed UTF-8 strings are leaked into user
# space nevertheless.
+ #
+ # Even with those limitations, nl_langinfo does work often
+ # enough to be useful. Since setenv works only with locales
+ # provided in /usr/share/locale, the following aliases are the
+ # codesets used there.
+ echo "ARMSCII-8 ARMSCII-8"
+ echo "Big5HKSCS BIG5-HKSCS"
+ echo "Big5 BIG5"
+ echo "CP866 CP866"
+ echo "CP949 CP949"
+ echo "CP1131 CP1131"
+ echo "CP1251 CP1251"
+ echo "eucCN EUC-CN"
+ echo "eucKR EUC-KR"
+ echo "eucJP EUC-JP"
+ echo "eucjp EUC-JP"
+ echo "GB18030 GB18030"
+ echo "GB2312 GB2312"
+ echo "GBK GBK"
+# echo "ISCII-DEV ISCII_DEV" Not supported by iconv
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "KOI8-R KOI8-R"
+ echo "KOI8-U KOI8-U"
+ echo "PT154 CP154"
+ echo "SJIS SHIFT_JIS"
echo "* UTF-8"
;;
beos*)
diff --git a/glib/glib/valgrind.h b/glib/glib/valgrind.h
new file mode 100644
index 0000000..cc2cf3d
--- /dev/null
+++ b/glib/glib/valgrind.h
@@ -0,0 +1,4840 @@
+/* -*- c -*-
+ ----------------------------------------------------------------
+
+ Notice that the following BSD-style license applies to this one
+ file (valgrind.h) only. The rest of Valgrind is licensed under the
+ terms of the GNU General Public License, version 2, unless
+ otherwise indicated. See the COPYING file in the source
+ distribution for details.
+
+ ----------------------------------------------------------------
+
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+
+ Copyright (C) 2000-2012 Julian Seward. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+ 3. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+ 4. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ ----------------------------------------------------------------
+
+ Notice that the above BSD-style license applies to this one file
+ (valgrind.h) only. The entire rest of Valgrind is licensed under
+ the terms of the GNU General Public License, version 2. See the
+ COPYING file in the source distribution for details.
+
+ ----------------------------------------------------------------
+*/
+
+
+/* This file is for inclusion into client (your!) code.
+
+ You can use these macros to manipulate and query Valgrind's
+ execution inside your own programs.
+
+ The resulting executables will still run without Valgrind, just a
+ little bit more slowly than they otherwise would, but otherwise
+ unchanged. When not running on valgrind, each client request
+ consumes very few (eg. 7) instructions, so the resulting performance
+ loss is negligible unless you plan to execute client requests
+ millions of times per second. Nevertheless, if that is still a
+ problem, you can compile with the NVALGRIND symbol defined (gcc
+ -DNVALGRIND) so that client requests are not even compiled in. */
+
+#ifndef __VALGRIND_H
+#define __VALGRIND_H
+
+
+/* ------------------------------------------------------------------ */
+/* VERSION NUMBER OF VALGRIND */
+/* ------------------------------------------------------------------ */
+
+/* Specify Valgrind's version number, so that user code can
+ conditionally compile based on our version number. Note that these
+ were introduced at version 3.6 and so do not exist in version 3.5
+ or earlier. The recommended way to use them to check for "version
+ X.Y or later" is (eg)
+
+#if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__) \
+ && (__VALGRIND_MAJOR__ > 3 \
+ || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6))
+*/
+#define __VALGRIND_MAJOR__ 3
+#define __VALGRIND_MINOR__ 8
+
+
+#include <stdarg.h>
+
+/* Nb: this file might be included in a file compiled with -ansi. So
+ we can't use C++ style "//" comments nor the "asm" keyword (instead
+ use "__asm__"). */
+
+/* Derive some tags indicating what the target platform is. Note
+ that in this file we're using the compiler's CPP symbols for
+ identifying architectures, which are different to the ones we use
+ within the rest of Valgrind. Note, __powerpc__ is active for both
+ 32 and 64-bit PPC, whereas __powerpc64__ is only active for the
+ latter (on Linux, that is).
+
+ Misc note: how to find out what's predefined in gcc by default:
+ gcc -Wp,-dM somefile.c
+*/
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
+#undef PLAT_x86_win32
+#undef PLAT_x86_linux
+#undef PLAT_amd64_linux
+#undef PLAT_ppc32_linux
+#undef PLAT_ppc64_linux
+#undef PLAT_arm_linux
+#undef PLAT_s390x_linux
+#undef PLAT_mips32_linux
+
+
+#if defined(__APPLE__) && defined(__i386__)
+# define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+# define PLAT_amd64_darwin 1
+#elif defined(__MINGW32__) || defined(__CYGWIN32__) \
+ || (defined(_WIN32) && defined(_M_IX86))
+# define PLAT_x86_win32 1
+#elif defined(__linux__) && defined(__i386__)
+# define PLAT_x86_linux 1
+#elif defined(__linux__) && defined(__x86_64__)
+# define PLAT_amd64_linux 1
+#elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
+# define PLAT_ppc32_linux 1
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
+# define PLAT_ppc64_linux 1
+#elif defined(__linux__) && defined(__arm__)
+# define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__s390__) && defined(__s390x__)
+# define PLAT_s390x_linux 1
+#elif defined(__linux__) && defined(__mips__)
+# define PLAT_mips32_linux 1
+#else
+/* If we're not compiling for our target platform, don't generate
+ any inline asms. */
+# if !defined(NVALGRIND)
+# define NVALGRIND 1
+# endif
+#endif
+
+
+/* ------------------------------------------------------------------ */
+/* ARCHITECTURE SPECIFICS for SPECIAL INSTRUCTIONS. There is nothing */
+/* in here of use to end-users -- skip to the next section. */
+/* ------------------------------------------------------------------ */
+
+/*
+ * VALGRIND_DO_CLIENT_REQUEST(): a statement that invokes a Valgrind client
+ * request. Accepts both pointers and integers as arguments.
+ *
+ * VALGRIND_DO_CLIENT_REQUEST_STMT(): a statement that invokes a Valgrind
+ * client request that does not return a value.
+
+ * VALGRIND_DO_CLIENT_REQUEST_EXPR(): a C expression that invokes a Valgrind
+ * client request and whose value equals the client request result. Accepts
+ * both pointers and integers as arguments. Note that such calls are not
+ * necessarily pure functions -- they may have side effects.
+ */
+
+#define VALGRIND_DO_CLIENT_REQUEST(_zzq_rlval, _zzq_default, \
+ _zzq_request, _zzq_arg1, _zzq_arg2, \
+ _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ do { (_zzq_rlval) = VALGRIND_DO_CLIENT_REQUEST_EXPR((_zzq_default), \
+ (_zzq_request), (_zzq_arg1), (_zzq_arg2), \
+ (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
+
+#define VALGRIND_DO_CLIENT_REQUEST_STMT(_zzq_request, _zzq_arg1, \
+ _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ (_zzq_request), (_zzq_arg1), (_zzq_arg2), \
+ (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
+
+#if defined(NVALGRIND)
+
+/* Define NVALGRIND to completely remove the Valgrind magic sequence
+ from the compiled code (analogous to NDEBUG's effects on
+ assert()) */
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ (_zzq_default)
+
+#else /* ! NVALGRIND */
+
+/* The following defines the magic code sequences which the JITter
+ spots and handles magically. Don't look too closely at them as
+ they will rot your brain.
+
+ The assembly code sequences for all architectures is in this one
+ file. This is because this file must be stand-alone, and we don't
+ want to have multiple files.
+
+ For VALGRIND_DO_CLIENT_REQUEST, we must ensure that the default
+ value gets put in the return slot, so that everything works when
+ this is executed not under Valgrind. Args are passed in a memory
+ block, and so there's no intrinsic limit to the number that could
+ be passed, but it's currently five.
+
+ The macro args are:
+ _zzq_rlval result lvalue
+ _zzq_default default value (result returned when running on real CPU)
+ _zzq_request request code
+ _zzq_arg1..5 request params
+
+ The other two macros are used to support function wrapping, and are
+ a lot simpler. VALGRIND_GET_NR_CONTEXT returns the value of the
+ guest's NRADDR pseudo-register and whatever other information is
+ needed to safely run the call original from the wrapper: on
+ ppc64-linux, the R2 value at the divert point is also needed. This
+ information is abstracted into a user-visible type, OrigFn.
+
+ VALGRIND_CALL_NOREDIR_* behaves the same as the following on the
+ guest, but guarantees that the branch instruction will not be
+ redirected: x86: call *%eax, amd64: call *%rax, ppc32/ppc64:
+ branch-and-link-to-r11. VALGRIND_CALL_NOREDIR is just text, not a
+ complete inline asm, since it needs to be combined with more magic
+ inline asm stuff to be useful.
+*/
+
+/* ------------------------- x86-{linux,darwin} ---------------- */
+
+#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin) \
+ || (defined(PLAT_x86_win32) && defined(__GNUC__))
+
+typedef
+ struct {
+ unsigned int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "roll $3, %%edi ; roll $13, %%edi\n\t" \
+ "roll $29, %%edi ; roll $19, %%edi\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ __extension__ \
+ ({volatile unsigned int _zzq_args[6]; \
+ volatile unsigned int _zzq_result; \
+ _zzq_args[0] = (unsigned int)(_zzq_request); \
+ _zzq_args[1] = (unsigned int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned int)(_zzq_arg5); \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %EDX = client_request ( %EAX ) */ \
+ "xchgl %%ebx,%%ebx" \
+ : "=d" (_zzq_result) \
+ : "a" (&_zzq_args[0]), "0" (_zzq_default) \
+ : "cc", "memory" \
+ ); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ volatile unsigned int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %EAX = guest_NRADDR */ \
+ "xchgl %%ecx,%%ecx" \
+ : "=a" (__addr) \
+ : \
+ : "cc", "memory" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_CALL_NOREDIR_EAX \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* call-noredir *%EAX */ \
+ "xchgl %%edx,%%edx\n\t"
+#endif /* PLAT_x86_linux || PLAT_x86_darwin || (PLAT_x86_win32 && __GNUC__) */
+
+/* ------------------------- x86-Win32 ------------------------- */
+
+#if defined(PLAT_x86_win32) && !defined(__GNUC__)
+
+typedef
+ struct {
+ unsigned int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+#if defined(_MSC_VER)
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ __asm rol edi, 3 __asm rol edi, 13 \
+ __asm rol edi, 29 __asm rol edi, 19
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ valgrind_do_client_request_expr((uintptr_t)(_zzq_default), \
+ (uintptr_t)(_zzq_request), (uintptr_t)(_zzq_arg1), \
+ (uintptr_t)(_zzq_arg2), (uintptr_t)(_zzq_arg3), \
+ (uintptr_t)(_zzq_arg4), (uintptr_t)(_zzq_arg5))
+
+static __inline uintptr_t
+valgrind_do_client_request_expr(uintptr_t _zzq_default, uintptr_t _zzq_request,
+ uintptr_t _zzq_arg1, uintptr_t _zzq_arg2,
+ uintptr_t _zzq_arg3, uintptr_t _zzq_arg4,
+ uintptr_t _zzq_arg5)
+{
+ volatile uintptr_t _zzq_args[6];
+ volatile unsigned int _zzq_result;
+ _zzq_args[0] = (uintptr_t)(_zzq_request);
+ _zzq_args[1] = (uintptr_t)(_zzq_arg1);
+ _zzq_args[2] = (uintptr_t)(_zzq_arg2);
+ _zzq_args[3] = (uintptr_t)(_zzq_arg3);
+ _zzq_args[4] = (uintptr_t)(_zzq_arg4);
+ _zzq_args[5] = (uintptr_t)(_zzq_arg5);
+ __asm { __asm lea eax, _zzq_args __asm mov edx, _zzq_default
+ __SPECIAL_INSTRUCTION_PREAMBLE
+ /* %EDX = client_request ( %EAX ) */
+ __asm xchg ebx,ebx
+ __asm mov _zzq_result, edx
+ }
+ return _zzq_result;
+}
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ volatile unsigned int __addr; \
+ __asm { __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %EAX = guest_NRADDR */ \
+ __asm xchg ecx,ecx \
+ __asm mov __addr, eax \
+ } \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_CALL_NOREDIR_EAX ERROR
+
+#else
+#error Unsupported compiler.
+#endif
+
+#endif /* PLAT_x86_win32 */
+
+/* ------------------------ amd64-{linux,darwin} --------------- */
+
+#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin)
+
+typedef
+ struct {
+ unsigned long long int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "rolq $3, %%rdi ; rolq $13, %%rdi\n\t" \
+ "rolq $61, %%rdi ; rolq $51, %%rdi\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ __extension__ \
+ ({ volatile unsigned long long int _zzq_args[6]; \
+ volatile unsigned long long int _zzq_result; \
+ _zzq_args[0] = (unsigned long long int)(_zzq_request); \
+ _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %RDX = client_request ( %RAX ) */ \
+ "xchgq %%rbx,%%rbx" \
+ : "=d" (_zzq_result) \
+ : "a" (&_zzq_args[0]), "0" (_zzq_default) \
+ : "cc", "memory" \
+ ); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ volatile unsigned long long int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %RAX = guest_NRADDR */ \
+ "xchgq %%rcx,%%rcx" \
+ : "=a" (__addr) \
+ : \
+ : "cc", "memory" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_CALL_NOREDIR_RAX \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* call-noredir *%RAX */ \
+ "xchgq %%rdx,%%rdx\n\t"
+#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */
+
+/* ------------------------ ppc32-linux ------------------------ */
+
+#if defined(PLAT_ppc32_linux)
+
+typedef
+ struct {
+ unsigned int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "rlwinm 0,0,3,0,0 ; rlwinm 0,0,13,0,0\n\t" \
+ "rlwinm 0,0,29,0,0 ; rlwinm 0,0,19,0,0\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ \
+ __extension__ \
+ ({ unsigned int _zzq_args[6]; \
+ unsigned int _zzq_result; \
+ unsigned int* _zzq_ptr; \
+ _zzq_args[0] = (unsigned int)(_zzq_request); \
+ _zzq_args[1] = (unsigned int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned int)(_zzq_arg5); \
+ _zzq_ptr = _zzq_args; \
+ __asm__ volatile("mr 3,%1\n\t" /*default*/ \
+ "mr 4,%2\n\t" /*ptr*/ \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %R3 = client_request ( %R4 ) */ \
+ "or 1,1,1\n\t" \
+ "mr %0,3" /*result*/ \
+ : "=b" (_zzq_result) \
+ : "b" (_zzq_default), "b" (_zzq_ptr) \
+ : "cc", "memory", "r3", "r4"); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ unsigned int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %R3 = guest_NRADDR */ \
+ "or 2,2,2\n\t" \
+ "mr %0,3" \
+ : "=b" (__addr) \
+ : \
+ : "cc", "memory", "r3" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* branch-and-link-to-noredir *%R11 */ \
+ "or 3,3,3\n\t"
+#endif /* PLAT_ppc32_linux */
+
+/* ------------------------ ppc64-linux ------------------------ */
+
+#if defined(PLAT_ppc64_linux)
+
+typedef
+ struct {
+ unsigned long long int nraddr; /* where's the code? */
+ unsigned long long int r2; /* what tocptr do we need? */
+ }
+ OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "rotldi 0,0,3 ; rotldi 0,0,13\n\t" \
+ "rotldi 0,0,61 ; rotldi 0,0,51\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ \
+ __extension__ \
+ ({ unsigned long long int _zzq_args[6]; \
+ unsigned long long int _zzq_result; \
+ unsigned long long int* _zzq_ptr; \
+ _zzq_args[0] = (unsigned long long int)(_zzq_request); \
+ _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \
+ _zzq_ptr = _zzq_args; \
+ __asm__ volatile("mr 3,%1\n\t" /*default*/ \
+ "mr 4,%2\n\t" /*ptr*/ \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %R3 = client_request ( %R4 ) */ \
+ "or 1,1,1\n\t" \
+ "mr %0,3" /*result*/ \
+ : "=b" (_zzq_result) \
+ : "b" (_zzq_default), "b" (_zzq_ptr) \
+ : "cc", "memory", "r3", "r4"); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ unsigned long long int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %R3 = guest_NRADDR */ \
+ "or 2,2,2\n\t" \
+ "mr %0,3" \
+ : "=b" (__addr) \
+ : \
+ : "cc", "memory", "r3" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %R3 = guest_NRADDR_GPR2 */ \
+ "or 4,4,4\n\t" \
+ "mr %0,3" \
+ : "=b" (__addr) \
+ : \
+ : "cc", "memory", "r3" \
+ ); \
+ _zzq_orig->r2 = __addr; \
+ }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* branch-and-link-to-noredir *%R11 */ \
+ "or 3,3,3\n\t"
+
+#endif /* PLAT_ppc64_linux */
+
+/* ------------------------- arm-linux ------------------------- */
+
+#if defined(PLAT_arm_linux)
+
+typedef
+ struct {
+ unsigned int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "mov r12, r12, ror #3 ; mov r12, r12, ror #13 \n\t" \
+ "mov r12, r12, ror #29 ; mov r12, r12, ror #19 \n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ \
+ __extension__ \
+ ({volatile unsigned int _zzq_args[6]; \
+ volatile unsigned int _zzq_result; \
+ _zzq_args[0] = (unsigned int)(_zzq_request); \
+ _zzq_args[1] = (unsigned int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned int)(_zzq_arg5); \
+ __asm__ volatile("mov r3, %1\n\t" /*default*/ \
+ "mov r4, %2\n\t" /*ptr*/ \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* R3 = client_request ( R4 ) */ \
+ "orr r10, r10, r10\n\t" \
+ "mov %0, r3" /*result*/ \
+ : "=r" (_zzq_result) \
+ : "r" (_zzq_default), "r" (&_zzq_args[0]) \
+ : "cc","memory", "r3", "r4"); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ unsigned int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* R3 = guest_NRADDR */ \
+ "orr r11, r11, r11\n\t" \
+ "mov %0, r3" \
+ : "=r" (__addr) \
+ : \
+ : "cc", "memory", "r3" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* branch-and-link-to-noredir *%R4 */ \
+ "orr r12, r12, r12\n\t"
+
+#endif /* PLAT_arm_linux */
+
+/* ------------------------ s390x-linux ------------------------ */
+
+#if defined(PLAT_s390x_linux)
+
+typedef
+ struct {
+ unsigned long long int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+/* __SPECIAL_INSTRUCTION_PREAMBLE will be used to identify Valgrind specific
+ * code. This detection is implemented in platform specific toIR.c
+ * (e.g. VEX/priv/guest_s390_decoder.c).
+ */
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "lr 15,15\n\t" \
+ "lr 1,1\n\t" \
+ "lr 2,2\n\t" \
+ "lr 3,3\n\t"
+
+#define __CLIENT_REQUEST_CODE "lr 2,2\n\t"
+#define __GET_NR_CONTEXT_CODE "lr 3,3\n\t"
+#define __CALL_NO_REDIR_CODE "lr 4,4\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ __extension__ \
+ ({volatile unsigned long long int _zzq_args[6]; \
+ volatile unsigned long long int _zzq_result; \
+ _zzq_args[0] = (unsigned long long int)(_zzq_request); \
+ _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \
+ __asm__ volatile(/* r2 = args */ \
+ "lgr 2,%1\n\t" \
+ /* r3 = default */ \
+ "lgr 3,%2\n\t" \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ __CLIENT_REQUEST_CODE \
+ /* results = r3 */ \
+ "lgr %0, 3\n\t" \
+ : "=d" (_zzq_result) \
+ : "a" (&_zzq_args[0]), "0" (_zzq_default) \
+ : "cc", "2", "3", "memory" \
+ ); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ volatile unsigned long long int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ __GET_NR_CONTEXT_CODE \
+ "lgr %0, 3\n\t" \
+ : "=a" (__addr) \
+ : \
+ : "cc", "3", "memory" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_CALL_NOREDIR_R1 \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ __CALL_NO_REDIR_CODE
+
+#endif /* PLAT_s390x_linux */
+
+/* ------------------------- mips32-linux ---------------- */
+
+#if defined(PLAT_mips32_linux)
+
+typedef
+ struct {
+ unsigned int nraddr; /* where's the code? */
+ }
+ OrigFn;
+
+/* .word 0x342
+ * .word 0x742
+ * .word 0xC2
+ * .word 0x4C2*/
+#define __SPECIAL_INSTRUCTION_PREAMBLE \
+ "srl $0, $0, 13\n\t" \
+ "srl $0, $0, 29\n\t" \
+ "srl $0, $0, 3\n\t" \
+ "srl $0, $0, 19\n\t"
+
+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ _zzq_default, _zzq_request, \
+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \
+ __extension__ \
+ ({ volatile unsigned int _zzq_args[6]; \
+ volatile unsigned int _zzq_result; \
+ _zzq_args[0] = (unsigned int)(_zzq_request); \
+ _zzq_args[1] = (unsigned int)(_zzq_arg1); \
+ _zzq_args[2] = (unsigned int)(_zzq_arg2); \
+ _zzq_args[3] = (unsigned int)(_zzq_arg3); \
+ _zzq_args[4] = (unsigned int)(_zzq_arg4); \
+ _zzq_args[5] = (unsigned int)(_zzq_arg5); \
+ __asm__ volatile("move $11, %1\n\t" /*default*/ \
+ "move $12, %2\n\t" /*ptr*/ \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* T3 = client_request ( T4 ) */ \
+ "or $13, $13, $13\n\t" \
+ "move %0, $11\n\t" /*result*/ \
+ : "=r" (_zzq_result) \
+ : "r" (_zzq_default), "r" (&_zzq_args[0]) \
+ : "cc","memory", "t3", "t4"); \
+ _zzq_result; \
+ })
+
+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \
+ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \
+ volatile unsigned int __addr; \
+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \
+ /* %t9 = guest_NRADDR */ \
+ "or $14, $14, $14\n\t" \
+ "move %0, $11" /*result*/ \
+ : "=r" (__addr) \
+ : \
+ : "cc", "memory" , "t3" \
+ ); \
+ _zzq_orig->nraddr = __addr; \
+ }
+
+#define VALGRIND_CALL_NOREDIR_T9 \
+ __SPECIAL_INSTRUCTION_PREAMBLE \
+ /* call-noredir *%t9 */ \
+ "or $15, $15, $15\n\t"
+#endif /* PLAT_mips32_linux */
+
+/* Insert assembly code for other platforms here... */
+
+#endif /* NVALGRIND */
+
+
+/* ------------------------------------------------------------------ */
+/* PLATFORM SPECIFICS for FUNCTION WRAPPING. This is all very */
+/* ugly. It's the least-worst tradeoff I can think of. */
+/* ------------------------------------------------------------------ */
+
+/* This section defines magic (a.k.a appalling-hack) macros for doing
+ guaranteed-no-redirection macros, so as to get from function
+ wrappers to the functions they are wrapping. The whole point is to
+ construct standard call sequences, but to do the call itself with a
+ special no-redirect call pseudo-instruction that the JIT
+ understands and handles specially. This section is long and
+ repetitious, and I can't see a way to make it shorter.
+
+ The naming scheme is as follows:
+
+ CALL_FN_{W,v}_{v,W,WW,WWW,WWWW,5W,6W,7W,etc}
+
+ 'W' stands for "word" and 'v' for "void". Hence there are
+ different macros for calling arity 0, 1, 2, 3, 4, etc, functions,
+ and for each, the possibility of returning a word-typed result, or
+ no result.
+*/
+
+/* Use these to write the name of your wrapper. NOTE: duplicates
+ VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. NOTE also: inserts
+ the default behaviour equivalance class tag "0000" into the name.
+ See pub_tool_redir.h for details -- normally you don't need to
+ think about this, though. */
+
+/* Use an extra level of macroisation so as to ensure the soname/fnname
+ args are fully macro-expanded before pasting them together. */
+#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
+
+#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) \
+ VG_CONCAT4(_vgw00000ZU_,soname,_,fnname)
+
+#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) \
+ VG_CONCAT4(_vgw00000ZZ_,soname,_,fnname)
+
+/* Use this macro from within a wrapper function to collect the
+ context (address and possibly other info) of the original function.
+ Once you have that you can then use it in one of the CALL_FN_
+ macros. The type of the argument _lval is OrigFn. */
+#define VALGRIND_GET_ORIG_FN(_lval) VALGRIND_GET_NR_CONTEXT(_lval)
+
+/* Also provide end-user facilities for function replacement, rather
+ than wrapping. A replacement function differs from a wrapper in
+ that it has no way to get hold of the original function being
+ called, and hence no way to call onwards to it. In a replacement
+ function, VALGRIND_GET_ORIG_FN always returns zero. */
+
+#define I_REPLACE_SONAME_FNNAME_ZU(soname,fnname) \
+ VG_CONCAT4(_vgr00000ZU_,soname,_,fnname)
+
+#define I_REPLACE_SONAME_FNNAME_ZZ(soname,fnname) \
+ VG_CONCAT4(_vgr00000ZZ_,soname,_,fnname)
+
+/* Derivatives of the main macros below, for calling functions
+ returning void. */
+
+#define CALL_FN_v_v(fnptr) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_v(_junk,fnptr); } while (0)
+
+#define CALL_FN_v_W(fnptr, arg1) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_W(_junk,fnptr,arg1); } while (0)
+
+#define CALL_FN_v_WW(fnptr, arg1,arg2) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_WW(_junk,fnptr,arg1,arg2); } while (0)
+
+#define CALL_FN_v_WWW(fnptr, arg1,arg2,arg3) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_WWW(_junk,fnptr,arg1,arg2,arg3); } while (0)
+
+#define CALL_FN_v_WWWW(fnptr, arg1,arg2,arg3,arg4) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_WWWW(_junk,fnptr,arg1,arg2,arg3,arg4); } while (0)
+
+#define CALL_FN_v_5W(fnptr, arg1,arg2,arg3,arg4,arg5) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_5W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5); } while (0)
+
+#define CALL_FN_v_6W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_6W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6); } while (0)
+
+#define CALL_FN_v_7W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6,arg7) \
+ do { volatile unsigned long _junk; \
+ CALL_FN_W_7W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6,arg7); } while (0)
+
+/* ------------------------- x86-{linux,darwin} ---------------- */
+
+#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin)
+
+/* These regs are trashed by the hidden call. No need to mention eax
+ as gcc can already see that, plus causes gcc to bomb. */
+#define __CALLER_SAVED_REGS /*"eax"*/ "ecx", "edx"
+
+/* Macros to save and align the stack before making a function
+ call and restore it afterwards as gcc may not keep the stack
+ pointer aligned if it doesn't realise calls are being made
+ to other functions. */
+
+#define VALGRIND_ALIGN_STACK \
+ "movl %%esp,%%edi\n\t" \
+ "andl $0xfffffff0,%%esp\n\t"
+#define VALGRIND_RESTORE_STACK \
+ "movl %%edi,%%esp\n\t"
+
+/* These CALL_FN_ macros assume that on x86-linux, sizeof(unsigned
+ long) == 4. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $12, %%esp\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $8, %%esp\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $4, %%esp\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $12, %%esp\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $8, %%esp\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $4, %%esp\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $12, %%esp\n\t" \
+ "pushl 36(%%eax)\n\t" \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $8, %%esp\n\t" \
+ "pushl 40(%%eax)\n\t" \
+ "pushl 36(%%eax)\n\t" \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "subl $4, %%esp\n\t" \
+ "pushl 44(%%eax)\n\t" \
+ "pushl 40(%%eax)\n\t" \
+ "pushl 36(%%eax)\n\t" \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ _argvec[12] = (unsigned long)(arg12); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "pushl 48(%%eax)\n\t" \
+ "pushl 44(%%eax)\n\t" \
+ "pushl 40(%%eax)\n\t" \
+ "pushl 36(%%eax)\n\t" \
+ "pushl 32(%%eax)\n\t" \
+ "pushl 28(%%eax)\n\t" \
+ "pushl 24(%%eax)\n\t" \
+ "pushl 20(%%eax)\n\t" \
+ "pushl 16(%%eax)\n\t" \
+ "pushl 12(%%eax)\n\t" \
+ "pushl 8(%%eax)\n\t" \
+ "pushl 4(%%eax)\n\t" \
+ "movl (%%eax), %%eax\n\t" /* target->%eax */ \
+ VALGRIND_CALL_NOREDIR_EAX \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "edi" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_x86_linux || PLAT_x86_darwin */
+
+/* ------------------------ amd64-{linux,darwin} --------------- */
+
+#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin)
+
+/* ARGREGS: rdi rsi rdx rcx r8 r9 (the rest on stack in R-to-L order) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS /*"rax",*/ "rcx", "rdx", "rsi", \
+ "rdi", "r8", "r9", "r10", "r11"
+
+/* This is all pretty complex. It's so as to make stack unwinding
+ work reliably. See bug 243270. The basic problem is the sub and
+ add of 128 of %rsp in all of the following macros. If gcc believes
+ the CFA is in %rsp, then unwinding may fail, because what's at the
+ CFA is not what gcc "expected" when it constructs the CFIs for the
+ places where the macros are instantiated.
+
+ But we can't just add a CFI annotation to increase the CFA offset
+ by 128, to match the sub of 128 from %rsp, because we don't know
+ whether gcc has chosen %rsp as the CFA at that point, or whether it
+ has chosen some other register (eg, %rbp). In the latter case,
+ adding a CFI annotation to change the CFA offset is simply wrong.
+
+ So the solution is to get hold of the CFA using
+ __builtin_dwarf_cfa(), put it in a known register, and add a
+ CFI annotation to say what the register is. We choose %rbp for
+ this (perhaps perversely), because:
+
+ (1) %rbp is already subject to unwinding. If a new register was
+ chosen then the unwinder would have to unwind it in all stack
+ traces, which is expensive, and
+
+ (2) %rbp is already subject to precise exception updates in the
+ JIT. If a new register was chosen, we'd have to have precise
+ exceptions for it too, which reduces performance of the
+ generated code.
+
+ However .. one extra complication. We can't just whack the result
+ of __builtin_dwarf_cfa() into %rbp and then add %rbp to the
+ list of trashed registers at the end of the inline assembly
+ fragments; gcc won't allow %rbp to appear in that list. Hence
+ instead we need to stash %rbp in %r15 for the duration of the asm,
+ and say that %r15 is trashed instead. gcc seems happy to go with
+ that.
+
+ Oh .. and this all needs to be conditionalised so that it is
+ unchanged from before this commit, when compiled with older gccs
+ that don't support __builtin_dwarf_cfa. Furthermore, since
+ this header file is freestanding, it has to be independent of
+ config.h, and so the following conditionalisation cannot depend on
+ configure time checks.
+
+ Although it's not clear from
+ 'defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)',
+ this expression excludes Darwin.
+ .cfi directives in Darwin assembly appear to be completely
+ different and I haven't investigated how they work.
+
+ For even more entertainment value, note we have to use the
+ completely undocumented __builtin_dwarf_cfa(), which appears to
+ really compute the CFA, whereas __builtin_frame_address(0) claims
+ to but actually doesn't. See
+ https://bugs.kde.org/show_bug.cgi?id=243270#c47
+*/
+#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)
+# define __FRAME_POINTER \
+ ,"r"(__builtin_dwarf_cfa())
+# define VALGRIND_CFI_PROLOGUE \
+ "movq %%rbp, %%r15\n\t" \
+ "movq %2, %%rbp\n\t" \
+ ".cfi_remember_state\n\t" \
+ ".cfi_def_cfa rbp, 0\n\t"
+# define VALGRIND_CFI_EPILOGUE \
+ "movq %%r15, %%rbp\n\t" \
+ ".cfi_restore_state\n\t"
+#else
+# define __FRAME_POINTER
+# define VALGRIND_CFI_PROLOGUE
+# define VALGRIND_CFI_EPILOGUE
+#endif
+
+/* Macros to save and align the stack before making a function
+ call and restore it afterwards as gcc may not keep the stack
+ pointer aligned if it doesn't realise calls are being made
+ to other functions. */
+
+#define VALGRIND_ALIGN_STACK \
+ "movq %%rsp,%%r14\n\t" \
+ "andq $0xfffffffffffffff0,%%rsp\n\t"
+#define VALGRIND_RESTORE_STACK \
+ "movq %%r14,%%rsp\n\t"
+
+/* These CALL_FN_ macros assume that on amd64-linux, sizeof(unsigned
+ long) == 8. */
+
+/* NB 9 Sept 07. There is a nasty kludge here in all these CALL_FN_
+ macros. In order not to trash the stack redzone, we need to drop
+ %rsp by 128 before the hidden call, and restore afterwards. The
+ nastyness is that it is only by luck that the stack still appears
+ to be unwindable during the hidden call - since then the behaviour
+ of any routine using this macro does not match what the CFI data
+ says. Sigh.
+
+ Why is this important? Imagine that a wrapper has a stack
+ allocated local, and passes to the hidden call, a pointer to it.
+ Because gcc does not know about the hidden call, it may allocate
+ that local in the redzone. Unfortunately the hidden call may then
+ trash it before it comes to use it. So we must step clear of the
+ redzone, for the duration of the hidden call, to make it safe.
+
+ Probably the same problem afflicts the other redzone-style ABIs too
+ (ppc64-linux); but for those, the stack is
+ self describing (none of this CFI nonsense) so at least messing
+ with the stack pointer doesn't give a danger of non-unwindable
+ stack. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $136,%%rsp\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $136,%%rsp\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $136,%%rsp\n\t" \
+ "pushq 88(%%rax)\n\t" \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ _argvec[12] = (unsigned long)(arg12); \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ VALGRIND_ALIGN_STACK \
+ "subq $128,%%rsp\n\t" \
+ "pushq 96(%%rax)\n\t" \
+ "pushq 88(%%rax)\n\t" \
+ "pushq 80(%%rax)\n\t" \
+ "pushq 72(%%rax)\n\t" \
+ "pushq 64(%%rax)\n\t" \
+ "pushq 56(%%rax)\n\t" \
+ "movq 48(%%rax), %%r9\n\t" \
+ "movq 40(%%rax), %%r8\n\t" \
+ "movq 32(%%rax), %%rcx\n\t" \
+ "movq 24(%%rax), %%rdx\n\t" \
+ "movq 16(%%rax), %%rsi\n\t" \
+ "movq 8(%%rax), %%rdi\n\t" \
+ "movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ VALGRIND_CALL_NOREDIR_RAX \
+ VALGRIND_RESTORE_STACK \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=a" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */
+
+/* ------------------------ ppc32-linux ------------------------ */
+
+#if defined(PLAT_ppc32_linux)
+
+/* This is useful for finding out about the on-stack stuff:
+
+ extern int f9 ( int,int,int,int,int,int,int,int,int );
+ extern int f10 ( int,int,int,int,int,int,int,int,int,int );
+ extern int f11 ( int,int,int,int,int,int,int,int,int,int,int );
+ extern int f12 ( int,int,int,int,int,int,int,int,int,int,int,int );
+
+ int g9 ( void ) {
+ return f9(11,22,33,44,55,66,77,88,99);
+ }
+ int g10 ( void ) {
+ return f10(11,22,33,44,55,66,77,88,99,110);
+ }
+ int g11 ( void ) {
+ return f11(11,22,33,44,55,66,77,88,99,110,121);
+ }
+ int g12 ( void ) {
+ return f12(11,22,33,44,55,66,77,88,99,110,121,132);
+ }
+*/
+
+/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS \
+ "lr", "ctr", "xer", \
+ "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \
+ "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \
+ "r11", "r12", "r13"
+
+/* Macros to save and align the stack before making a function
+ call and restore it afterwards as gcc may not keep the stack
+ pointer aligned if it doesn't realise calls are being made
+ to other functions. */
+
+#define VALGRIND_ALIGN_STACK \
+ "mr 28,1\n\t" \
+ "rlwinm 1,1,0,0,27\n\t"
+#define VALGRIND_RESTORE_STACK \
+ "mr 1,28\n\t"
+
+/* These CALL_FN_ macros assume that on ppc32-linux,
+ sizeof(unsigned long) == 4. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 10,32(11)\n\t" /* arg8->r10 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "addi 1,1,-16\n\t" \
+ /* arg9 */ \
+ "lwz 3,36(11)\n\t" \
+ "stw 3,8(1)\n\t" \
+ /* args1-8 */ \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 10,32(11)\n\t" /* arg8->r10 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "addi 1,1,-16\n\t" \
+ /* arg10 */ \
+ "lwz 3,40(11)\n\t" \
+ "stw 3,12(1)\n\t" \
+ /* arg9 */ \
+ "lwz 3,36(11)\n\t" \
+ "stw 3,8(1)\n\t" \
+ /* args1-8 */ \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 10,32(11)\n\t" /* arg8->r10 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ _argvec[11] = (unsigned long)arg11; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "addi 1,1,-32\n\t" \
+ /* arg11 */ \
+ "lwz 3,44(11)\n\t" \
+ "stw 3,16(1)\n\t" \
+ /* arg10 */ \
+ "lwz 3,40(11)\n\t" \
+ "stw 3,12(1)\n\t" \
+ /* arg9 */ \
+ "lwz 3,36(11)\n\t" \
+ "stw 3,8(1)\n\t" \
+ /* args1-8 */ \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 10,32(11)\n\t" /* arg8->r10 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ _argvec[11] = (unsigned long)arg11; \
+ _argvec[12] = (unsigned long)arg12; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "addi 1,1,-32\n\t" \
+ /* arg12 */ \
+ "lwz 3,48(11)\n\t" \
+ "stw 3,20(1)\n\t" \
+ /* arg11 */ \
+ "lwz 3,44(11)\n\t" \
+ "stw 3,16(1)\n\t" \
+ /* arg10 */ \
+ "lwz 3,40(11)\n\t" \
+ "stw 3,12(1)\n\t" \
+ /* arg9 */ \
+ "lwz 3,36(11)\n\t" \
+ "stw 3,8(1)\n\t" \
+ /* args1-8 */ \
+ "lwz 3,4(11)\n\t" /* arg1->r3 */ \
+ "lwz 4,8(11)\n\t" \
+ "lwz 5,12(11)\n\t" \
+ "lwz 6,16(11)\n\t" /* arg4->r6 */ \
+ "lwz 7,20(11)\n\t" \
+ "lwz 8,24(11)\n\t" \
+ "lwz 9,28(11)\n\t" \
+ "lwz 10,32(11)\n\t" /* arg8->r10 */ \
+ "lwz 11,0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ VALGRIND_RESTORE_STACK \
+ "mr %0,3" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_ppc32_linux */
+
+/* ------------------------ ppc64-linux ------------------------ */
+
+#if defined(PLAT_ppc64_linux)
+
+/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS \
+ "lr", "ctr", "xer", \
+ "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \
+ "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \
+ "r11", "r12", "r13"
+
+/* Macros to save and align the stack before making a function
+ call and restore it afterwards as gcc may not keep the stack
+ pointer aligned if it doesn't realise calls are being made
+ to other functions. */
+
+#define VALGRIND_ALIGN_STACK \
+ "mr 28,1\n\t" \
+ "rldicr 1,1,0,59\n\t"
+#define VALGRIND_RESTORE_STACK \
+ "mr 1,28\n\t"
+
+/* These CALL_FN_ macros assume that on ppc64-linux, sizeof(unsigned
+ long) == 8. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+0]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+1]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+2]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+3]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+4]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+5]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+6]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+7]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+8]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ _argvec[2+8] = (unsigned long)arg8; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 10, 64(11)\n\t" /* arg8->r10 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+9]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ _argvec[2+8] = (unsigned long)arg8; \
+ _argvec[2+9] = (unsigned long)arg9; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "addi 1,1,-128\n\t" /* expand stack frame */ \
+ /* arg9 */ \
+ "ld 3,72(11)\n\t" \
+ "std 3,112(1)\n\t" \
+ /* args1-8 */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 10, 64(11)\n\t" /* arg8->r10 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+10]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ _argvec[2+8] = (unsigned long)arg8; \
+ _argvec[2+9] = (unsigned long)arg9; \
+ _argvec[2+10] = (unsigned long)arg10; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "addi 1,1,-128\n\t" /* expand stack frame */ \
+ /* arg10 */ \
+ "ld 3,80(11)\n\t" \
+ "std 3,120(1)\n\t" \
+ /* arg9 */ \
+ "ld 3,72(11)\n\t" \
+ "std 3,112(1)\n\t" \
+ /* args1-8 */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 10, 64(11)\n\t" /* arg8->r10 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+11]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ _argvec[2+8] = (unsigned long)arg8; \
+ _argvec[2+9] = (unsigned long)arg9; \
+ _argvec[2+10] = (unsigned long)arg10; \
+ _argvec[2+11] = (unsigned long)arg11; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "addi 1,1,-144\n\t" /* expand stack frame */ \
+ /* arg11 */ \
+ "ld 3,88(11)\n\t" \
+ "std 3,128(1)\n\t" \
+ /* arg10 */ \
+ "ld 3,80(11)\n\t" \
+ "std 3,120(1)\n\t" \
+ /* arg9 */ \
+ "ld 3,72(11)\n\t" \
+ "std 3,112(1)\n\t" \
+ /* args1-8 */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 10, 64(11)\n\t" /* arg8->r10 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10,arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3+12]; \
+ volatile unsigned long _res; \
+ /* _argvec[0] holds current r2 across the call */ \
+ _argvec[1] = (unsigned long)_orig.r2; \
+ _argvec[2] = (unsigned long)_orig.nraddr; \
+ _argvec[2+1] = (unsigned long)arg1; \
+ _argvec[2+2] = (unsigned long)arg2; \
+ _argvec[2+3] = (unsigned long)arg3; \
+ _argvec[2+4] = (unsigned long)arg4; \
+ _argvec[2+5] = (unsigned long)arg5; \
+ _argvec[2+6] = (unsigned long)arg6; \
+ _argvec[2+7] = (unsigned long)arg7; \
+ _argvec[2+8] = (unsigned long)arg8; \
+ _argvec[2+9] = (unsigned long)arg9; \
+ _argvec[2+10] = (unsigned long)arg10; \
+ _argvec[2+11] = (unsigned long)arg11; \
+ _argvec[2+12] = (unsigned long)arg12; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "mr 11,%1\n\t" \
+ "std 2,-16(11)\n\t" /* save tocptr */ \
+ "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \
+ "addi 1,1,-144\n\t" /* expand stack frame */ \
+ /* arg12 */ \
+ "ld 3,96(11)\n\t" \
+ "std 3,136(1)\n\t" \
+ /* arg11 */ \
+ "ld 3,88(11)\n\t" \
+ "std 3,128(1)\n\t" \
+ /* arg10 */ \
+ "ld 3,80(11)\n\t" \
+ "std 3,120(1)\n\t" \
+ /* arg9 */ \
+ "ld 3,72(11)\n\t" \
+ "std 3,112(1)\n\t" \
+ /* args1-8 */ \
+ "ld 3, 8(11)\n\t" /* arg1->r3 */ \
+ "ld 4, 16(11)\n\t" /* arg2->r4 */ \
+ "ld 5, 24(11)\n\t" /* arg3->r5 */ \
+ "ld 6, 32(11)\n\t" /* arg4->r6 */ \
+ "ld 7, 40(11)\n\t" /* arg5->r7 */ \
+ "ld 8, 48(11)\n\t" /* arg6->r8 */ \
+ "ld 9, 56(11)\n\t" /* arg7->r9 */ \
+ "ld 10, 64(11)\n\t" /* arg8->r10 */ \
+ "ld 11, 0(11)\n\t" /* target->r11 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \
+ "mr 11,%1\n\t" \
+ "mr %0,3\n\t" \
+ "ld 2,-16(11)\n\t" /* restore tocptr */ \
+ VALGRIND_RESTORE_STACK \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "r" (&_argvec[2]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r28" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_ppc64_linux */
+
+/* ------------------------- arm-linux ------------------------- */
+
+#if defined(PLAT_arm_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS "r0", "r1", "r2", "r3","r4","r14"
+
+/* Macros to save and align the stack before making a function
+ call and restore it afterwards as gcc may not keep the stack
+ pointer aligned if it doesn't realise calls are being made
+ to other functions. */
+
+/* This is a bit tricky. We store the original stack pointer in r10
+ as it is callee-saves. gcc doesn't allow the use of r11 for some
+ reason. Also, we can't directly "bic" the stack pointer in thumb
+ mode since r13 isn't an allowed register number in that context.
+ So use r4 as a temporary, since that is about to get trashed
+ anyway, just after each use of this macro. Side effect is we need
+ to be very careful about any future changes, since
+ VALGRIND_ALIGN_STACK simply assumes r4 is usable. */
+#define VALGRIND_ALIGN_STACK \
+ "mov r10, sp\n\t" \
+ "mov r4, sp\n\t" \
+ "bic r4, r4, #7\n\t" \
+ "mov sp, r4\n\t"
+#define VALGRIND_RESTORE_STACK \
+ "mov sp, r10\n\t"
+
+/* These CALL_FN_ macros assume that on arm-linux, sizeof(unsigned
+ long) == 4. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "sub sp, sp, #4 \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "push {r0} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "push {r0, r1} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "sub sp, sp, #4 \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "push {r0, r1, r2} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "ldr r3, [%1, #32] \n\t" \
+ "push {r0, r1, r2, r3} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "sub sp, sp, #4 \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "ldr r3, [%1, #32] \n\t" \
+ "ldr r4, [%1, #36] \n\t" \
+ "push {r0, r1, r2, r3, r4} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #40] \n\t" \
+ "push {r0} \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "ldr r3, [%1, #32] \n\t" \
+ "ldr r4, [%1, #36] \n\t" \
+ "push {r0, r1, r2, r3, r4} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "sub sp, sp, #4 \n\t" \
+ "ldr r0, [%1, #40] \n\t" \
+ "ldr r1, [%1, #44] \n\t" \
+ "push {r0, r1} \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "ldr r3, [%1, #32] \n\t" \
+ "ldr r4, [%1, #36] \n\t" \
+ "push {r0, r1, r2, r3, r4} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ _argvec[12] = (unsigned long)(arg12); \
+ __asm__ volatile( \
+ VALGRIND_ALIGN_STACK \
+ "ldr r0, [%1, #40] \n\t" \
+ "ldr r1, [%1, #44] \n\t" \
+ "ldr r2, [%1, #48] \n\t" \
+ "push {r0, r1, r2} \n\t" \
+ "ldr r0, [%1, #20] \n\t" \
+ "ldr r1, [%1, #24] \n\t" \
+ "ldr r2, [%1, #28] \n\t" \
+ "ldr r3, [%1, #32] \n\t" \
+ "ldr r4, [%1, #36] \n\t" \
+ "push {r0, r1, r2, r3, r4} \n\t" \
+ "ldr r0, [%1, #4] \n\t" \
+ "ldr r1, [%1, #8] \n\t" \
+ "ldr r2, [%1, #12] \n\t" \
+ "ldr r3, [%1, #16] \n\t" \
+ "ldr r4, [%1] \n\t" /* target->r4 */ \
+ VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R4 \
+ VALGRIND_RESTORE_STACK \
+ "mov %0, r0" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS, "r10" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_arm_linux */
+
+/* ------------------------- s390x-linux ------------------------- */
+
+#if defined(PLAT_s390x_linux)
+
+/* Similar workaround as amd64 (see above), but we use r11 as frame
+ pointer and save the old r11 in r7. r11 might be used for
+ argvec, therefore we copy argvec in r1 since r1 is clobbered
+ after the call anyway. */
+#if defined(__GNUC__) && defined(__GCC_HAVE_DWARF2_CFI_ASM)
+# define __FRAME_POINTER \
+ ,"d"(__builtin_dwarf_cfa())
+# define VALGRIND_CFI_PROLOGUE \
+ ".cfi_remember_state\n\t" \
+ "lgr 1,%1\n\t" /* copy the argvec pointer in r1 */ \
+ "lgr 7,11\n\t" \
+ "lgr 11,%2\n\t" \
+ ".cfi_def_cfa r11, 0\n\t"
+# define VALGRIND_CFI_EPILOGUE \
+ "lgr 11, 7\n\t" \
+ ".cfi_restore_state\n\t"
+#else
+# define __FRAME_POINTER
+# define VALGRIND_CFI_PROLOGUE \
+ "lgr 1,%1\n\t"
+# define VALGRIND_CFI_EPILOGUE
+#endif
+
+/* Nb: On s390 the stack pointer is properly aligned *at all times*
+ according to the s390 GCC maintainer. (The ABI specification is not
+ precise in this regard.) Therefore, VALGRIND_ALIGN_STACK and
+ VALGRIND_RESTORE_STACK are not defined here. */
+
+/* These regs are trashed by the hidden call. Note that we overwrite
+ r14 in s390_irgen_noredir (VEX/priv/guest_s390_irgen.c) to give the
+ function a proper return address. All others are ABI defined call
+ clobbers. */
+#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \
+ "f0","f1","f2","f3","f4","f5","f6","f7"
+
+/* Nb: Although r11 is modified in the asm snippets below (inside
+ VALGRIND_CFI_PROLOGUE) it is not listed in the clobber section, for
+ two reasons:
+ (1) r11 is restored in VALGRIND_CFI_EPILOGUE, so effectively it is not
+ modified
+ (2) GCC will complain that r11 cannot appear inside a clobber section,
+ when compiled with -O -fno-omit-frame-pointer
+ */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 1, 0(1)\n\t" /* target->r1 */ \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "d" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+/* The call abi has the arguments in r2-r6 and stack */
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1, arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-160\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,160\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-168\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,168\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-176\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,176\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7 ,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-184\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "mvc 176(8,15), 64(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,184\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7 ,arg8, arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-192\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "mvc 176(8,15), 64(1)\n\t" \
+ "mvc 184(8,15), 72(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,192\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7 ,arg8, arg9, arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-200\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "mvc 176(8,15), 64(1)\n\t" \
+ "mvc 184(8,15), 72(1)\n\t" \
+ "mvc 192(8,15), 80(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,200\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7 ,arg8, arg9, arg10, arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ _argvec[11] = (unsigned long)arg11; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-208\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "mvc 176(8,15), 64(1)\n\t" \
+ "mvc 184(8,15), 72(1)\n\t" \
+ "mvc 192(8,15), 80(1)\n\t" \
+ "mvc 200(8,15), 88(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,208\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5, \
+ arg6, arg7 ,arg8, arg9, arg10, arg11, arg12)\
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)arg1; \
+ _argvec[2] = (unsigned long)arg2; \
+ _argvec[3] = (unsigned long)arg3; \
+ _argvec[4] = (unsigned long)arg4; \
+ _argvec[5] = (unsigned long)arg5; \
+ _argvec[6] = (unsigned long)arg6; \
+ _argvec[7] = (unsigned long)arg7; \
+ _argvec[8] = (unsigned long)arg8; \
+ _argvec[9] = (unsigned long)arg9; \
+ _argvec[10] = (unsigned long)arg10; \
+ _argvec[11] = (unsigned long)arg11; \
+ _argvec[12] = (unsigned long)arg12; \
+ __asm__ volatile( \
+ VALGRIND_CFI_PROLOGUE \
+ "aghi 15,-216\n\t" \
+ "lg 2, 8(1)\n\t" \
+ "lg 3,16(1)\n\t" \
+ "lg 4,24(1)\n\t" \
+ "lg 5,32(1)\n\t" \
+ "lg 6,40(1)\n\t" \
+ "mvc 160(8,15), 48(1)\n\t" \
+ "mvc 168(8,15), 56(1)\n\t" \
+ "mvc 176(8,15), 64(1)\n\t" \
+ "mvc 184(8,15), 72(1)\n\t" \
+ "mvc 192(8,15), 80(1)\n\t" \
+ "mvc 200(8,15), 88(1)\n\t" \
+ "mvc 208(8,15), 96(1)\n\t" \
+ "lg 1, 0(1)\n\t" \
+ VALGRIND_CALL_NOREDIR_R1 \
+ "lgr %0, 2\n\t" \
+ "aghi 15,216\n\t" \
+ VALGRIND_CFI_EPILOGUE \
+ : /*out*/ "=d" (_res) \
+ : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+
+#endif /* PLAT_s390x_linux */
+
+/* ------------------------- mips-linux ------------------------- */
+
+#if defined(PLAT_mips32_linux)
+
+/* These regs are trashed by the hidden call. */
+#define __CALLER_SAVED_REGS "$2", "$3", "$4", "$5", "$6", \
+"$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \
+"$25", "$31"
+
+/* These CALL_FN_ macros assume that on mips-linux, sizeof(unsigned
+ long) == 4. */
+
+#define CALL_FN_W_v(lval, orig) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[1]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "subu $29, $29, 16 \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 16\n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $29, $29, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_W(lval, orig, arg1) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[2]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "subu $29, $29, 16 \n\t" \
+ "lw $a0, 4(%1) \n\t" /* arg1*/ \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 16 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $29, $29, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WW(lval, orig, arg1,arg2) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[3]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "subu $29, $29, 16 \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 16 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $29, $29, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[4]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "subu $29, $29, 16 \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 16 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $29, $29, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[5]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "subu $29, $29, 16 \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 16 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $29, $29, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[6]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 24\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $29, $29, 24 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[7]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 32\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "nop\n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 32 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[8]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 32\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 32 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[9]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 40\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 32(%1) \n\t" \
+ "sw $a0, 28($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 40 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[10]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 40\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 32(%1) \n\t" \
+ "sw $a0, 28($sp) \n\t" \
+ "lw $a0, 36(%1) \n\t" \
+ "sw $a0, 32($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 40 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \
+ arg7,arg8,arg9,arg10) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[11]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 48\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 32(%1) \n\t" \
+ "sw $a0, 28($sp) \n\t" \
+ "lw $a0, 36(%1) \n\t" \
+ "sw $a0, 32($sp) \n\t" \
+ "lw $a0, 40(%1) \n\t" \
+ "sw $a0, 36($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 48 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[12]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 48\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 32(%1) \n\t" \
+ "sw $a0, 28($sp) \n\t" \
+ "lw $a0, 36(%1) \n\t" \
+ "sw $a0, 32($sp) \n\t" \
+ "lw $a0, 40(%1) \n\t" \
+ "sw $a0, 36($sp) \n\t" \
+ "lw $a0, 44(%1) \n\t" \
+ "sw $a0, 40($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 48 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5, \
+ arg6,arg7,arg8,arg9,arg10, \
+ arg11,arg12) \
+ do { \
+ volatile OrigFn _orig = (orig); \
+ volatile unsigned long _argvec[13]; \
+ volatile unsigned long _res; \
+ _argvec[0] = (unsigned long)_orig.nraddr; \
+ _argvec[1] = (unsigned long)(arg1); \
+ _argvec[2] = (unsigned long)(arg2); \
+ _argvec[3] = (unsigned long)(arg3); \
+ _argvec[4] = (unsigned long)(arg4); \
+ _argvec[5] = (unsigned long)(arg5); \
+ _argvec[6] = (unsigned long)(arg6); \
+ _argvec[7] = (unsigned long)(arg7); \
+ _argvec[8] = (unsigned long)(arg8); \
+ _argvec[9] = (unsigned long)(arg9); \
+ _argvec[10] = (unsigned long)(arg10); \
+ _argvec[11] = (unsigned long)(arg11); \
+ _argvec[12] = (unsigned long)(arg12); \
+ __asm__ volatile( \
+ "subu $29, $29, 8 \n\t" \
+ "sw $gp, 0($sp) \n\t" \
+ "sw $ra, 4($sp) \n\t" \
+ "lw $a0, 20(%1) \n\t" \
+ "subu $sp, $sp, 56\n\t" \
+ "sw $a0, 16($sp) \n\t" \
+ "lw $a0, 24(%1) \n\t" \
+ "sw $a0, 20($sp) \n\t" \
+ "lw $a0, 28(%1) \n\t" \
+ "sw $a0, 24($sp) \n\t" \
+ "lw $a0, 32(%1) \n\t" \
+ "sw $a0, 28($sp) \n\t" \
+ "lw $a0, 36(%1) \n\t" \
+ "sw $a0, 32($sp) \n\t" \
+ "lw $a0, 40(%1) \n\t" \
+ "sw $a0, 36($sp) \n\t" \
+ "lw $a0, 44(%1) \n\t" \
+ "sw $a0, 40($sp) \n\t" \
+ "lw $a0, 48(%1) \n\t" \
+ "sw $a0, 44($sp) \n\t" \
+ "lw $a0, 4(%1) \n\t" \
+ "lw $a1, 8(%1) \n\t" \
+ "lw $a2, 12(%1) \n\t" \
+ "lw $a3, 16(%1) \n\t" \
+ "lw $t9, 0(%1) \n\t" /* target->t9 */ \
+ VALGRIND_CALL_NOREDIR_T9 \
+ "addu $sp, $sp, 56 \n\t" \
+ "lw $gp, 0($sp) \n\t" \
+ "lw $ra, 4($sp) \n\t" \
+ "addu $sp, $sp, 8 \n\t" \
+ "move %0, $v0\n" \
+ : /*out*/ "=r" (_res) \
+ : /*in*/ "0" (&_argvec[0]) \
+ : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
+ ); \
+ lval = (__typeof__(lval)) _res; \
+ } while (0)
+
+#endif /* PLAT_mips32_linux */
+
+
+/* ------------------------------------------------------------------ */
+/* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */
+/* */
+/* ------------------------------------------------------------------ */
+
+/* Some request codes. There are many more of these, but most are not
+ exposed to end-user view. These are the public ones, all of the
+ form 0x1000 + small_number.
+
+ Core ones are in the range 0x00000000--0x0000ffff. The non-public
+ ones start at 0x2000.
+*/
+
+/* These macros are used by tools -- they must be public, but don't
+ embed them into other programs. */
+#define VG_USERREQ_TOOL_BASE(a,b) \
+ ((unsigned int)(((a)&0xff) << 24 | ((b)&0xff) << 16))
+#define VG_IS_TOOL_USERREQ(a, b, v) \
+ (VG_USERREQ_TOOL_BASE(a,b) == ((v) & 0xffff0000))
+
+/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !!
+ This enum comprises an ABI exported by Valgrind to programs
+ which use client requests. DO NOT CHANGE THE ORDER OF THESE
+ ENTRIES, NOR DELETE ANY -- add new ones at the end. */
+typedef
+ enum { VG_USERREQ__RUNNING_ON_VALGRIND = 0x1001,
+ VG_USERREQ__DISCARD_TRANSLATIONS = 0x1002,
+
+ /* These allow any function to be called from the simulated
+ CPU but run on the real CPU. Nb: the first arg passed to
+ the function is always the ThreadId of the running
+ thread! So CLIENT_CALL0 actually requires a 1 arg
+ function, etc. */
+ VG_USERREQ__CLIENT_CALL0 = 0x1101,
+ VG_USERREQ__CLIENT_CALL1 = 0x1102,
+ VG_USERREQ__CLIENT_CALL2 = 0x1103,
+ VG_USERREQ__CLIENT_CALL3 = 0x1104,
+
+ /* Can be useful in regression testing suites -- eg. can
+ send Valgrind's output to /dev/null and still count
+ errors. */
+ VG_USERREQ__COUNT_ERRORS = 0x1201,
+
+ /* Allows a string (gdb monitor command) to be passed to the tool
+ Used for interaction with vgdb/gdb */
+ VG_USERREQ__GDB_MONITOR_COMMAND = 0x1202,
+
+ /* These are useful and can be interpreted by any tool that
+ tracks malloc() et al, by using vg_replace_malloc.c. */
+ VG_USERREQ__MALLOCLIKE_BLOCK = 0x1301,
+ VG_USERREQ__RESIZEINPLACE_BLOCK = 0x130b,
+ VG_USERREQ__FREELIKE_BLOCK = 0x1302,
+ /* Memory pool support. */
+ VG_USERREQ__CREATE_MEMPOOL = 0x1303,
+ VG_USERREQ__DESTROY_MEMPOOL = 0x1304,
+ VG_USERREQ__MEMPOOL_ALLOC = 0x1305,
+ VG_USERREQ__MEMPOOL_FREE = 0x1306,
+ VG_USERREQ__MEMPOOL_TRIM = 0x1307,
+ VG_USERREQ__MOVE_MEMPOOL = 0x1308,
+ VG_USERREQ__MEMPOOL_CHANGE = 0x1309,
+ VG_USERREQ__MEMPOOL_EXISTS = 0x130a,
+
+ /* Allow printfs to valgrind log. */
+ /* The first two pass the va_list argument by value, which
+ assumes it is the same size as or smaller than a UWord,
+ which generally isn't the case. Hence are deprecated.
+ The second two pass the vargs by reference and so are
+ immune to this problem. */
+ /* both :: char* fmt, va_list vargs (DEPRECATED) */
+ VG_USERREQ__PRINTF = 0x1401,
+ VG_USERREQ__PRINTF_BACKTRACE = 0x1402,
+ /* both :: char* fmt, va_list* vargs */
+ VG_USERREQ__PRINTF_VALIST_BY_REF = 0x1403,
+ VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF = 0x1404,
+
+ /* Stack support. */
+ VG_USERREQ__STACK_REGISTER = 0x1501,
+ VG_USERREQ__STACK_DEREGISTER = 0x1502,
+ VG_USERREQ__STACK_CHANGE = 0x1503,
+
+ /* Wine support */
+ VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601,
+
+ /* Querying of debug info. */
+ VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701,
+
+ /* Disable/enable error reporting level. Takes a single
+ Word arg which is the delta to this thread's error
+ disablement indicator. Hence 1 disables or further
+ disables errors, and -1 moves back towards enablement.
+ Other values are not allowed. */
+ VG_USERREQ__CHANGE_ERR_DISABLEMENT = 0x1801
+ } Vg_ClientRequest;
+
+#if !defined(__GNUC__)
+# define __extension__ /* */
+#endif
+
+
+/* Returns the number of Valgrinds this code is running under. That
+ is, 0 if running natively, 1 if running under Valgrind, 2 if
+ running under Valgrind which is running under another Valgrind,
+ etc. */
+#define RUNNING_ON_VALGRIND \
+ (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* if not */, \
+ VG_USERREQ__RUNNING_ON_VALGRIND, \
+ 0, 0, 0, 0, 0) \
+
+
+/* Discard translation of code in the range [_qzz_addr .. _qzz_addr +
+ _qzz_len - 1]. Useful if you are debugging a JITter or some such,
+ since it provides a way to make sure valgrind will retranslate the
+ invalidated area. Returns no value. */
+#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DISCARD_TRANSLATIONS, \
+ _qzz_addr, _qzz_len, 0, 0, 0)
+
+
+/* These requests are for getting Valgrind itself to print something.
+ Possibly with a backtrace. This is a really ugly hack. The return value
+ is the number of characters printed, excluding the "**<pid>** " part at the
+ start and the backtrace (if present). */
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER) && !defined(_MSC_VER)
+/* Modern GCC will optimize the static routine out if unused,
+ and unused attribute will shut down warnings about it. */
+static int VALGRIND_PRINTF(const char *format, ...)
+ __attribute__((format(__printf__, 1, 2), __unused__));
+#endif
+static int
+#if defined(_MSC_VER)
+__inline
+#endif
+VALGRIND_PRINTF(const char *format, ...)
+{
+#if defined(NVALGRIND)
+ return 0;
+#else /* NVALGRIND */
+#if defined(_MSC_VER)
+ uintptr_t _qzz_res;
+#else
+ unsigned long _qzz_res;
+#endif
+ va_list vargs;
+ va_start(vargs, format);
+#if defined(_MSC_VER)
+ _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+ VG_USERREQ__PRINTF_VALIST_BY_REF,
+ (uintptr_t)format,
+ (uintptr_t)&vargs,
+ 0, 0, 0);
+#else
+ _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+ VG_USERREQ__PRINTF_VALIST_BY_REF,
+ (unsigned long)format,
+ (unsigned long)&vargs,
+ 0, 0, 0);
+#endif
+ va_end(vargs);
+ return (int)_qzz_res;
+#endif /* NVALGRIND */
+}
+
+#if defined(__GNUC__) || defined(__INTEL_COMPILER) && !defined(_MSC_VER)
+static int VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
+ __attribute__((format(__printf__, 1, 2), __unused__));
+#endif
+static int
+#if defined(_MSC_VER)
+__inline
+#endif
+VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
+{
+#if defined(NVALGRIND)
+ return 0;
+#else /* NVALGRIND */
+#if defined(_MSC_VER)
+ uintptr_t _qzz_res;
+#else
+ unsigned long _qzz_res;
+#endif
+ va_list vargs;
+ va_start(vargs, format);
+#if defined(_MSC_VER)
+ _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+ VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF,
+ (uintptr_t)format,
+ (uintptr_t)&vargs,
+ 0, 0, 0);
+#else
+ _qzz_res = VALGRIND_DO_CLIENT_REQUEST_EXPR(0,
+ VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF,
+ (unsigned long)format,
+ (unsigned long)&vargs,
+ 0, 0, 0);
+#endif
+ va_end(vargs);
+ return (int)_qzz_res;
+#endif /* NVALGRIND */
+}
+
+
+/* These requests allow control to move from the simulated CPU to the
+ real CPU, calling an arbitary function.
+
+ Note that the current ThreadId is inserted as the first argument.
+ So this call:
+
+ VALGRIND_NON_SIMD_CALL2(f, arg1, arg2)
+
+ requires f to have this signature:
+
+ Word f(Word tid, Word arg1, Word arg2)
+
+ where "Word" is a word-sized type.
+
+ Note that these client requests are not entirely reliable. For example,
+ if you call a function with them that subsequently calls printf(),
+ there's a high chance Valgrind will crash. Generally, your prospects of
+ these working are made higher if the called function does not refer to
+ any global variables, and does not refer to any libc or other functions
+ (printf et al). Any kind of entanglement with libc or dynamic linking is
+ likely to have a bad outcome, for tricky reasons which we've grappled
+ with a lot in the past.
+*/
+#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \
+ VG_USERREQ__CLIENT_CALL0, \
+ _qyy_fn, \
+ 0, 0, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \
+ VG_USERREQ__CLIENT_CALL1, \
+ _qyy_fn, \
+ _qyy_arg1, 0, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \
+ VG_USERREQ__CLIENT_CALL2, \
+ _qyy_fn, \
+ _qyy_arg1, _qyy_arg2, 0, 0)
+
+#define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3) \
+ VALGRIND_DO_CLIENT_REQUEST_EXPR(0 /* default return */, \
+ VG_USERREQ__CLIENT_CALL3, \
+ _qyy_fn, \
+ _qyy_arg1, _qyy_arg2, \
+ _qyy_arg3, 0)
+
+
+/* Counts the number of errors that have been recorded by a tool. Nb:
+ the tool must record the errors with VG_(maybe_record_error)() or
+ VG_(unique_error)() for them to be counted. */
+#define VALGRIND_COUNT_ERRORS \
+ (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR( \
+ 0 /* default return */, \
+ VG_USERREQ__COUNT_ERRORS, \
+ 0, 0, 0, 0, 0)
+
+/* Several Valgrind tools (Memcheck, Massif, Helgrind, DRD) rely on knowing
+ when heap blocks are allocated in order to give accurate results. This
+ happens automatically for the standard allocator functions such as
+ malloc(), calloc(), realloc(), memalign(), new, new[], free(), delete,
+ delete[], etc.
+
+ But if your program uses a custom allocator, this doesn't automatically
+ happen, and Valgrind will not do as well. For example, if you allocate
+ superblocks with mmap() and then allocates chunks of the superblocks, all
+ Valgrind's observations will be at the mmap() level and it won't know that
+ the chunks should be considered separate entities. In Memcheck's case,
+ that means you probably won't get heap block overrun detection (because
+ there won't be redzones marked as unaddressable) and you definitely won't
+ get any leak detection.
+
+ The following client requests allow a custom allocator to be annotated so
+ that it can be handled accurately by Valgrind.
+
+ VALGRIND_MALLOCLIKE_BLOCK marks a region of memory as having been allocated
+ by a malloc()-like function. For Memcheck (an illustrative case), this
+ does two things:
+
+ - It records that the block has been allocated. This means any addresses
+ within the block mentioned in error messages will be
+ identified as belonging to the block. It also means that if the block
+ isn't freed it will be detected by the leak checker.
+
+ - It marks the block as being addressable and undefined (if 'is_zeroed' is
+ not set), or addressable and defined (if 'is_zeroed' is set). This
+ controls how accesses to the block by the program are handled.
+
+ 'addr' is the start of the usable block (ie. after any
+ redzone), 'sizeB' is its size. 'rzB' is the redzone size if the allocator
+ can apply redzones -- these are blocks of padding at the start and end of
+ each block. Adding redzones is recommended as it makes it much more likely
+ Valgrind will spot block overruns. `is_zeroed' indicates if the memory is
+ zeroed (or filled with another predictable value), as is the case for
+ calloc().
+
+ VALGRIND_MALLOCLIKE_BLOCK should be put immediately after the point where a
+ heap block -- that will be used by the client program -- is allocated.
+ It's best to put it at the outermost level of the allocator if possible;
+ for example, if you have a function my_alloc() which calls
+ internal_alloc(), and the client request is put inside internal_alloc(),
+ stack traces relating to the heap block will contain entries for both
+ my_alloc() and internal_alloc(), which is probably not what you want.
+
+ For Memcheck users: if you use VALGRIND_MALLOCLIKE_BLOCK to carve out
+ custom blocks from within a heap block, B, that has been allocated with
+ malloc/calloc/new/etc, then block B will be *ignored* during leak-checking
+ -- the custom blocks will take precedence.
+
+ VALGRIND_FREELIKE_BLOCK is the partner to VALGRIND_MALLOCLIKE_BLOCK. For
+ Memcheck, it does two things:
+
+ - It records that the block has been deallocated. This assumes that the
+ block was annotated as having been allocated via
+ VALGRIND_MALLOCLIKE_BLOCK. Otherwise, an error will be issued.
+
+ - It marks the block as being unaddressable.
+
+ VALGRIND_FREELIKE_BLOCK should be put immediately after the point where a
+ heap block is deallocated.
+
+ VALGRIND_RESIZEINPLACE_BLOCK informs a tool about reallocation. For
+ Memcheck, it does four things:
+
+ - It records that the size of a block has been changed. This assumes that
+ the block was annotated as having been allocated via
+ VALGRIND_MALLOCLIKE_BLOCK. Otherwise, an error will be issued.
+
+ - If the block shrunk, it marks the freed memory as being unaddressable.
+
+ - If the block grew, it marks the new area as undefined and defines a red
+ zone past the end of the new block.
+
+ - The V-bits of the overlap between the old and the new block are preserved.
+
+ VALGRIND_RESIZEINPLACE_BLOCK should be put after allocation of the new block
+ and before deallocation of the old block.
+
+ In many cases, these three client requests will not be enough to get your
+ allocator working well with Memcheck. More specifically, if your allocator
+ writes to freed blocks in any way then a VALGRIND_MAKE_MEM_UNDEFINED call
+ will be necessary to mark the memory as addressable just before the zeroing
+ occurs, otherwise you'll get a lot of invalid write errors. For example,
+ you'll need to do this if your allocator recycles freed blocks, but it
+ zeroes them before handing them back out (via VALGRIND_MALLOCLIKE_BLOCK).
+ Alternatively, if your allocator reuses freed blocks for allocator-internal
+ data structures, VALGRIND_MAKE_MEM_UNDEFINED calls will also be necessary.
+
+ Really, what's happening is a blurring of the lines between the client
+ program and the allocator... after VALGRIND_FREELIKE_BLOCK is called, the
+ memory should be considered unaddressable to the client program, but the
+ allocator knows more than the rest of the client program and so may be able
+ to safely access it. Extra client requests are necessary for Valgrind to
+ understand the distinction between the allocator and the rest of the
+ program.
+
+ Ignored if addr == 0.
+*/
+#define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK, \
+ addr, sizeB, rzB, is_zeroed, 0)
+
+/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details.
+ Ignored if addr == 0.
+*/
+#define VALGRIND_RESIZEINPLACE_BLOCK(addr, oldSizeB, newSizeB, rzB) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__RESIZEINPLACE_BLOCK, \
+ addr, oldSizeB, newSizeB, rzB, 0)
+
+/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details.
+ Ignored if addr == 0.
+*/
+#define VALGRIND_FREELIKE_BLOCK(addr, rzB) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK, \
+ addr, rzB, 0, 0, 0)
+
+/* Create a memory pool. */
+#define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL, \
+ pool, rzB, is_zeroed, 0, 0)
+
+/* Destroy a memory pool. */
+#define VALGRIND_DESTROY_MEMPOOL(pool) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DESTROY_MEMPOOL, \
+ pool, 0, 0, 0, 0)
+
+/* Associate a piece of memory with a memory pool. */
+#define VALGRIND_MEMPOOL_ALLOC(pool, addr, size) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_ALLOC, \
+ pool, addr, size, 0, 0)
+
+/* Disassociate a piece of memory from a memory pool. */
+#define VALGRIND_MEMPOOL_FREE(pool, addr) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_FREE, \
+ pool, addr, 0, 0, 0)
+
+/* Disassociate any pieces outside a particular range. */
+#define VALGRIND_MEMPOOL_TRIM(pool, addr, size) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_TRIM, \
+ pool, addr, size, 0, 0)
+
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MOVE_MEMPOOL, \
+ poolA, poolB, 0, 0, 0)
+
+/* Resize and/or move a piece associated with a memory pool. */
+#define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_CHANGE, \
+ pool, addrA, addrB, size, 0)
+
+/* Return 1 if a mempool exists, else 0. */
+#define VALGRIND_MEMPOOL_EXISTS(pool) \
+ (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ VG_USERREQ__MEMPOOL_EXISTS, \
+ pool, 0, 0, 0, 0)
+
+/* Mark a piece of memory as being a stack. Returns a stack id. */
+#define VALGRIND_STACK_REGISTER(start, end) \
+ (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ VG_USERREQ__STACK_REGISTER, \
+ start, end, 0, 0, 0)
+
+/* Unmark the piece of memory associated with a stack id as being a
+ stack. */
+#define VALGRIND_STACK_DEREGISTER(id) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_DEREGISTER, \
+ id, 0, 0, 0, 0)
+
+/* Change the start and end address of the stack id. */
+#define VALGRIND_STACK_CHANGE(id, start, end) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_CHANGE, \
+ id, start, end, 0, 0)
+
+/* Load PDB debug info for Wine PE image_map. */
+#define VALGRIND_LOAD_PDB_DEBUGINFO(fd, ptr, total_size, delta) \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__LOAD_PDB_DEBUGINFO, \
+ fd, ptr, total_size, delta, 0)
+
+/* Map a code address to a source file name and line number. buf64
+ must point to a 64-byte buffer in the caller's address space. The
+ result will be dumped in there and is guaranteed to be zero
+ terminated. If no info is found, the first byte is set to zero. */
+#define VALGRIND_MAP_IP_TO_SRCLOC(addr, buf64) \
+ (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, \
+ VG_USERREQ__MAP_IP_TO_SRCLOC, \
+ addr, buf64, 0, 0, 0)
+
+/* Disable error reporting for this thread. Behaves in a stack like
+ way, so you can safely call this multiple times provided that
+ VALGRIND_ENABLE_ERROR_REPORTING is called the same number of times
+ to re-enable reporting. The first call of this macro disables
+ reporting. Subsequent calls have no effect except to increase the
+ number of VALGRIND_ENABLE_ERROR_REPORTING calls needed to re-enable
+ reporting. Child threads do not inherit this setting from their
+ parents -- they are always created with reporting enabled. */
+#define VALGRIND_DISABLE_ERROR_REPORTING \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, \
+ 1, 0, 0, 0, 0)
+
+/* Re-enable error reporting, as per comments on
+ VALGRIND_DISABLE_ERROR_REPORTING. */
+#define VALGRIND_ENABLE_ERROR_REPORTING \
+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, \
+ -1, 0, 0, 0, 0)
+
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
+#undef PLAT_x86_win32
+#undef PLAT_x86_linux
+#undef PLAT_amd64_linux
+#undef PLAT_ppc32_linux
+#undef PLAT_ppc64_linux
+#undef PLAT_arm_linux
+#undef PLAT_s390x_linux
+#undef PLAT_mips32_linux
+
+#endif /* __VALGRIND_H */
diff --git a/glib/glib/win_iconv.c b/glib/glib/win_iconv.c
index 4ab1653..7a55c0a 100644
--- a/glib/glib/win_iconv.c
+++ b/glib/glib/win_iconv.c
@@ -77,7 +77,7 @@ typedef void* iconv_t;
iconv_t iconv_open(const char *tocode, const char *fromcode);
int iconv_close(iconv_t cd);
-size_t iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
+size_t iconv(iconv_t cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
/* libiconv interface for vim */
#if defined(MAKE_DLL)
@@ -95,7 +95,7 @@ typedef struct rec_iconv_t rec_iconv_t;
typedef iconv_t (*f_iconv_open)(const char *tocode, const char *fromcode);
typedef int (*f_iconv_close)(iconv_t cd);
-typedef size_t (*f_iconv)(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
+typedef size_t (*f_iconv)(iconv_t cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
typedef int* (*f_errno)(void);
typedef int (*f_mbtowc)(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize);
typedef int (*f_wctomb)(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize);
@@ -137,9 +137,9 @@ struct rec_iconv_t {
static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode);
static int win_iconv_close(iconv_t cd);
-static size_t win_iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
+static size_t win_iconv(iconv_t cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
-static int load_mlang();
+static int load_mlang(void);
static csconv_t make_csconv(const char *name);
static int name_to_codepage(const char *name);
static uint utf16_to_ucs4(const ushort *wbuf);
@@ -704,7 +704,7 @@ static LCIDTORFC1766A LcidToRfc1766A;
static RFC1766TOLCIDA Rfc1766ToLcidA;
static int
-load_mlang()
+load_mlang(void)
{
HMODULE h = NULL;
char mlang_dll[MAX_PATH + 100];
@@ -772,7 +772,7 @@ iconv_close(iconv_t _cd)
}
size_t
-iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
+iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
{
rec_iconv_t *cd = (rec_iconv_t *)_cd;
size_t r = cd->iconv(cd->cd, inbuf, inbytesleft, outbuf, outbytesleft);
@@ -801,7 +801,7 @@ win_iconv_close(iconv_t cd)
}
static size_t
-win_iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
+win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
{
rec_iconv_t *cd = (rec_iconv_t *)_cd;
ushort wbuf[MB_CHAR_MAX]; /* enough room for one character */
diff --git a/glib/install-sh b/glib/install-sh
index a9244eb..0b0fdcb 100755
--- a/glib/install-sh
+++ b/glib/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2013-12-25.23; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,25 +35,21 @@ scriptversion=2011-01-19.21; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
dst_arg=
copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
- -t) dst_arg=$2
- # Protect names problematic for `test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true;;
+ -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
shift
done
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -190,7 +186,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
@@ -202,12 +198,21 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -240,7 +245,7 @@ fi
for src
do
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
@@ -269,41 +274,15 @@ do
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +293,74 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +370,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +449,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +467,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/glib/m4macros/Makefile.am b/glib/m4macros/Makefile.am
index 10a2f5f..c91daa8 100644
--- a/glib/m4macros/Makefile.am
+++ b/glib/m4macros/Makefile.am
@@ -1,8 +1,8 @@
-include $(top_srcdir)/Makefile.decl
+include $(top_srcdir)/glib.mk
installed_m4= glib-2.0.m4 glib-gettext.m4 gsettings.m4
EXTRA_DIST+=$(installed_m4)
m4datadir = $(datadir)/aclocal
-noinst_DATA = $(installed_m4)
+noinst_DATA += $(installed_m4)
diff --git a/glib/m4macros/Makefile.in b/glib/m4macros/Makefile.in
index 6a28152..a5bc313 100644
--- a/glib/m4macros/Makefile.in
+++ b/glib/m4macros/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,24 +16,65 @@
# GLIB - Library of useful C routines
+
+
+
VPATH = @srcdir@
-am__make_dryrun = \
- { \
- am__dry=no; \
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
- test $$am__dry = yes; \
- }
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -52,11 +93,43 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/Makefile.decl $(top_srcdir)/mkinstalldirs
+installed_test_PROGRAMS = $(am__EXEEXT_1)
+noinst_PROGRAMS = $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_1)
+@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts)
+
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs)
+
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
subdir = m4macros
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
+ $(top_srcdir)/m4macros/glibtests.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/m4macros/ltoptions.m4 \
$(top_srcdir)/m4macros/ltsugar.m4 \
$(top_srcdir)/m4macros/ltversion.m4 \
@@ -68,10 +141,49 @@ am__aclocal_m4_deps = $(top_srcdir)/m4macros/libtool.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_testdir)" \
+ "$(DESTDIR)$(installed_test_metadir)" \
+ "$(DESTDIR)$(installed_testdir)"
+LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
+am__EXEEXT_1 =
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1)
+PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
+SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -91,7 +203,186 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
-DATA = $(noinst_DATA)
+DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
+ $(noinst_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/glib.mk \
+ $(top_srcdir)/test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ABS_GLIB_RUNTIME_LIBDIR = @ABS_GLIB_RUNTIME_LIBDIR@
ACLOCAL = @ACLOCAL@
@@ -132,6 +423,7 @@ GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
@@ -139,6 +431,7 @@ GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
+GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GREP = @GREP@
GSPAWN = @GSPAWN@
@@ -169,7 +462,6 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
-LIBTOOL_EXPORT_OPTIONS = @LIBTOOL_EXPORT_OPTIONS@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
@@ -185,6 +477,7 @@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
+NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -211,14 +504,13 @@ PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
-SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDRES = @WINDRES@
-XATTR_LIBS = @XATTR_LIBS@
+WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -249,7 +541,6 @@ gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
-gthread_INCLUDES = @gthread_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -259,6 +550,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+installed_test_metadir = @installed_test_metadir@
+installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -285,19 +578,105 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#GTESTER = gtester # for non-GLIB packages
+#GTESTER_REPORT = gtester-report # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester # for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package
+NULL =
# initialize variables for unconditional += appending
-EXTRA_DIST = $(installed_m4)
-TEST_PROGS =
+BUILT_SOURCES =
+BUILT_EXTRA_DIST =
+CLEANFILES = *.log *.trs $(am__append_14)
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \
+ $(installed_m4)
+
+# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
+# will belong in exactly one of the following variables.
+#
+# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
+#
+# test_programs, test_scripts, test_data, test_ltlibraries
+#
+# The above are used to list files that are involved in both uninstalled and installed testing. The
+# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
+# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
+# installed in the same way as it appears in the package layout.
+#
+# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
+# like so:
+#
+# installed_test_programs, uninstalled_test_programs
+# installed_test_scripts, uninstalled_test_scripts
+# installed_test_data, uninstalled_test_data
+# installed_test_ltlibraries, uninstalled_test_ltlibraries
+#
+# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
+# that should not themselves be run as testcases (but exist to be used from other testcases):
+#
+# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
+# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
+#
+# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
+# file automatically end up in the tarball.
+#
+# dist_test_scripts, dist_test_data, dist_test_extra_scripts
+# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
+# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
+#
+# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
+# standard automake convention of not disting programs scripts or data by default.
+#
+# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
+# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
+# gtester. That's a bit strange for scripts, but it's possible.
+
+# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
+TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
+ $(uninstalled_test_programs) $(uninstalled_test_scripts) \
+ $(dist_test_scripts) $(dist_uninstalled_test_scripts))
+installed_test_LTLIBRARIES = $(am__append_13)
+installed_test_SCRIPTS = $(am__append_11)
+nobase_installed_test_DATA = $(am__append_12)
+noinst_LTLIBRARIES = $(am__append_2)
+noinst_SCRIPTS = $(am__append_4)
+noinst_DATA = $(am__append_5) $(installed_m4)
+check_LTLIBRARIES = $(am__append_6)
+check_SCRIPTS = $(am__append_8)
+check_DATA = $(am__append_9)
+
+# Note: build even the installed-only targets during 'make check' to ensure that they still work.
+# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
+# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
+# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
+all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
+ $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
+
+all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
+ $(installed_test_scripts) $(test_extra_scripts) \
+ $(uninstalled_test_extra_scripts) \
+ $(installed_test_extra_scripts) $(all_dist_test_scripts)
+all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
+ $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
+
+all_test_data = $(test_data) $(uninstalled_test_data) \
+ $(installed_test_data) $(all_dist_test_data)
+all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
+all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
+@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \
+@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts)
+
+@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
installed_m4 = glib-2.0.m4 glib-gettext.m4 gsettings.m4
m4datadir = $(datadir)/aclocal
-noinst_DATA = $(installed_m4)
-all: all-am
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -309,7 +688,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign m4macros/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign m4macros/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -318,7 +696,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
-$(top_srcdir)/Makefile.decl:
+$(top_srcdir)/glib.mk $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -329,20 +707,378 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+clean-checkLTLIBRARIES:
+ -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
+ @list='$(check_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
+ }
+
+uninstall-installed_testLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
+ done
+
+clean-installed_testLTLIBRARIES:
+ -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
+ @list='$(installed_test_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files
+
+clean-installed_testPROGRAMS:
+ @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-installed_testSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+install-installed_test_metaDATA: $(installed_test_meta_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
+ done
+
+uninstall-installed_test_metaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
+install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_installed_testDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
cscope cscopelist:
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -374,11 +1110,18 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(DATA)
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
+ $(check_SCRIPTS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA)
installdirs:
-install: install-am
+ for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -398,19 +1141,29 @@ install-strip:
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
-clean-am: clean-generic clean-libtool mostlyclean-am
+clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
+ mostlyclean-am
distclean: distclean-am
-rm -f Makefile
@@ -428,7 +1181,10 @@ info: info-am
info-am:
-install-data-am:
+install-data-am: install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA \
+ install-nobase_installed_testDATA
install-dvi: install-dvi-am
@@ -472,21 +1228,38 @@ ps: ps-am
ps-am:
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: all all-am check check-am check-local clean clean-generic \
- clean-libtool distclean distclean-generic distclean-libtool \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
+uninstall-am: uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am check-local clean \
+ clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
+ clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
+ clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am
+ install-html-am install-info install-info-am \
+ install-installed_testLTLIBRARIES \
+ install-installed_testPROGRAMS install-installed_testSCRIPTS \
+ install-installed_test_metaDATA install-man \
+ install-nobase_installed_testDATA install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+ uninstall uninstall-am uninstall-installed_testLTLIBRARIES \
+ uninstall-installed_testPROGRAMS \
+ uninstall-installed_testSCRIPTS \
+ uninstall-installed_test_metaDATA \
+ uninstall-nobase_installed_testDATA
+
+.PRECIOUS: Makefile
### testing rules
@@ -500,7 +1273,7 @@ test: test-nonrecursive
# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
-@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:
# test-report: run tests in subdirs and generate report
@@ -514,9 +1287,9 @@ test-report perf-report full-report: ${TEST_PROGS}
full-report) test_options="-k -m=perf -m=slow";; \
esac ; \
if test -z "$$GTESTER_LOGDIR" ; then \
- ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
elif test -n "${TEST_PROGS}" ; then \
- ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
fi ; \
}
@ ignore_logdir=true ; \
@@ -574,6 +1347,12 @@ lcov-clean:
# run tests in cwd as part of make check
check-local: test-nonrecursive
+@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
+@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$<' >> $@.tmp; \
+@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@)
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/glib/m4macros/attributes.m4 b/glib/m4macros/attributes.m4
new file mode 100644
index 0000000..f0bcf24
--- /dev/null
+++ b/glib/m4macros/attributes.m4
@@ -0,0 +1,288 @@
+dnl Macros to check the presence of generic (non-typed) symbols.
+dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
+dnl Copyright (c) 2006-2008 xine project
+dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+dnl 02110-1301, USA.
+dnl
+dnl As a special exception, the copyright owners of the
+dnl macro gives unlimited permission to copy, distribute and modify the
+dnl configure scripts that are the output of Autoconf when processing the
+dnl Macro. You need not follow the terms of the GNU General Public
+dnl License when using or distributing such scripts, even though portions
+dnl of the text of the Macro appear in them. The GNU General Public
+dnl License (GPL) does govern all other use of the material that
+dnl constitutes the Autoconf Macro.
+dnl
+dnl This special exception to the GPL applies to versions of the
+dnl Autoconf Macro released by this project. When you make and
+dnl distribute a modified version of the Autoconf Macro, you may extend
+dnl this special exception to the GPL to apply to your modified version as
+dnl well.
+
+dnl Check if FLAG in ENV-VAR is supported by compiler and append it
+dnl to WHERE-TO-APPEND variable
+dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
+
+AC_DEFUN([CC_CHECK_FLAG_APPEND], [
+ AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
+ AS_TR_SH([cc_cv_$2_$3]),
+ [eval "AS_TR_SH([cc_save_$2])='${$2}'"
+ eval "AS_TR_SH([$2])='-Werror $3'"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
+ [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
+ [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
+ eval "AS_TR_SH([$2])='$cc_save_$2'"])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
+ [eval "$1='${$1} $3'"])
+])
+
+dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
+AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
+ for flag in $3; do
+ CC_CHECK_FLAG_APPEND($1, $2, $flag)
+ done
+])
+
+dnl Check if the flag is supported by linker (cacheable)
+dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
+
+AC_DEFUN([CC_CHECK_LDFLAGS], [
+ AC_CACHE_CHECK([if $CC supports $1 flag],
+ AS_TR_SH([cc_cv_ldflags_$1]),
+ [ac_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $1"
+ AC_LINK_IFELSE([int main() { return 1; }],
+ [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
+ [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
+ LDFLAGS="$ac_save_LDFLAGS"
+ ])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
+ [$2], [$3])
+])
+
+dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
+dnl the current linker to avoid undefined references in a shared object.
+AC_DEFUN([CC_NOUNDEFINED], [
+ dnl We check $host for which systems to enable this for.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ case $host in
+ dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
+ dnl are requested, as different implementations are present; to avoid problems
+ dnl use -Wl,-z,defs only for those platform not behaving this way.
+ *-freebsd* | *-openbsd*) ;;
+ *)
+ dnl First of all check for the --no-undefined variant of GNU ld. This allows
+ dnl for a much more readable commandline, so that people can understand what
+ dnl it does without going to look for what the heck -z defs does.
+ for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
+ CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
+ break
+ done
+ ;;
+ esac
+
+ AC_SUBST([LDFLAGS_NOUNDEFINED])
+])
+
+dnl Check for a -Werror flag or equivalent. -Werror is the GCC
+dnl and ICC flag that tells the compiler to treat all the warnings
+dnl as fatal. We usually need this option to make sure that some
+dnl constructs (like attributes) are not simply ignored.
+dnl
+dnl Other compilers don't support -Werror per se, but they support
+dnl an equivalent flag:
+dnl - Sun Studio compiler supports -errwarn=%all
+AC_DEFUN([CC_CHECK_WERROR], [
+ AC_CACHE_CHECK(
+ [for $CC way to treat warnings as errors],
+ [cc_cv_werror],
+ [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
+ [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
+ ])
+])
+
+AC_DEFUN([CC_CHECK_ATTRIBUTE], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
+ AS_TR_SH([cc_cv_attribute_$1]),
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
+ [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
+ [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
+ [AC_DEFINE(
+ AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
+ [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
+ )
+ $4],
+ [$5])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
+ CC_CHECK_ATTRIBUTE(
+ [constructor],,
+ [void __attribute__((constructor)) ctor() { int a; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
+ CC_CHECK_ATTRIBUTE(
+ [format], [format(printf, n, n)],
+ [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
+ CC_CHECK_ATTRIBUTE(
+ [format_arg], [format_arg(printf)],
+ [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
+ CC_CHECK_ATTRIBUTE(
+ [visibility_$1], [visibility("$1")],
+ [void __attribute__((visibility("$1"))) $1_function() { }],
+ [$2], [$3])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
+ CC_CHECK_ATTRIBUTE(
+ [nonnull], [nonnull()],
+ [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
+ CC_CHECK_ATTRIBUTE(
+ [unused], ,
+ [void some_function(void *foo, __attribute__((unused)) void *bar);],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
+ CC_CHECK_ATTRIBUTE(
+ [sentinel], ,
+ [void some_function(void *foo, ...) __attribute__((sentinel));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
+ CC_CHECK_ATTRIBUTE(
+ [deprecated], ,
+ [void some_function(void *foo, ...) __attribute__((deprecated));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
+ CC_CHECK_ATTRIBUTE(
+ [alias], [weak, alias],
+ [void other_function(void *foo) { }
+ void some_function(void *foo) __attribute__((weak, alias("other_function")));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
+ CC_CHECK_ATTRIBUTE(
+ [malloc], ,
+ [void * __attribute__((malloc)) my_alloc(int n);],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_PACKED], [
+ CC_CHECK_ATTRIBUTE(
+ [packed], ,
+ [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_CONST], [
+ CC_CHECK_ATTRIBUTE(
+ [const], ,
+ [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_FLAG_VISIBILITY], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
+ [cc_cv_flag_visibility],
+ [cc_flag_visibility_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
+ cc_cv_flag_visibility='yes',
+ cc_cv_flag_visibility='no')
+ CFLAGS="$cc_flag_visibility_save_CFLAGS"])
+
+ AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
+ [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
+ [Define this if the compiler supports the -fvisibility flag])
+ $1],
+ [$2])
+])
+
+AC_DEFUN([CC_FUNC_EXPECT], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if compiler has __builtin_expect function],
+ [cc_cv_func_expect],
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [int some_function() {
+ int a = 3;
+ return (int)__builtin_expect(a, 3);
+ }])],
+ [cc_cv_func_expect=yes],
+ [cc_cv_func_expect=no])
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ AS_IF([test "x$cc_cv_func_expect" = "xyes"],
+ [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
+ [Define this if the compiler supports __builtin_expect() function])
+ $1],
+ [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
+ [cc_cv_attribute_aligned],
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ for cc_attribute_align_try in 64 32 16 8 4 2; do
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ int main() {
+ static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
+ return c;
+ }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
+ done
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ if test "x$cc_cv_attribute_aligned" != "x"; then
+ AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
+ [Define the highest alignment supported])
+ fi
+])
diff --git a/glib/m4macros/glib-gettext.m4 b/glib/m4macros/glib-gettext.m4
index c64e64f..5217fd8 100644
--- a/glib/m4macros/glib-gettext.m4
+++ b/glib/m4macros/glib-gettext.m4
@@ -315,7 +315,6 @@ msgstr ""
dnl
glib_DEFUN([GLIB_GNU_GETTEXT],
[AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
GLIB_LC_MESSAGES
GLIB_WITH_NLS
diff --git a/glib/m4macros/glibtests.m4 b/glib/m4macros/glibtests.m4
new file mode 100644
index 0000000..27e9024
--- /dev/null
+++ b/glib/m4macros/glibtests.m4
@@ -0,0 +1,28 @@
+dnl GLIB_TESTS
+dnl
+
+AC_DEFUN([GLIB_TESTS],
+[
+ AC_ARG_ENABLE(installed-tests,
+ AS_HELP_STRING([--enable-installed-tests],
+ [Enable installation of some test cases]),
+ [case ${enableval} in
+ yes) ENABLE_INSTALLED_TESTS="1" ;;
+ no) ENABLE_INSTALLED_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-installed-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], test "$ENABLE_INSTALLED_TESTS" = "1")
+ AC_ARG_ENABLE(always-build-tests,
+ AS_HELP_STRING([--enable-always-build-tests],
+ [Enable always building tests during 'make all']),
+ [case ${enableval} in
+ yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;;
+ no) ENABLE_ALWAYS_BUILD_TESTS="" ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-always-build-tests]) ;;
+ esac])
+ AM_CONDITIONAL([ENABLE_ALWAYS_BUILD_TESTS], test "$ENABLE_ALWAYS_BUILD_TESTS" = "1")
+ if test "$ENABLE_INSTALLED_TESTS" == "1"; then
+ AC_SUBST(installed_test_metadir, [${datadir}/installed-tests/]AC_PACKAGE_NAME)
+ AC_SUBST(installed_testdir, [${libexecdir}/installed-tests/]AC_PACKAGE_NAME)
+ fi
+])
diff --git a/glib/m4macros/libtool.m4 b/glib/m4macros/libtool.m4
index 88de383..f12cfdf 100644
--- a/glib/m4macros/libtool.m4
+++ b/glib/m4macros/libtool.m4
@@ -1,8 +1,8 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
m4_define([_LT_COPYING], [dnl
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
_LT_DECL([], [host_alias], [0], [The host system])dnl
_LT_DECL([], [host], [0])dnl
_LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
m4_case([$1],
[C], [_LT_LANG(C)],
[C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
[Java], [_LT_LANG(GCJ)],
[Fortran 77], [_LT_LANG(F77)],
[Fortran], [_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
])# _LT_LANG
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
# _LT_LANG_DEFAULT_CONFIG
# -----------------------
m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
m4_ifdef([LT_PROG_GCJ],
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
AC_PROVIDE_IFELSE([LT_PROG_RC],
[LT_LANG(RC)],
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
rm -rf libconftest.dylib*
rm -f conftest.*
fi])
+
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
[lt_cv_ld_exported_symbols_list],
[lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
[lt_cv_ld_exported_symbols_list=no])
LDFLAGS="$save_LDFLAGS"
])
+
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
[lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
])
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
# Checks for linker and compiler features on darwin
m4_defun([_LT_DARWIN_LINKER_FEATURES],
[
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
if test "$lt_cv_ld_force_load" = "yes"; then
_LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
fi
@@ -1268,7 +1312,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -1282,7 +1326,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -1301,7 +1348,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -1330,14 +1380,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
@@ -1414,13 +1477,13 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -1600,6 +1663,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1639,7 +1707,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
test $i != 17 # 1/2 MB should be enough
do
@@ -2185,7 +2253,7 @@ need_version=unknown
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -2194,7 +2262,7 @@ aix3*)
;;
aix[[4-9]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
@@ -2259,7 +2327,7 @@ beos*)
;;
bsdi[[45]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2466,7 @@ m4_if([$1], [],[
;;
dgux*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2474,6 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -2417,7 +2481,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[[123]]*) objformat=aout ;;
+ freebsd[[23]].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -2435,7 +2499,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2455,17 +2519,18 @@ freebsd* | dragonfly*)
;;
gnu*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
@@ -2526,7 +2591,7 @@ hpux9* | hpux10* | hpux11*)
;;
interix[[3-9]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2542,7 +2607,7 @@ irix5* | irix6* | nonstopux*)
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
@@ -2579,9 +2644,9 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2648,7 +2713,7 @@ netbsd*)
;;
newsos6)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -2717,7 +2782,7 @@ rdos*)
;;
solaris*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2742,7 +2807,7 @@ sunos4*)
;;
sysv4 | sysv4.3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -2766,7 +2831,7 @@ sysv4 | sysv4.3*)
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
soname_spec='$libname${shared_ext}.$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -2797,7 +2862,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2807,7 +2872,7 @@ tpf*)
;;
uts4*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -3229,7 +3294,7 @@ irix5* | irix6* | nonstopux*)
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3649,6 +3714,7 @@ for ac_symprfx in "" "_"; do
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4233,7 +4299,9 @@ m4_if([$1], [CXX], [
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
;;
esac
else
@@ -4325,18 +4393,33 @@ m4_if([$1], [CXX], [
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
;;
+ *Intel*\ [[CF]]*Compiler*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
esac
;;
esac
@@ -4496,7 +4579,9 @@ m4_if([$1], [CXX], [
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
- cl*) ;;
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -4521,7 +4606,6 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4772,8 +4856,7 @@ _LT_EOF
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test "x$supports_anon_versioning" = xyes; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -5068,6 +5151,7 @@ _LT_EOF
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5114,10 +5198,6 @@ _LT_EOF
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
- freebsd1*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
@@ -5130,7 +5210,7 @@ _LT_EOF
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5169,7 +5249,6 @@ _LT_EOF
fi
if test "$with_gnu_ld" = no; then
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5611,9 +5690,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
[Flag to hardcode $libdir into a binary during linking.
This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
- [[If ld is used when linking, flag to hardcode $libdir into a binary
- during linking. This must work even if $libdir does not exist]])
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
[Whether we need a single "-rpath" flag with a separated argument])
_LT_TAGDECL([], [hardcode_direct], [0],
@@ -5771,7 +5847,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6141,7 +6216,7 @@ if test "$_lt_caught_CXX_error" != yes; then
esac
;;
- freebsd[[12]]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -6902,12 +6977,18 @@ public class foo {
}
};
_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
])
_lt_libdeps_save_CFLAGS=$CFLAGS
case "$CC $CFLAGS " in #(
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
esac
dnl Parse the compiler output and extract the necessary
@@ -7104,7 +7185,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7237,7 +7317,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7424,6 +7503,77 @@ CFLAGS=$lt_save_CFLAGS
])# _LT_LANG_GCJ_CONFIG
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
# _LT_LANG_RC_CONFIG([TAG])
# -------------------------
# Ensure that the configuration variables for the Windows resource compiler
@@ -7493,6 +7643,13 @@ dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
# LT_PROG_RC
# ----------
AC_DEFUN([LT_PROG_RC],
diff --git a/glib/m4macros/ltoptions.m4 b/glib/m4macros/ltoptions.m4
index 17cfd51..5d9acd8 100644
--- a/glib/m4macros/ltoptions.m4
+++ b/glib/m4macros/ltoptions.m4
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [pic_mode="$withval"],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
[pic_mode=default])
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
diff --git a/glib/missing b/glib/missing
index 86a8fc3..f62bbae 100755
--- a/glib/missing
+++ b/glib/missing
@@ -1,11 +1,10 @@
#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-01-06.13; # UTC
+scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
+case $1 in
-msg="missing on your system"
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
@@ -99,228 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
;;
-esac
-
-exit 0
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/glib/mkinstalldirs b/glib/mkinstalldirs
deleted file mode 100755
index 4191a45..0000000
--- a/glib/mkinstalldirs
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" "" $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage"
- exit $?
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --version)
- echo "$0 $scriptversion"
- exit $?
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error. This is a problem when calling mkinstalldirs
-# from a parallel make. We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
- '')
- if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- else
- # On NextStep and OpenStep, the `mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
- # exists.
- test -d ./-p && rmdir ./-p
- test -d ./--version && rmdir ./--version
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
- test ! -d ./--version; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- else
- # Clean up after NextStep and OpenStep mkdir.
- for d in ./-m ./-p ./--version "./$dirmode";
- do
- test -d $d && rmdir $d
- done
- fi
- ;;
-esac
-
-for file
-do
- case $file in
- /*) pathcomp=/ ;;
- *) pathcomp= ;;
- esac
- oIFS=$IFS
- IFS=/
- set fnord $file
- shift
- IFS=$oIFS
-
- for d
- do
- test "x$d" = x && continue
-
- pathcomp=$pathcomp$d
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp=$pathcomp/
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/glib/test-driver b/glib/test-driver
new file mode 100755
index 0000000..8e575b0
--- /dev/null
+++ b/glib/test-driver
@@ -0,0 +1,148 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+ echo "$0: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--]
+ TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file= # Where to save the output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "test-driver $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) enable_hard_errors=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ *) break;;
+ esac
+ shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file" = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+ usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+ usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+ # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+ red='' # Red.
+ grn='' # Green.
+ lgn='' # Light green.
+ blu='' # Blue.
+ mgn='' # Magenta.
+ std='' # No color.
+else
+ red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+ tweaked_estatus=1
+else
+ tweaked_estatus=$estatus
+fi
+
+case $tweaked_estatus:$expect_failure in
+ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+ 0:*) col=$grn res=PASS recheck=no gcopy=no;;
+ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
+ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
+ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
+ *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
+esac
+
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/install-sh b/install-sh
index a9244eb..0b0fdcb 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2013-12-25.23; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,25 +35,21 @@ scriptversion=2011-01-19.21; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
dst_arg=
copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
- -t) dst_arg=$2
- # Protect names problematic for `test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true;;
+ -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
shift
done
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -190,7 +186,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
@@ -202,12 +198,21 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -240,7 +245,7 @@ fi
for src
do
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
@@ -269,41 +274,15 @@ do
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +293,74 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +370,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +449,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +467,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/main.c b/main.c
index b61ca34..227ed35 100644
--- a/main.c
+++ b/main.c
@@ -50,6 +50,7 @@ static gboolean want_exists = FALSE;
static gboolean want_provides = FALSE;
static gboolean want_requires = FALSE;
static gboolean want_requires_private = FALSE;
+static gboolean want_validate = FALSE;
static char *required_atleast_version = NULL;
static char *required_exact_version = NULL;
static char *required_max_version = NULL;
@@ -190,6 +191,7 @@ output_opt_cb (const char *opt, const char *arg, gpointer data,
{
fprintf (stderr, "Ignoring incompatible output option \"%s\"\n",
opt);
+ fflush (stderr);
return TRUE;
}
}
@@ -246,6 +248,8 @@ output_opt_cb (const char *opt, const char *arg, gpointer data,
want_requires = TRUE;
else if (strcmp (opt, "--print-requires-private") == 0)
want_requires_private = TRUE;
+ else if (strcmp (opt, "--validate") == 0)
+ want_validate = TRUE;
else
return FALSE;
@@ -277,11 +281,10 @@ pkg_uninstalled (Package *pkg)
}
void
-print_hashtable_key (gpointer key,
- gpointer value,
- gpointer user_data)
+print_list_data (gpointer data,
+ gpointer user_data)
{
- printf("%s\n", (gchar*)key);
+ g_print ("%s\n", (gchar *)data);
}
static void
@@ -322,6 +325,7 @@ process_package_args (const char *cmdline, GList **packages, FILE *log)
if (reqs == NULL)
{
fprintf (stderr, "Must specify package names on the command line\n");
+ fflush (stderr);
return FALSE;
}
@@ -459,13 +463,19 @@ static const GOptionEntry options_table[] = {
{ "print-requires-private", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
&output_opt_cb, "print which packages the package requires for static "
"linking", NULL },
-#ifdef G_OS_WIN32
- { "dont-define-prefix", 0, 0, G_OPTION_ARG_NONE, &dont_define_prefix,
- "don't try to override the value of prefix for each .pc file found with "
- "a guesstimated value based on the location of the .pc file", NULL },
+ { "validate", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
+ &output_opt_cb, "validate a package's .pc file", NULL },
+ { "define-prefix", 0, 0, G_OPTION_ARG_NONE, &define_prefix,
+ "try to override the value of prefix for each .pc file found with a "
+ "guesstimated value based on the location of the .pc file", NULL },
+ { "dont-define-prefix", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE,
+ &define_prefix, "don't try to override the value of prefix for each .pc "
+ "file found with a guesstimated value based on the location of the .pc "
+ "file", NULL },
{ "prefix-variable", 0, 0, G_OPTION_ARG_STRING, &prefix_variable,
"set the name of the variable that pkg-config automatically sets",
"PREFIX" },
+#ifdef G_OS_WIN32
{ "msvc-syntax", 0, 0, G_OPTION_ARG_NONE, &msvc_syntax,
"output -l and -L flags for the Microsoft compiler (cl)", NULL },
#endif
@@ -565,16 +575,26 @@ main (int argc, char **argv)
}
/* Error printing is determined as follows:
- * - for all output options besides --exists and --*-version,
- * it's on by default and --silence-errors can turn it off
- * - for --exists, --*-version, etc. and no options at all,
+ * - for --exists, --*-version, --list-all and no options at all,
* it's off by default and --print-errors will turn it on
+ * - for all other output options, it's on by default and
+ * --silence-errors can turn it off
*/
- if (!want_exists)
+ if (want_exists || want_list)
+ {
+ debug_spew ("Error printing disabled by default due to use of output "
+ "options --exists, --atleast/exact/max-version, "
+ "--list-all or no output option at all. Value of "
+ "--print-errors: %d\n",
+ want_verbose_errors);
+
+ /* Leave want_verbose_errors unchanged, reflecting --print-errors */
+ }
+ else
{
debug_spew ("Error printing enabled by default due to use of output "
- "options besides --exists or --atleast/exact/max-version. "
- "Value of --silence-errors: %d\n",
+ "options besides --exists, --atleast/exact/max-version or "
+ "--list-all. Value of --silence-errors: %d\n",
want_silence_errors);
if (want_silence_errors && getenv ("PKG_CONFIG_DEBUG_SPEW") == NULL)
@@ -582,15 +602,6 @@ main (int argc, char **argv)
else
want_verbose_errors = TRUE;
}
- else
- {
- debug_spew ("Error printing disabled by default due to use of output "
- "options --exists, --atleast/exact/max-version or no "
- "output option at all. Value of --print-errors: %d\n",
- want_verbose_errors);
-
- /* Leave want_verbose_errors unchanged, reflecting --print-errors */
- }
if (want_verbose_errors)
debug_spew ("Error printing enabled\n");
@@ -614,6 +625,10 @@ main (int argc, char **argv)
if (pkg_flags == 0 && !want_requires && !want_exists)
disable_requires();
+ /* Allow errors in .pc files when listing all. */
+ if (want_list)
+ parse_strict = FALSE;
+
if (want_my_version)
{
printf ("%s\n", VERSION);
@@ -671,8 +686,10 @@ main (int argc, char **argv)
g_string_free (str, TRUE);
- if (want_exists)
- return 0; /* if we got here, all the packages existed. */
+ /* If the user just wants to check package existence or validate its .pc
+ * file, we're all done. */
+ if (want_exists || want_validate)
+ return 0;
if (want_variable_list)
{
@@ -682,9 +699,13 @@ main (int argc, char **argv)
{
Package *pkg = tmp->data;
if (pkg->vars != NULL)
- g_hash_table_foreach(pkg->vars,
- &print_hashtable_key,
- NULL);
+ {
+ /* Sort variables for consistent output */
+ GList *keys = g_hash_table_get_keys (pkg->vars);
+ keys = g_list_sort (keys, (GCompareFunc)g_strcmp0);
+ g_list_foreach (keys, print_list_data, NULL);
+ g_list_free (keys);
+ }
tmp = g_list_next (tmp);
if (tmp) printf ("\n");
}
diff --git a/missing b/missing
index 86a8fc3..f62bbae 100755
--- a/missing
+++ b/missing
@@ -1,11 +1,10 @@
#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-01-06.13; # UTC
+scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
+case $1 in
-msg="missing on your system"
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
@@ -99,228 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
;;
-esac
-
-exit 0
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/parse.c b/parse.c
index d37475f..b69f9fc 100644
--- a/parse.c
+++ b/parse.c
@@ -34,16 +34,12 @@
#endif
#include <sys/types.h>
-#ifdef G_OS_WIN32
-gboolean dont_define_prefix = FALSE;
+gboolean parse_strict = TRUE;
+gboolean define_prefix = ENABLE_DEFINE_PREFIX;
char *prefix_variable = "prefix";
-gboolean msvc_syntax = FALSE;
-#endif
#ifdef G_OS_WIN32
-#ifndef G_IS_DIR_SEPARATOR
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#endif
+gboolean msvc_syntax = FALSE;
#endif
/**
@@ -204,8 +200,8 @@ trim_and_sub (Package *pkg, const char *str, const char *path)
{
verbose_error ("Variable '%s' not defined in '%s'\n",
varname, path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
}
g_free (varname);
@@ -234,8 +230,10 @@ parse_name (Package *pkg, const char *str, const char *path)
if (pkg->name)
{
verbose_error ("Name field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
pkg->name = trim_and_sub (pkg, str, path);
@@ -247,8 +245,10 @@ parse_version (Package *pkg, const char *str, const char *path)
if (pkg->version)
{
verbose_error ("Version field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
pkg->version = trim_and_sub (pkg, str, path);
@@ -260,8 +260,10 @@ parse_description (Package *pkg, const char *str, const char *path)
if (pkg->description)
{
verbose_error ("Description field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
pkg->description = trim_and_sub (pkg, str, path);
@@ -413,9 +415,8 @@ parse_module_list (Package *pkg, const char *str, const char *path)
GList *retval = NULL;
split = split_module_list (str, path);
-
- iter = split;
- while (iter != NULL)
+
+ for (iter = split; iter != NULL; iter = g_list_next (iter))
{
RequiredVersion *ver;
char *p;
@@ -445,8 +446,10 @@ parse_module_list (Package *pkg, const char *str, const char *path)
if (*start == '\0')
{
verbose_error ("Empty package name in Requires or Conflicts in file '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ continue;
}
ver->name = g_strdup (start);
@@ -478,9 +481,13 @@ parse_module_list (Package *pkg, const char *str, const char *path)
ver->comparison = NOT_EQUAL;
else
{
- verbose_error ("Unknown version comparison operator '%s' after package name '%s' in file '%s'\n", start, ver->name, path);
-
- exit (1);
+ verbose_error ("Unknown version comparison operator '%s' after "
+ "package name '%s' in file '%s'\n", start,
+ ver->name, path);
+ if (parse_strict)
+ exit (1);
+ else
+ continue;
}
}
@@ -497,9 +504,15 @@ parse_module_list (Package *pkg, const char *str, const char *path)
if (ver->comparison != ALWAYS_MATCH && *start == '\0')
{
- verbose_error ("Comparison operator but no version after package name '%s' in file '%s'\n", ver->name, path);
-
- exit (1);
+ verbose_error ("Comparison operator but no version after package "
+ "name '%s' in file '%s'\n", ver->name, path);
+ if (parse_strict)
+ exit (1);
+ else
+ {
+ ver->version = g_strdup ("0");
+ continue;
+ }
}
if (*start != '\0')
@@ -508,8 +521,6 @@ parse_module_list (Package *pkg, const char *str, const char *path)
}
g_assert (ver->name);
-
- iter = g_list_next (iter);
}
g_list_foreach (split, (GFunc) g_free, NULL);
@@ -528,8 +539,10 @@ parse_requires (Package *pkg, const char *str, const char *path)
if (pkg->requires)
{
verbose_error ("Requires field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -545,8 +558,10 @@ parse_requires_private (Package *pkg, const char *str, const char *path)
if (pkg->requires_private)
{
verbose_error ("Requires.private field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -562,8 +577,10 @@ parse_conflicts (Package *pkg, const char *str, const char *path)
if (pkg->conflicts)
{
verbose_error ("Conflicts field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -645,7 +662,7 @@ static void _do_parse_libs (Package *pkg, int argc, char **argv)
++p;
flag->type = LIBS_L;
- flag->arg = g_strconcat (L_flag, p, lib_suffix, NULL);
+ flag->arg = g_strconcat (L_flag, p, NULL);
pkg->libs = g_list_prepend (pkg->libs, flag);
}
else if (strcmp("-framework",p) == 0 && i+1 < argc)
@@ -696,8 +713,10 @@ parse_libs (Package *pkg, const char *str, const char *path)
if (pkg->libs_num > 0)
{
verbose_error ("Libs field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -707,7 +726,13 @@ parse_libs (Package *pkg, const char *str, const char *path)
{
verbose_error ("Couldn't parse Libs field into an argument vector: %s\n",
error ? error->message : "unknown");
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ {
+ g_free (trimmed);
+ return;
+ }
}
_do_parse_libs(pkg, argc, argv);
@@ -740,8 +765,10 @@ parse_libs_private (Package *pkg, const char *str, const char *path)
if (pkg->libs_private_num > 0)
{
verbose_error ("Libs.private field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -751,7 +778,13 @@ parse_libs_private (Package *pkg, const char *str, const char *path)
{
verbose_error ("Couldn't parse Libs.private field into an argument vector: %s\n",
error ? error->message : "unknown");
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ {
+ g_free (trimmed);
+ return;
+ }
}
_do_parse_libs(pkg, argc, argv);
@@ -776,8 +809,10 @@ parse_cflags (Package *pkg, const char *str, const char *path)
if (pkg->cflags)
{
verbose_error ("Cflags field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
trimmed = trim_and_sub (pkg, str, path);
@@ -787,7 +822,13 @@ parse_cflags (Package *pkg, const char *str, const char *path)
{
verbose_error ("Couldn't parse Cflags field into an argument vector: %s\n",
error ? error->message : "unknown");
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ {
+ g_free (trimmed);
+ return;
+ }
}
i = 0;
@@ -810,17 +851,19 @@ parse_cflags (Package *pkg, const char *str, const char *path)
flag->arg = g_strconcat ("-I", p, NULL);
pkg->cflags = g_list_prepend (pkg->cflags, flag);
}
- else if (strcmp("-idirafter", arg) == 0 && i+1 < argc)
+ else if ((strcmp ("-idirafter", arg) == 0 ||
+ strcmp ("-isystem", arg) == 0) &&
+ i+1 < argc)
{
- char *dirafter, *tmp;
+ char *option, *tmp;
tmp = trim_string (argv[i+1]);
- dirafter = strdup_escape_shell (tmp);
+ option = strdup_escape_shell (tmp);
flag->type = CFLAGS_OTHER;
- flag->arg = g_strconcat (arg, " ", dirafter, NULL);
+ flag->arg = g_strconcat (arg, " ", option, NULL);
pkg->cflags = g_list_prepend (pkg->cflags, flag);
i++;
- g_free (dirafter);
+ g_free (option);
g_free (tmp);
}
else if (*arg != '\0')
@@ -848,31 +891,15 @@ parse_url (Package *pkg, const char *str, const char *path)
if (pkg->url != NULL)
{
verbose_error ("URL field occurs twice in '%s'\n", path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ return;
}
pkg->url = trim_and_sub (pkg, str, path);
}
-#ifdef G_OS_WIN32
-static char *orig_prefix = NULL;
-
-static int
-pathnamecmp (const char *a,
- const char *b)
-{
- while (*a && *b &&
- ((G_IS_DIR_SEPARATOR (*a) && G_IS_DIR_SEPARATOR (*b)) ||
- g_ascii_toupper (*a) == g_ascii_toupper (*b)))
- {
- a++;
- b++;
- }
- return g_ascii_toupper (*a) - g_ascii_toupper (*b);
-}
-#endif
-
static void
parse_line (Package *pkg, const char *untrimmed, const char *path,
gboolean ignore_requires, gboolean ignore_private_libs,
@@ -963,41 +990,31 @@ parse_line (Package *pkg, const char *untrimmed, const char *path,
++p;
while (*p && isspace ((guchar)*p))
++p;
-
- if (pkg->vars == NULL)
- pkg->vars = g_hash_table_new (g_str_hash, g_str_equal);
-#ifdef G_OS_WIN32
- if (!dont_define_prefix && strcmp (tag, prefix_variable) == 0)
+ if (define_prefix && strcmp (tag, prefix_variable) == 0)
{
/* This is the prefix variable. Try to guesstimate a value for it
* for this package from the location of the .pc file.
*/
+ gchar *base;
+ gboolean is_pkgconfigdir;
- gchar *prefix = pkg->pcfiledir;
- const int prefix_len = strlen (prefix);
- const char *const lib_pkgconfig = "\\lib\\pkgconfig";
- const char *const share_pkgconfig = "\\share\\pkgconfig";
- const int lib_pkgconfig_len = strlen (lib_pkgconfig);
- const int share_pkgconfig_len = strlen (share_pkgconfig);
-
- if ((strlen (prefix) > lib_pkgconfig_len &&
- pathnamecmp (prefix + prefix_len - lib_pkgconfig_len, lib_pkgconfig) == 0) ||
- (strlen (prefix) > share_pkgconfig_len &&
- pathnamecmp (prefix + prefix_len - share_pkgconfig_len, share_pkgconfig) == 0))
- {
- /* It ends in lib\pkgconfig or share\pkgconfig. Good. */
-
- gchar *q;
+ base = g_path_get_basename (pkg->pcfiledir);
+ is_pkgconfigdir = g_ascii_strcasecmp (base, "pkgconfig") == 0;
+ g_free (base);
+ if (is_pkgconfigdir)
+ {
+ /* It ends in pkgconfig. Good. */
+ gchar *q;
+ gchar *prefix;
- orig_prefix = g_strdup (p);
-
- prefix = g_strdup (prefix);
- if (strlen (prefix) > lib_pkgconfig_len &&
- pathnamecmp (prefix + prefix_len - lib_pkgconfig_len, lib_pkgconfig) == 0)
- prefix[prefix_len - lib_pkgconfig_len] = '\0';
- else
- prefix[prefix_len - share_pkgconfig_len] = '\0';
+ /* Keep track of the original prefix value. */
+ pkg->orig_prefix = g_strdup (p);
+
+ /* Get grandparent directory for new prefix. */
+ q = g_path_get_dirname (pkg->pcfiledir);
+ prefix = g_path_get_dirname (q);
+ g_free (q);
/* Turn backslashes into slashes or
* g_shell_parse_argv() will eat them when ${prefix}
@@ -1025,24 +1042,26 @@ parse_line (Package *pkg, const char *untrimmed, const char *path,
goto cleanup;
}
}
- else if (!dont_define_prefix &&
- orig_prefix != NULL &&
- strncmp (p, orig_prefix, strlen (orig_prefix)) == 0 &&
- G_IS_DIR_SEPARATOR (p[strlen (orig_prefix)]))
+ else if (define_prefix &&
+ pkg->orig_prefix != NULL &&
+ strncmp (p, pkg->orig_prefix, strlen (pkg->orig_prefix)) == 0 &&
+ G_IS_DIR_SEPARATOR (p[strlen (pkg->orig_prefix)]))
{
char *oldstr = str;
- p = str = g_strconcat (g_hash_table_lookup (pkg->vars, prefix_variable), p + strlen (orig_prefix), NULL);
+ p = str = g_strconcat (g_hash_table_lookup (pkg->vars, prefix_variable),
+ p + strlen (pkg->orig_prefix), NULL);
g_free (oldstr);
}
-#endif
if (g_hash_table_lookup (pkg->vars, tag))
{
verbose_error ("Duplicate definition of variable '%s' in '%s'\n",
tag, path);
-
- exit (1);
+ if (parse_strict)
+ exit (1);
+ else
+ goto cleanup;
}
varname = g_strdup (tag);
@@ -1092,7 +1111,13 @@ parse_package_file (const char *path, gboolean ignore_requires,
debug_spew ("No pcfiledir determined for package\n");
pkg->pcfiledir = g_strdup ("???????");
}
-
+
+ if (pkg->vars == NULL)
+ pkg->vars = g_hash_table_new (g_str_hash, g_str_equal);
+
+ /* Variable storing directory of pc file */
+ g_hash_table_insert (pkg->vars, "pcfiledir", pkg->pcfiledir);
+
str = g_string_new ("");
while (read_one_line (f, str))
diff --git a/pkg-config-guide.html b/pkg-config-guide.html
index 0f6c72f..c666fe5 100644
--- a/pkg-config-guide.html
+++ b/pkg-config-guide.html
@@ -196,8 +196,8 @@ Cflags: -I${includedir}/foo</pre>
that is linking with your library. If the program will not be using the
symbols of the required library, it should not be linking directly to that
library. See the discussion of
- <a href="http://wiki.mandriva.com/en/Overlinking">overlinking</a> for a more
- thorough explanation.</p>
+ <a href="https://wiki.openmandriva.org/en/Overlinking_issues_in_packaging">overlinking</a>
+ for a more thorough explanation.</p>
<p>Since <tt>pkg-config</tt> always exposes the link flags of the
<tt>Requires</tt> libraries, these modules will become direct dependencies
@@ -342,6 +342,10 @@ $ pkg-config --modversion hello
projects.</p>
<ul>
+ <li><b>PKG_PREREQ(MIN-VERSION)</b>: Ensures that the version of the
+ <tt>pkg-config</tt> <tt>autoconf</tt> macros in use is at least
+ <tt>MIN-VERSION</tt>.</li>
+
<li><b>PKG_PROG_PKG_CONFIG([MIN-VERSION])</b>: Locates the
<tt>pkg-config</tt> tool on the system and checks the version for
compatibility.</li>
diff --git a/pkg-config.1 b/pkg-config.1
index dd4a8f8..11e6292 100644
--- a/pkg-config.1
+++ b/pkg-config.1
@@ -9,17 +9,20 @@ pkg-config \- Return metainformation about installed libraries
.SH SYNOPSIS
.PP
.B pkg-config
-[\-\-modversion] [\-\-version] [\-\-help] [\-\-print-errors]
+[\-\-modversion] [\-\-version] [\-\-help]
+[\-\-atleast-pkgconfig-version=VERSION]
+[\-\-print-errors] [\-\-short-errors]
[\-\-silence-errors] [\-\-errors-to-stdout] [\-\-debug]
[\-\-cflags] [\-\-libs] [\-\-libs-only-L]
[\-\-libs-only-l] [\-\-cflags-only-I]
+[\-\-libs-only-other] [\-\-cflags-only-other]
[\-\-variable=VARIABLENAME]
[\-\-define-variable=VARIABLENAME=VARIABLEVALUE]
[\-\-print-variables]
[\-\-uninstalled]
[\-\-exists] [\-\-atleast-version=VERSION] [\-\-exact-version=VERSION]
-[\-\-max-version=VERSION] [\-\-list\-all] [LIBRARIES...]
-[\-\-print-provides] [\-\-print-requires] [\-\-print-requires-private] [LIBRARIES...]
+[\-\-max-version=VERSION] [\-\-validate] [\-\-list\-all] [\-\-print-provides]
+[\-\-print-requires] [\-\-print-requires-private] [LIBRARIES...]
.SH DESCRIPTION
The \fIpkg-config\fP program is used to retrieve information about
@@ -71,6 +74,9 @@ Displays the version of
.I pkg-config
and terminates.
.TP
+.I "--atleast-pkgconfig-version=VERSION"
+Requires at least the given version of pkg-config.
+.TP
.I "--help"
Displays a help message and terminates.
.TP
@@ -86,6 +92,9 @@ alone (to just print errors encountered locating modules on the
command line) or with other options. The PKG_CONFIG_DEBUG_SPEW
environment variable overrides this option.
.TP
+.I "--short-errors"
+Print short error messages.
+.TP
.I "--silence-errors"
If one or more of the modules on the command line, or their
dependencies, are not found, or if an error occurs in parsing a
@@ -119,7 +128,10 @@ line.
.I "--cflags-only-I"
This prints the -I part of "--cflags". That is, it defines the header
search path but doesn't specify anything else.
-.TP
+.TP
+.I "--cflags-only-other"
+This prints parts of "--cflags" not covered by "--cflags-only-I".
+.TP
.I "--libs"
This option is identical to "--cflags", only it prints the link
flags. As with "--cflags", duplicate flags are merged (maintaining
@@ -136,6 +148,10 @@ the command line. Note that the union of "--libs-only-l" and
"--libs-only-L" may be smaller than "--libs", due to flags such as
-rdynamic.
.TP
+.I "--libs-only-other"
+This prints the parts of "--libs" not covered by "--libs-only-L" and
+"--libs-only-l", such as "--pthread".
+.TP
.I "--variable=VARIABLENAME"
This returns the value of a variable defined in a package's \fI.pc\fP
file. Most packages define the variable "prefix", for example, so you
@@ -198,6 +214,18 @@ constraint after each package name, for example:
Remember to use \-\-print-errors if you want error messages. When no
output options are supplied to \fIpkg-config\fP, \-\-exists is implied.
.TP
+.I "--validate"
+Checks the syntax of a package's
+.I .pc
+file for validity. This is the same as \-\-exists except that
+dependencies are not verified. This can be useful for package developers
+to test their
+.I .pc
+file prior to release:
+.nf
+ $ pkg-config --validate ./my-package.pc
+.fi
+.TP
.I "--msvc-syntax"
This option is available only on Windows. It causes \fIpkg-config\fP
to output -l and -L flags in the form recognized by the Microsoft
@@ -208,14 +236,40 @@ prints \fIfoo.lib\fP. Note that the --libs output consists of flags
for the linker, and should be placed on the cl command line after a
/link switch.
.TP
+.I "--define-prefix"
+.TQ
.I "--dont-define-prefix"
-This option is available only on Windows. It prevents \fIpkg-config\fP
-from automatically trying to override the value of the variable
-"prefix" in each .pc file.
+These options control whether
+.I pkg-config
+overrides the value of the variable
+.I prefix
+in each .pc file. With \-\-define-prefix,
+.I pkg-config
+uses the installed location of the .pc file to determine the
+prefix. \-\-dont-define-prefix prevents this behavior. The default is
+usually \-\-define-prefix.
+
+When this feature is enabled and a .pc file is found in a directory named
+.IR pkgconfig ,
+the prefix for that package is assumed to be the grandparent of the
+directory where the file was found, and the
+.I prefix
+variable is overridden for that file accordingly.
+
+If the value of a variable in a .pc file begins with the original,
+non-overridden, value of the
+.I prefix
+variable, then the overridden value of
+.I prefix
+is used instead. This allows the feature to work even when the variables
+have been expanded in the .pc file.
.TP
.I "--prefix-variable=PREFIX"
-Also this option is available only on Windows. It sets the name of the
-variable that \fIpkg-config\fP automatically sets as described above.
+Set the name of the variable that
+.I pkg-config
+overrides instead of
+.I prefix
+when using the \-\-define-prefix feature.
.TP
.I "--static"
Output libraries suitable for static linking. That means including
@@ -280,29 +334,65 @@ become -I/var/target/usr/include/libfoo with a PKG_CONFIG_SYSROOT_DIR
equal to /var/target (same rule apply to -L)
.TP
.I "PKG_CONFIG_LIBDIR"
-Replaces the default \fIpkg-config\fP search directory, usually \fI/usr/lib/pkgconfig\fP
+Replaces the default
+.I pkg-config
+search directory, usually
+.IR /usr/lib/pkgconfig : /usr/share/pkgconfig .
.\"
-.SH QUERYING PKG-CONFIG'S DEFAULTS
+.SH PKG-CONFIG DERIVED VARIABLES
.I pkg-config
-can be used to query itself for the default search path, version number
-and other information, for instance using:
+sets a few metadata variables that can be used in .pc files or queried
+at runtime.
+.TP
+.I pc_path
+The default search path used by
+.I pkg-config
+when searching for .pc files. This can be used in a query for the
+.I pkg-config
+module itself itself:
.nf
$ pkg-config --variable pc_path pkg-config
.fi
-or
+.TP
+.I pcfiledir
+The installed location of the .pc file. This can be used to query the
+location of the .pc file for a particular module, but it can also be
+used to make .pc files relocatable. For instance:
.nf
- $ pkg-config --modversion pkg-config
+prefix=${pcfiledir}/../..
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
.fi
+.TP
+.I pc_sysrootdir
+The sysroot directory set by the user. When the sysroot directory has
+not been set, this value is
+.IR / .
+See the
+.I PKG_CONFIG_SYSROOT_DIR
+environment variable for more details.
+.TP
+.I pc_top_builddir
+Location of the user's top build directory when calling
+.IR pkg-config.
+This is useful to dynamically set paths in uninstalled .pc files. See
+the
+.I PKG_CONFIG_TOP_BUILD_DIR
+environment variable for more details.
+.\"
.SH WINDOWS SPECIALITIES
-If a .pc file is found in a directory that matches the usual
-conventions (i.e., ends with \\lib\\pkgconfig or \\share\\pkgconfig),
-the prefix for that package is assumed to be the grandparent of the
-directory where the file was found, and the \fIprefix\fP variable is
-overridden for that file accordingly.
-
-If the value of a variable in a .pc file begins with the original,
-non-overridden, value of the \fIprefix\fP variable, then the overridden
-value of \fIprefix\fP is used instead.
+The
+.I pkg-config
+default search path is ignored on Windows. Instead, the search path is
+constructed by using the installed directory of
+.I pkg-config
+and then appending
+.I lib\epkgconfig
+and
+.IR share\epkgconfig .
+This can be augmented or replaced using the standard environment
+variables described above.
.\"
.SH AUTOCONF MACROS
.TP
@@ -333,12 +423,22 @@ VARIABLE-PREFIX will simply use the _LIBS and _CFLAGS variables set from
the previous usage without calling \fIpkg-config\fP again.
.\"
.TP
+.I "PKG_PREREQ(MIN-VERSION)"
+Checks that the version of the pkg-config autoconf macros in use is at
+least MIN-VERSION. This can be used to ensure a particular pkg-config
+macro will be available.
+.\"
+.TP
.I "PKG_PROG_PKG_CONFIG([MIN-VERSION])"
Defines the PKG_CONFIG variable to the best pkg-config available,
useful if you need pkg-config but don't want to use PKG_CHECK_MODULES.
.\"
.TP
+.I "PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])"
+Enables static linking through --static prior to calling
+PKG_CHECK_MODULES.
+.TP
.I "PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])"
Check to see whether a particular set of modules exists. Similar
diff --git a/pkg.c b/pkg.c
index a56149b..a8980f0 100644
--- a/pkg.c
+++ b/pkg.c
@@ -24,6 +24,7 @@
#include "pkg.h"
#include "parse.h"
+#include "rpmvercmp.h"
#ifdef HAVE_MALLOC_H
# include <malloc.h>
@@ -126,7 +127,7 @@ name_ends_in_uninstalled (const char *str)
* locations, ignoring duplicates
*/
static void
-scan_dir (const char *dirname)
+scan_dir (char *dirname)
{
DIR *dir;
struct dirent *dent;
@@ -159,16 +160,17 @@ scan_dir (const char *dirname)
#endif
dir = opendir (dirname_copy);
g_free (dirname_copy);
+
+ scanned_dir_count += 1;
+
if (!dir)
{
- debug_spew ("Cannot open directory '%s' in package search path: %s\n",
- dirname, g_strerror (errno));
+ debug_spew ("Cannot open directory #%i '%s' in package search path: %s\n",
+ scanned_dir_count, dirname, g_strerror (errno));
return;
}
- debug_spew ("Scanning directory '%s'\n", dirname);
-
- scanned_dir_count += 1;
+ debug_spew ("Scanning directory #%i '%s'\n", scanned_dir_count, dirname);
while ((dent = readdir (dir)))
{
@@ -176,7 +178,7 @@ scan_dir (const char *dirname)
if (ends_in_dotpc (dent->d_name))
{
- char *pkgname = g_malloc (len - 2);
+ char *pkgname = g_malloc (len - EXT_LEN + 1);
debug_spew ("File '%s' appears to be a .pc file\n", dent->d_name);
@@ -220,6 +222,7 @@ static Package *
add_virtual_pkgconfig_package (void)
{
Package *pkg = NULL;
+ gchar *path_quoted;
pkg = g_new0 (Package, 1);
@@ -232,7 +235,8 @@ add_virtual_pkgconfig_package (void)
if (pkg->vars == NULL)
pkg->vars = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (pkg->vars, "pc_path", pkg_config_pc_path);
+ path_quoted = g_shell_quote (pkg_config_pc_path);
+ g_hash_table_insert (pkg->vars, "pc_path", path_quoted);
debug_spew ("Adding virtual 'pkg-config' package to list of known packages\n");
g_hash_table_insert (packages, pkg->key, pkg);
@@ -916,7 +920,6 @@ verify_package (Package *pkg)
}
system_dir_iter = system_dir_iter->next;
}
- iter = iter->next;
}
g_list_free (system_directories);
@@ -988,6 +991,10 @@ packages_get_flags (GList *pkgs, FlagType flags)
g_free (cur);
}
+ /* Strip trailing space. */
+ if (str->len > 0 && str->str[str->len - 1] == ' ')
+ g_string_truncate (str, str->len - 1);
+
debug_spew ("returning flags string \"%s\"\n", str->str);
return g_string_free (str, FALSE);
}
@@ -1023,10 +1030,6 @@ package_get_var (Package *pkg,
if (varval == NULL && pkg->vars)
varval = g_strdup (g_hash_table_lookup (pkg->vars, var));
- /* Magic "pcfiledir" variable */
- if (varval == NULL && pkg->pcfiledir && strcmp (var, "pcfiledir") == 0)
- varval = g_strdup (pkg->pcfiledir);
-
return varval;
}
@@ -1037,6 +1040,7 @@ packages_get_var (GList *pkgs,
GList *tmp;
GString *str;
char *retval;
+ GError *error = NULL;
str = g_string_new ("");
@@ -1044,14 +1048,25 @@ packages_get_var (GList *pkgs,
while (tmp != NULL)
{
Package *pkg = tmp->data;
- char *var;
+ char *var, *unquoted_var;
var = package_get_var (pkg, varname);
-
if (var)
{
- g_string_append (str, var);
- g_string_append_c (str, ' ');
+ unquoted_var = g_shell_unquote (var, &error);
+ if (unquoted_var != NULL)
+ {
+ g_string_append (str, unquoted_var);
+ g_string_append_c (str, ' ');
+ g_free (unquoted_var);
+ }
+ else
+ {
+ verbose_error ("Couldn't unquote value of \"%s\": %s\n",
+ varname, error ? error->message : "unknown");
+ g_clear_error (&error);
+ }
+
g_free (var);
}
@@ -1067,109 +1082,6 @@ packages_get_var (GList *pkgs,
return retval;
}
-
-
-/* Stolen verbatim from rpm/lib/misc.c
- RPM is Copyright (c) 1998 by Red Hat Software, Inc.,
- and may be distributed under the terms of the GPL and LGPL.
-*/
-/* compare alpha and numeric segments of two versions */
-/* return 1: a is newer than b */
-/* 0: a and b are the same version */
-/* -1: b is newer than a */
-static int rpmvercmp(const char * a, const char * b) {
- char oldch1, oldch2;
- char * str1, * str2;
- char * one, * two;
- int rc;
- int isnum;
-
- /* easy comparison to see if versions are identical */
- if (!strcmp(a, b)) return 0;
-
- str1 = g_alloca(strlen(a) + 1);
- str2 = g_alloca(strlen(b) + 1);
-
- strcpy(str1, a);
- strcpy(str2, b);
-
- one = str1;
- two = str2;
-
- /* loop through each version segment of str1 and str2 and compare them */
- while (*one && *two) {
- while (*one && !isalnum((guchar)*one)) one++;
- while (*two && !isalnum((guchar)*two)) two++;
-
- /* If we ran to the end of either, we are finished with the loop */
- if (!(*one && *two)) break;
-
- str1 = one;
- str2 = two;
-
- /* grab first completely alpha or completely numeric segment */
- /* leave one and two pointing to the start of the alpha or numeric */
- /* segment and walk str1 and str2 to end of segment */
- if (isdigit((guchar)*str1)) {
- while (*str1 && isdigit((guchar)*str1)) str1++;
- while (*str2 && isdigit((guchar)*str2)) str2++;
- isnum = 1;
- } else {
- while (*str1 && isalpha((guchar)*str1)) str1++;
- while (*str2 && isalpha((guchar)*str2)) str2++;
- isnum = 0;
- }
-
- /* save character at the end of the alpha or numeric segment */
- /* so that they can be restored after the comparison */
- oldch1 = *str1;
- *str1 = '\0';
- oldch2 = *str2;
- *str2 = '\0';
-
- /* take care of the case where the two version segments are */
- /* different types: one numeric and one alpha */
- if (one == str1) return -1; /* arbitrary */
- /* XXX See patch #60884 (and details) from bugzilla #50977. */
- if (two == str2) return (isnum ? 1 : -1);
-
- if (isnum) {
- /* this used to be done by converting the digit segments */
- /* to ints using atoi() - it's changed because long */
- /* digit segments can overflow an int - this should fix that. */
-
- /* throw away any leading zeros - it's a number, right? */
- while (*one == '0') one++;
- while (*two == '0') two++;
-
- /* whichever number has more digits wins */
- if (strlen(one) > strlen(two)) return 1;
- if (strlen(two) > strlen(one)) return -1;
- }
-
- /* strcmp will return which one is greater - even if the two */
- /* segments are alpha or if they are numeric. don't return */
- /* if they are equal because there might be more segments to */
- /* compare */
- rc = strcmp(one, two);
- if (rc) return rc;
-
- /* restore character that was replaced by null above */
- *str1 = oldch1;
- one = str1;
- *str2 = oldch2;
- two = str2;
- }
-
- /* this catches the case where all numeric and alpha segments have */
- /* compared identically but the segment sepparating characters were */
- /* different */
- if ((!*one) && (!*two)) return 0;
-
- /* whichever version still has characters left over wins */
- if (!*one) return -1; else return 1;
-}
-
int
compare_versions (const char * a, const char *b)
{
diff --git a/pkg.h b/pkg.h
index 96943a1..c2e458a 100644
--- a/pkg.h
+++ b/pkg.h
@@ -45,17 +45,17 @@ typedef enum
ALWAYS_MATCH
} ComparisonType;
-typedef struct _Flag Flag;
-typedef struct _Package Package;
-typedef struct _RequiredVersion RequiredVersion;
+typedef struct Flag_ Flag;
+typedef struct Package_ Package;
+typedef struct RequiredVersion_ RequiredVersion;
-struct _Flag
+struct Flag_
{
FlagType type;
char *arg;
};
-struct _RequiredVersion
+struct RequiredVersion_
{
char *name;
ComparisonType comparison;
@@ -63,7 +63,7 @@ struct _RequiredVersion
Package *owner;
};
-struct _Package
+struct Package_
{
char *key; /* filename name */
char *name; /* human-readable name */
@@ -85,6 +85,7 @@ struct _Package
int libs_num; /* Number of times the "Libs" header has been seen */
int libs_private_num; /* Number of times the "Libs.private" header has been seen */
gboolean in_requires_chain; /* package is in current Requires chain */
+ char *orig_prefix; /* original prefix value before redefinition */
};
Package *get_package (const char *name);
@@ -133,13 +134,16 @@ extern char *pcsysrootdir;
*/
extern char *pkg_config_pc_path;
-#ifdef G_OS_WIN32
-/* If TRUE, do not automatically define "prefix" while
- * parsing each .pc file */
-extern gboolean dont_define_prefix;
+/* Exit on parse errors if TRUE. */
+extern gboolean parse_strict;
+
+/* If TRUE, define "prefix" in .pc files at runtime. */
+extern gboolean define_prefix;
+
/* The name of the variable that acts as prefix, unless it is "prefix" */
extern char *prefix_variable;
+#ifdef G_OS_WIN32
/* If TRUE, output flags in MSVC syntax. */
extern gboolean msvc_syntax;
#endif
diff --git a/pkg.m4 b/pkg.m4
deleted file mode 100644
index c5b26b5..0000000
--- a/pkg.m4
+++ /dev/null
@@ -1,214 +0,0 @@
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=m4_default([$1], [0.9.0])
- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- PKG_CONFIG=""
- fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
- m4_default([$2], [:])
-m4_ifvaln([$3], [else
- $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
- pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
- PKG_CHECK_EXISTS([$3],
- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes ],
- [pkg_failed=yes])
- else
- pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
- _PKG_SHORT_ERRORS_SUPPORTED
- if test $_pkg_short_errors_supported = yes; then
- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
- $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
- m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
- ])
-elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
- m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
- ])
-else
- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
- AC_MSG_RESULT([yes])
- $3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
-AC_DEFUN([PKG_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([pkgconfigdir],
- [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
- [with_pkgconfigdir=]pkg_default)
-AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
-
-
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
-AC_DEFUN([PKG_NOARCH_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([noarch-pkgconfigdir],
- [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
- [with_noarch_pkgconfigdir=]pkg_default)
-AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
-
-
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
-AC_DEFUN([PKG_CHECK_VAR],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
-
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
-AS_VAR_COPY([$1], [pkg_cv_][$1])
-
-AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
diff --git a/pkg.m4.in b/pkg.m4.in
new file mode 100644
index 0000000..ecc86b1
--- /dev/null
+++ b/pkg.m4.in
@@ -0,0 +1,275 @@
+dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+dnl serial 11 (pkg-config-@VERSION@)
+dnl
+dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [@VERSION@])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+ [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+ [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+ [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
diff --git a/rpmvercmp.c b/rpmvercmp.c
new file mode 100644
index 0000000..50d56ac
--- /dev/null
+++ b/rpmvercmp.c
@@ -0,0 +1,131 @@
+/*
+ * This code is taken from the RPM package manager.
+ *
+ * RPM is Copyright (c) 1998 by Red Hat Software, Inc.,
+ * and may be distributed under the terms of the GPL and LGPL.
+ * See http://rpm.org/gitweb?p=rpm.git;a=blob_plain;f=COPYING;hb=HEAD
+ *
+ * The code should follow upstream as closely as possible.
+ * See http://rpm.org/gitweb?p=rpm.git;a=blob_plain;f=lib/rpmvercmp.c;hb=HEAD
+ *
+ * Currently the only difference as a policy is that upstream uses C99
+ * features and pkg-config does not require a C99 compiler yet.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "rpmvercmp.h"
+
+#include <glib.h>
+#include <string.h>
+#include <ctype.h>
+
+/* macros to help code look more like upstream */
+#define rstreq(a, b) (strcmp(a, b) == 0)
+#define risalnum(c) isalnum((guchar)(c))
+#define risdigit(c) isdigit((guchar)(c))
+#define risalpha(c) isalpha((guchar)(c))
+
+/* compare alpha and numeric segments of two versions */
+/* return 1: a is newer than b */
+/* 0: a and b are the same version */
+/* -1: b is newer than a */
+int rpmvercmp(const char * a, const char * b)
+{
+ char oldch1, oldch2;
+ char * str1, * str2;
+ char * one, * two;
+ int rc;
+ int isnum;
+
+ /* easy comparison to see if versions are identical */
+ if (rstreq(a, b)) return 0;
+
+ str1 = g_alloca(strlen(a) + 1);
+ str2 = g_alloca(strlen(b) + 1);
+
+ strcpy(str1, a);
+ strcpy(str2, b);
+
+ one = str1;
+ two = str2;
+
+ /* loop through each version segment of str1 and str2 and compare them */
+ while (*one && *two) {
+ while (*one && !risalnum(*one)) one++;
+ while (*two && !risalnum(*two)) two++;
+
+ /* If we ran to the end of either, we are finished with the loop */
+ if (!(*one && *two)) break;
+
+ str1 = one;
+ str2 = two;
+
+ /* grab first completely alpha or completely numeric segment */
+ /* leave one and two pointing to the start of the alpha or numeric */
+ /* segment and walk str1 and str2 to end of segment */
+ if (risdigit(*str1)) {
+ while (*str1 && risdigit(*str1)) str1++;
+ while (*str2 && risdigit(*str2)) str2++;
+ isnum = 1;
+ } else {
+ while (*str1 && risalpha(*str1)) str1++;
+ while (*str2 && risalpha(*str2)) str2++;
+ isnum = 0;
+ }
+
+ /* save character at the end of the alpha or numeric segment */
+ /* so that they can be restored after the comparison */
+ oldch1 = *str1;
+ *str1 = '\0';
+ oldch2 = *str2;
+ *str2 = '\0';
+
+ /* this cannot happen, as we previously tested to make sure that */
+ /* the first string has a non-null segment */
+ if (one == str1) return -1; /* arbitrary */
+
+ /* take care of the case where the two version segments are */
+ /* different types: one numeric, the other alpha (i.e. empty) */
+ /* numeric segments are always newer than alpha segments */
+ /* XXX See patch #60884 (and details) from bugzilla #50977. */
+ if (two == str2) return (isnum ? 1 : -1);
+
+ if (isnum) {
+ /* this used to be done by converting the digit segments */
+ /* to ints using atoi() - it's changed because long */
+ /* digit segments can overflow an int - this should fix that. */
+
+ /* throw away any leading zeros - it's a number, right? */
+ while (*one == '0') one++;
+ while (*two == '0') two++;
+
+ /* whichever number has more digits wins */
+ if (strlen(one) > strlen(two)) return 1;
+ if (strlen(two) > strlen(one)) return -1;
+ }
+
+ /* strcmp will return which one is greater - even if the two */
+ /* segments are alpha or if they are numeric. don't return */
+ /* if they are equal because there might be more segments to */
+ /* compare */
+ rc = strcmp(one, two);
+ if (rc) return (rc < 1 ? -1 : 1);
+
+ /* restore character that was replaced by null above */
+ *str1 = oldch1;
+ one = str1;
+ *str2 = oldch2;
+ two = str2;
+ }
+
+ /* this catches the case where all numeric and alpha segments have */
+ /* compared identically but the segment sepparating characters were */
+ /* different */
+ if ((!*one) && (!*two)) return 0;
+
+ /* whichever version still has characters left over wins */
+ if (!*one) return -1; else return 1;
+}
diff --git a/rpmvercmp.h b/rpmvercmp.h
new file mode 100644
index 0000000..c08c1bc
--- /dev/null
+++ b/rpmvercmp.h
@@ -0,0 +1,19 @@
+/*
+ * This code is taken from the RPM package manager.
+ *
+ * RPM is Copyright (c) 1998 by Red Hat Software, Inc.,
+ * and may be distributed under the terms of the GPL and LGPL.
+ * See http://rpm.org/gitweb?p=rpm.git;a=blob_plain;f=COPYING;hb=HEAD
+ *
+ * The code should follow upstream as closely as possible.
+ * See http://rpm.org/gitweb?p=rpm.git;a=blob_plain;f=lib/rpmlib.h;hb=HEAD
+ */
+
+/*
+ * Segmented string compare for version or release strings.
+ *
+ * @param a 1st string
+ * @param b 2nd string
+ * @return +1 if a is "newer", 0 if equal, -1 if b is "newer"
+ */
+int rpmvercmp(const char * a, const char * b);