Project import generated by Copybara.

GitOrigin-RevId: 476af6c46a320325a2c516b0e6610867279a913a
diff --git a/arm-linux-a5s.cache b/arm-linux-a5s.cache
new file mode 100644
index 0000000..e65caa9
--- /dev/null
+++ b/arm-linux-a5s.cache
@@ -0,0 +1,394 @@
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+ac_cv_alignof_guint32=${ac_cv_alignof_guint32=4}
+ac_cv_alignof_guint64=${ac_cv_alignof_guint64=8}
+ac_cv_alignof_unsigned_long=${ac_cv_alignof_unsigned_long=4}
+ac_cv_build=${ac_cv_build=x86_64-unknown-linux-gnu}
+ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
+ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu=yes}
+ac_cv_c_const=${ac_cv_c_const=yes}
+ac_cv_cxx_compiler_gnu=${ac_cv_cxx_compiler_gnu=yes}
+ac_cv_env_CCC_set=
+ac_cv_env_CCC_value=
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=set
+ac_cv_env_CFLAGS_value='-mtune=arm1136j-s -march=armv6 -Os'
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXCPP_set=
+ac_cv_env_CXXCPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_DBUS1_CFLAGS_set=
+ac_cv_env_DBUS1_CFLAGS_value=
+ac_cv_env_DBUS1_LIBS_set=
+ac_cv_env_DBUS1_LIBS_value=
+ac_cv_env_GTKDOC_DEPS_CFLAGS_set=
+ac_cv_env_GTKDOC_DEPS_CFLAGS_value=
+ac_cv_env_GTKDOC_DEPS_LIBS_set=
+ac_cv_env_GTKDOC_DEPS_LIBS_value=
+ac_cv_env_LDFLAGS_set=set
+ac_cv_env_LDFLAGS_value='-s -Wl,-rpath,/src/packages/glib/dist/usr/lib -Wl,-rpath,/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib '
+ac_cv_env_LIBELF_CFLAGS_set=
+ac_cv_env_LIBELF_CFLAGS_value=
+ac_cv_env_LIBELF_LIBS_set=
+ac_cv_env_LIBELF_LIBS_value=
+ac_cv_env_LIBFFI_CFLAGS_set=set
+ac_cv_env_LIBFFI_CFLAGS_value=-I/src/packages/glib/dist/usr/lib/libffi-3.0.13/include
+ac_cv_env_LIBFFI_LIBS_set=set
+ac_cv_env_LIBFFI_LIBS_value='-L/src/packages/glib/dist/usr/lib -lffi'
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_PCRE_CFLAGS_set=
+ac_cv_env_PCRE_CFLAGS_value=
+ac_cv_env_PCRE_LIBS_set=
+ac_cv_env_PCRE_LIBS_value=
+ac_cv_env_PKG_CONFIG_LIBDIR_set=
+ac_cv_env_PKG_CONFIG_LIBDIR_value=
+ac_cv_env_PKG_CONFIG_PATH_set=
+ac_cv_env_PKG_CONFIG_PATH_value=
+ac_cv_env_PKG_CONFIG_set=
+ac_cv_env_PKG_CONFIG_value=
+ac_cv_env_PYTHON_set=
+ac_cv_env_PYTHON_value=
+ac_cv_env_ZLIB_CFLAGS_set=set
+ac_cv_env_ZLIB_CFLAGS_value=-I/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/include
+ac_cv_env_ZLIB_LIBS_set=set
+ac_cv_env_ZLIB_LIBS_value='-L/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib  -lz'
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=set
+ac_cv_env_host_alias_value=arm-none-linux-gnueabi
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_func_NSLinkModule=${ac_cv_func_NSLinkModule=no}
+ac_cv_func__NSGetEnviron=${ac_cv_func__NSGetEnviron=no}
+ac_cv_func__doprnt=${ac_cv_func__doprnt=no}
+ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes}
+ac_cv_func_atexit=${ac_cv_func_atexit=yes}
+ac_cv_func_bind_textdomain_codeset=${ac_cv_func_bind_textdomain_codeset=yes}
+ac_cv_func_chown=${ac_cv_func_chown=yes}
+ac_cv_func_clock_gettime=${ac_cv_func_clock_gettime=no}
+ac_cv_func_dcgettext=${ac_cv_func_dcgettext=yes}
+ac_cv_func_dlerror=${ac_cv_func_dlerror=yes}
+ac_cv_func_dlopen=${ac_cv_func_dlopen=no}
+ac_cv_func_endmntent=${ac_cv_func_endmntent=yes}
+ac_cv_func_endservent=${ac_cv_func_endservent=yes}
+ac_cv_func_fallocate=${ac_cv_func_fallocate=yes}
+ac_cv_func_fchmod=${ac_cv_func_fchmod=yes}
+ac_cv_func_fchown=${ac_cv_func_fchown=yes}
+ac_cv_func_fdwalk=${ac_cv_func_fdwalk=no}
+ac_cv_func_fsync=${ac_cv_func_fsync=yes}
+ac_cv_func_getc_unlocked=${ac_cv_func_getc_unlocked=yes}
+ac_cv_func_getcwd=${ac_cv_func_getcwd=yes}
+ac_cv_func_getfsstat=${ac_cv_func_getfsstat=no}
+ac_cv_func_getgrgid=${ac_cv_func_getgrgid=yes}
+ac_cv_func_getmntent_r=${ac_cv_func_getmntent_r=yes}
+ac_cv_func_getprotobyname_r=${ac_cv_func_getprotobyname_r=yes}
+ac_cv_func_getpwuid=${ac_cv_func_getpwuid=yes}
+ac_cv_func_getresuid=${ac_cv_func_getresuid=yes}
+ac_cv_func_getvfsstat=${ac_cv_func_getvfsstat=no}
+ac_cv_func_gmtime_r=${ac_cv_func_gmtime_r=yes}
+ac_cv_func_hasmntopt=${ac_cv_func_hasmntopt=yes}
+ac_cv_func_iconv_open=${ac_cv_func_iconv_open=yes}
+ac_cv_func_if_indextoname=${ac_cv_func_if_indextoname=yes}
+ac_cv_func_if_nametoindex=${ac_cv_func_if_nametoindex=yes}
+ac_cv_func_inotify_init1=${ac_cv_func_inotify_init1=yes}
+ac_cv_func_issetugid=${ac_cv_func_issetugid=no}
+ac_cv_func_lchmod=${ac_cv_func_lchmod=no}
+ac_cv_func_lchown=${ac_cv_func_lchown=yes}
+ac_cv_func_link=${ac_cv_func_link=yes}
+ac_cv_func_localtime_r=${ac_cv_func_localtime_r=yes}
+ac_cv_func_lstat=${ac_cv_func_lstat=yes}
+ac_cv_func_memalign=${ac_cv_func_memalign=yes}
+ac_cv_func_memmem=${ac_cv_func_memmem=yes}
+ac_cv_func_memmove=${ac_cv_func_memmove=yes}
+ac_cv_func_mmap=${ac_cv_func_mmap=yes}
+ac_cv_func_newlocale=${ac_cv_func_newlocale=yes}
+ac_cv_func_on_exit=${ac_cv_func_on_exit=yes}
+ac_cv_func_pipe2=${ac_cv_func_pipe2=yes}
+ac_cv_func_poll=${ac_cv_func_poll=yes}
+ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
+ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
+ac_cv_func_posix_memalign=${ac_cv_func_posix_memalign=yes}
+ac_cv_func_printf_unix98=${ac_cv_func_printf_unix98=no}
+ac_cv_func_prlimit=${ac_cv_func_prlimit=yes}
+ac_cv_func_readlink=${ac_cv_func_readlink=yes}
+ac_cv_func_setenv=${ac_cv_func_setenv=yes}
+ac_cv_func_setlocale=${ac_cv_func_setlocale=yes}
+ac_cv_func_setmntent=${ac_cv_func_setmntent=yes}
+ac_cv_func_snprintf=${ac_cv_func_snprintf=yes}
+ac_cv_func_snprintf_c99=${ac_cv_func_snprintf_c99=no}
+ac_cv_func_socket=${ac_cv_func_socket=yes}
+ac_cv_func_splice=${ac_cv_func_splice=yes}
+ac_cv_func_statfs=${ac_cv_func_statfs=yes}
+ac_cv_func_statvfs=${ac_cv_func_statvfs=no}
+ac_cv_func_stpcpy=${ac_cv_func_stpcpy=yes}
+ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp=yes}
+ac_cv_func_strerror=${ac_cv_func_strerror=yes}
+ac_cv_func_strncasecmp=${ac_cv_func_strncasecmp=yes}
+ac_cv_func_strsignal=${ac_cv_func_strsignal=yes}
+ac_cv_func_strtod_l=${ac_cv_func_strtod_l=yes}
+ac_cv_func_strtoll_l=${ac_cv_func_strtoll_l=yes}
+ac_cv_func_strtoull_l=${ac_cv_func_strtoull_l=yes}
+ac_cv_func_symlink=${ac_cv_func_symlink=yes}
+ac_cv_func_sysctlbyname=${ac_cv_func_sysctlbyname=no}
+ac_cv_func_timegm=${ac_cv_func_timegm=yes}
+ac_cv_func_unsetenv=${ac_cv_func_unsetenv=yes}
+ac_cv_func_uselocale=${ac_cv_func_uselocale=yes}
+ac_cv_func_utimes=${ac_cv_func_utimes=yes}
+ac_cv_func_valloc=${ac_cv_func_valloc=yes}
+ac_cv_func_vasprintf=${ac_cv_func_vasprintf=yes}
+ac_cv_func_vprintf=${ac_cv_func_vprintf=yes}
+ac_cv_func_vsnprintf=${ac_cv_func_vsnprintf=yes}
+ac_cv_func_vsnprintf_c99=${ac_cv_func_vsnprintf_c99=no}
+ac_cv_func_wcslen=${ac_cv_func_wcslen=yes}
+ac_cv_gnu_library_2_1=${ac_cv_gnu_library_2_1=yes}
+ac_cv_header_crt_externs_h=${ac_cv_header_crt_externs_h=no}
+ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h=yes}
+ac_cv_header_dirent_h=${ac_cv_header_dirent_h=yes}
+ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h=yes}
+ac_cv_header_float_h=${ac_cv_header_float_h=yes}
+ac_cv_header_fstab_h=${ac_cv_header_fstab_h=yes}
+ac_cv_header_grp_h=${ac_cv_header_grp_h=yes}
+ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h=yes}
+ac_cv_header_libelf_h=${ac_cv_header_libelf_h=no}
+ac_cv_header_libintl_h=${ac_cv_header_libintl_h=yes}
+ac_cv_header_limits_h=${ac_cv_header_limits_h=yes}
+ac_cv_header_linux_magic_h=${ac_cv_header_linux_magic_h=yes}
+ac_cv_header_linux_netlink_h=${ac_cv_header_linux_netlink_h=yes}
+ac_cv_header_locale_h=${ac_cv_header_locale_h=yes}
+ac_cv_header_malloc_h=${ac_cv_header_malloc_h=yes}
+ac_cv_header_memory_h=${ac_cv_header_memory_h=yes}
+ac_cv_header_mntent_h=${ac_cv_header_mntent_h=yes}
+ac_cv_header_pwd_h=${ac_cv_header_pwd_h=yes}
+ac_cv_header_sched_h=${ac_cv_header_sched_h=yes}
+ac_cv_header_stdc=${ac_cv_header_stdc=yes}
+ac_cv_header_stddef_h=${ac_cv_header_stddef_h=yes}
+ac_cv_header_stdint_h=${ac_cv_header_stdint_h=yes}
+ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes}
+ac_cv_header_string_h=${ac_cv_header_string_h=yes}
+ac_cv_header_strings_h=${ac_cv_header_strings_h=yes}
+ac_cv_header_sys_event_h=${ac_cv_header_sys_event_h=no}
+ac_cv_header_sys_filio_h=${ac_cv_header_sys_filio_h=no}
+ac_cv_header_sys_inotify_h=${ac_cv_header_sys_inotify_h=yes}
+ac_cv_header_sys_mkdev_h=${ac_cv_header_sys_mkdev_h=no}
+ac_cv_header_sys_mntctl_h=${ac_cv_header_sys_mntctl_h=no}
+ac_cv_header_sys_mnttab_h=${ac_cv_header_sys_mnttab_h=no}
+ac_cv_header_sys_mount_h=${ac_cv_header_sys_mount_h=yes}
+ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h=yes}
+ac_cv_header_sys_poll_h=${ac_cv_header_sys_poll_h=yes}
+ac_cv_header_sys_prctl_h=${ac_cv_header_sys_prctl_h=yes}
+ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h=yes}
+ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h=yes}
+ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h=yes}
+ac_cv_header_sys_statfs_h=${ac_cv_header_sys_statfs_h=yes}
+ac_cv_header_sys_statvfs_h=${ac_cv_header_sys_statvfs_h=yes}
+ac_cv_header_sys_sysctl_h=${ac_cv_header_sys_sysctl_h=yes}
+ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h=yes}
+ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h=yes}
+ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h=yes}
+ac_cv_header_sys_uio_h=${ac_cv_header_sys_uio_h=yes}
+ac_cv_header_sys_vfs_h=${ac_cv_header_sys_vfs_h=yes}
+ac_cv_header_sys_vfstab_h=${ac_cv_header_sys_vfstab_h=no}
+ac_cv_header_sys_vmount_h=${ac_cv_header_sys_vmount_h=no}
+ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h=yes}
+ac_cv_header_sys_xattr_h=${ac_cv_header_sys_xattr_h=yes}
+ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes}
+ac_cv_header_values_h=${ac_cv_header_values_h=yes}
+ac_cv_header_xlocale_h=${ac_cv_header_xlocale_h=yes}
+ac_cv_host=${ac_cv_host=arm-none-linux-gnueabi}
+ac_cv_lib_c_getxattr=${ac_cv_lib_c_getxattr=yes}
+ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=yes}
+ac_cv_lib_dl_dlsym=${ac_cv_lib_dl_dlsym=yes}
+ac_cv_lib_elf_elf_begin=${ac_cv_lib_elf_elf_begin=no}
+ac_cv_lib_elf_elf_getshdrnum=${ac_cv_lib_elf_elf_getshdrnum=no}
+ac_cv_lib_elf_elf_getshdrstrndx=${ac_cv_lib_elf_elf_getshdrstrndx=no}
+ac_cv_lib_fam_FAMOpen=${ac_cv_lib_fam_FAMOpen=no}
+ac_cv_lib_rt_clock_gettime=${ac_cv_lib_rt_clock_gettime=yes}
+ac_cv_lib_selinux_is_selinux_enabled=${ac_cv_lib_selinux_is_selinux_enabled=no}
+ac_cv_member_struct_dirent_d_type=${ac_cv_member_struct_dirent_d_type=yes}
+ac_cv_member_struct_stat_st_atim_tv_nsec=${ac_cv_member_struct_stat_st_atim_tv_nsec=yes}
+ac_cv_member_struct_stat_st_atimensec=${ac_cv_member_struct_stat_st_atimensec=no}
+ac_cv_member_struct_stat_st_blksize=${ac_cv_member_struct_stat_st_blksize=yes}
+ac_cv_member_struct_stat_st_blocks=${ac_cv_member_struct_stat_st_blocks=yes}
+ac_cv_member_struct_stat_st_ctim_tv_nsec=${ac_cv_member_struct_stat_st_ctim_tv_nsec=yes}
+ac_cv_member_struct_stat_st_ctimensec=${ac_cv_member_struct_stat_st_ctimensec=no}
+ac_cv_member_struct_stat_st_mtim_tv_nsec=${ac_cv_member_struct_stat_st_mtim_tv_nsec=yes}
+ac_cv_member_struct_stat_st_mtimensec=${ac_cv_member_struct_stat_st_mtimensec=no}
+ac_cv_member_struct_statfs_f_bavail=${ac_cv_member_struct_statfs_f_bavail=yes}
+ac_cv_member_struct_statfs_f_fstypename=${ac_cv_member_struct_statfs_f_fstypename=no}
+ac_cv_member_struct_statvfs_f_basetype=${ac_cv_member_struct_statvfs_f_basetype=no}
+ac_cv_member_struct_statvfs_f_fstypename=${ac_cv_member_struct_statvfs_f_fstypename=no}
+ac_cv_member_struct_tm___tm_gmtoff=${ac_cv_member_struct_tm___tm_gmtoff=no}
+ac_cv_member_struct_tm_tm_gmtoff=${ac_cv_member_struct_tm_tm_gmtoff=yes}
+ac_cv_objext=${ac_cv_objext=o}
+ac_cv_path_EGREP=${ac_cv_path_EGREP='/bin/grep -E'}
+ac_cv_path_FGREP=${ac_cv_path_FGREP='/bin/grep -F'}
+ac_cv_path_GLIB_COMPILE_RESOURCES=${ac_cv_path_GLIB_COMPILE_RESOURCES=/usr/bin/glib-compile-resources}
+ac_cv_path_GLIB_COMPILE_SCHEMAS=${ac_cv_path_GLIB_COMPILE_SCHEMAS=/usr/bin/glib-compile-schemas}
+ac_cv_path_GLIB_GENMARSHAL=${ac_cv_path_GLIB_GENMARSHAL=/usr/bin/glib-genmarshal}
+ac_cv_path_GMSGFMT=${ac_cv_path_GMSGFMT=/usr/bin/msgfmt}
+ac_cv_path_GREP=${ac_cv_path_GREP=/bin/grep}
+ac_cv_path_MSGFMT=${ac_cv_path_MSGFMT=/usr/bin/msgfmt}
+ac_cv_path_PERL_PATH=${ac_cv_path_PERL_PATH=/usr/bin/perl}
+ac_cv_path_PYTHON=${ac_cv_path_PYTHON=/usr/bin/python}
+ac_cv_path_SED=${ac_cv_path_SED=/bin/sed}
+ac_cv_path_XGETTEXT=${ac_cv_path_XGETTEXT=/usr/bin/xgettext}
+ac_cv_path_XMLCATALOG=${ac_cv_path_XMLCATALOG=no}
+ac_cv_path_ac_pt_PKG_CONFIG=${ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config}
+ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'}
+ac_cv_path_mkdir=${ac_cv_path_mkdir=/bin/mkdir}
+ac_cv_prog_AR=${ac_cv_prog_AR=arm-none-linux-gnueabi-ar}
+ac_cv_prog_AWK=${ac_cv_prog_AWK=gawk}
+ac_cv_prog_CC=${ac_cv_prog_CC=arm-none-linux-gnueabi-gcc}
+ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-none-linux-gnueabi-gcc -E'}
+ac_cv_prog_CXX=${ac_cv_prog_CXX=arm-none-linux-gnueabi-c++}
+ac_cv_prog_CXXCPP=${ac_cv_prog_CXXCPP='arm-none-linux-gnueabi-c++ -E'}
+ac_cv_prog_DBUS_DAEMON=${ac_cv_prog_DBUS_DAEMON=dbus-daemon}
+ac_cv_prog_OBJDUMP=${ac_cv_prog_OBJDUMP=arm-none-linux-gnueabi-objdump}
+ac_cv_prog_PERL=${ac_cv_prog_PERL=perl}
+ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=arm-none-linux-gnueabi-ranlib}
+ac_cv_prog_STRIP=${ac_cv_prog_STRIP=arm-none-linux-gnueabi-strip}
+ac_cv_prog_ac_ct_MANIFEST_TOOL=${ac_cv_prog_ac_ct_MANIFEST_TOOL=mt}
+ac_cv_prog_cc_c89=${ac_cv_prog_cc_c89=}
+ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes}
+ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g=yes}
+ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes}
+ac_cv_search_opendir=${ac_cv_search_opendir='none required'}
+ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sys_file_offset_bits=${ac_cv_sys_file_offset_bits=64}
+ac_cv_sys_largefile_CC=${ac_cv_sys_largefile_CC=no}
+ac_cv_type_guint32=${ac_cv_type_guint32=yes}
+ac_cv_type_guint64=${ac_cv_type_guint64=yes}
+ac_cv_type_long_long=${ac_cv_type_long_long=yes}
+ac_cv_type_ptrdiff_t=${ac_cv_type_ptrdiff_t=yes}
+ac_cv_type_sig_atomic_t=${ac_cv_type_sig_atomic_t=yes}
+ac_cv_type_size_t=${ac_cv_type_size_t=yes}
+ac_cv_type_struct_ip_mreqn=${ac_cv_type_struct_ip_mreqn=yes}
+ac_cv_type_unsigned_long=${ac_cv_type_unsigned_long=yes}
+ac_cv_working_alloca_h=${ac_cv_working_alloca_h=yes}
+am_cv_CC_dependencies_compiler_type=${am_cv_CC_dependencies_compiler_type=gcc3}
+am_cv_CXX_dependencies_compiler_type=${am_cv_CXX_dependencies_compiler_type=gcc3}
+am_cv_langinfo_codeset=${am_cv_langinfo_codeset=yes}
+am_cv_make_support_nested_variables=${am_cv_make_support_nested_variables=yes}
+am_cv_pathless_PYTHON=${am_cv_pathless_PYTHON=python}
+am_cv_prog_cc_c_o=${am_cv_prog_cc_c_o=yes}
+am_cv_prog_tar_ustar=${am_cv_prog_tar_ustar=gnutar}
+am_cv_python_platform=${am_cv_python_platform=linux2}
+test "${am_cv_python_pyexecdir+set}" = set || am_cv_python_pyexecdir='${exec_prefix}/lib/python2.7/dist-packages'
+test "${am_cv_python_pythondir+set}" = set || am_cv_python_pythondir='${prefix}/lib/python2.7/dist-packages'
+am_cv_python_version=${am_cv_python_version=2.7}
+am_cv_val_LC_MESSAGES=${am_cv_val_LC_MESSAGES=yes}
+bh_cv_c_signed=${bh_cv_c_signed=yes}
+cc_cv_CFLAGS__Wall=${cc_cv_CFLAGS__Wall=yes}
+cc_cv_CFLAGS__Werror_declaration_after_statement=${cc_cv_CFLAGS__Werror_declaration_after_statement=yes}
+cc_cv_CFLAGS__Werror_format_2=${cc_cv_CFLAGS__Werror_format_2=yes}
+cc_cv_CFLAGS__Werror_format_security=${cc_cv_CFLAGS__Werror_format_security=no}
+cc_cv_CFLAGS__Werror_implicit_function_declaration=${cc_cv_CFLAGS__Werror_implicit_function_declaration=yes}
+cc_cv_CFLAGS__Werror_init_self=${cc_cv_CFLAGS__Werror_init_self=yes}
+cc_cv_CFLAGS__Werror_missing_include_dirs=${cc_cv_CFLAGS__Werror_missing_include_dirs=yes}
+cc_cv_CFLAGS__Werror_missing_prototypes=${cc_cv_CFLAGS__Werror_missing_prototypes=yes}
+cc_cv_CFLAGS__Werror_pointer_arith=${cc_cv_CFLAGS__Werror_pointer_arith=yes}
+cc_cv_CFLAGS__Wstrict_prototypes=${cc_cv_CFLAGS__Wstrict_prototypes=yes}
+g_cv_support_dowhile_macros=${g_cv_support_dowhile_macros=yes}
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_compliant_posix_memalign=${glib_cv_compliant_posix_memalign=0}
+glib_cv_eventfd=${glib_cv_eventfd=yes}
+glib_cv_futex=${glib_cv_futex=yes}
+glib_cv_g_atomic_lock_free=${glib_cv_g_atomic_lock_free=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_have_libc_enable_secure=${glib_cv_have_libc_enable_secure=yes}
+glib_cv_have_strlcpy=${glib_cv_have_strlcpy=no}
+glib_cv_langinfo_codeset=${glib_cv_langinfo_codeset=yes}
+glib_cv_langinfo_outdigit=${glib_cv_langinfo_outdigit=yes}
+glib_cv_langinfo_time=${glib_cv_langinfo_time=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_copy=${glib_cv_va_copy=yes}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv_value_AF_INET6=${glib_cv_value_AF_INET6=10}
+glib_cv_value_AF_INET=${glib_cv_value_AF_INET=2}
+glib_cv_value_AF_UNIX=${glib_cv_value_AF_UNIX=1}
+glib_cv_value_MSG_DONTROUTE=${glib_cv_value_MSG_DONTROUTE=4}
+glib_cv_value_MSG_OOB=${glib_cv_value_MSG_OOB=1}
+glib_cv_value_MSG_PEEK=${glib_cv_value_MSG_PEEK=2}
+glib_cv_value_POLLERR=${glib_cv_value_POLLERR=8}
+glib_cv_value_POLLHUP=${glib_cv_value_POLLHUP=16}
+glib_cv_value_POLLIN=${glib_cv_value_POLLIN=1}
+glib_cv_value_POLLNVAL=${glib_cv_value_POLLNVAL=32}
+glib_cv_value_POLLOUT=${glib_cv_value_POLLOUT=4}
+glib_cv_value_POLLPRI=${glib_cv_value_POLLPRI=2}
+gt_cv_c_long_double=${gt_cv_c_long_double=yes}
+gt_cv_c_wchar_t=${gt_cv_c_wchar_t=yes}
+gt_cv_c_wint_t=${gt_cv_c_wint_t=yes}
+gt_cv_func_dgettext_libc=${gt_cv_func_dgettext_libc=yes}
+gt_cv_func_dgettext_libintl=${gt_cv_func_dgettext_libintl=no}
+gt_cv_func_ngettext_libc=${gt_cv_func_ngettext_libc=yes}
+gt_cv_have_gettext=${gt_cv_have_gettext=yes}
+jm_ac_cv_header_inttypes_h=${jm_ac_cv_header_inttypes_h=yes}
+jm_ac_cv_header_stdint_h=${jm_ac_cv_header_stdint_h=yes}
+lt_cv_ar_at_file=${lt_cv_ar_at_file=@}
+lt_cv_archive_cmds_need_lc=${lt_cv_archive_cmds_need_lc=no}
+lt_cv_deplibs_check_method=${lt_cv_deplibs_check_method=pass_all}
+lt_cv_file_magic_cmd=${lt_cv_file_magic_cmd='$MAGIC_CMD'}
+lt_cv_file_magic_test_file=${lt_cv_file_magic_test_file=}
+lt_cv_ld_reload_flag=${lt_cv_ld_reload_flag=-r}
+lt_cv_nm_interface=${lt_cv_nm_interface='BSD nm'}
+lt_cv_objdir=${lt_cv_objdir=.libs}
+lt_cv_path_LD=${lt_cv_path_LD=/usr/local/arm-2011.03/arm-none-linux-gnueabi/bin/ld}
+lt_cv_path_LDCXX=${lt_cv_path_LDCXX=/usr/local/arm-2011.03/arm-none-linux-gnueabi/bin/ld}
+lt_cv_path_NM=${lt_cv_path_NM='/usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-nm -B'}
+lt_cv_path_mainfest_tool=${lt_cv_path_mainfest_tool=no}
+lt_cv_prog_compiler_c_o=${lt_cv_prog_compiler_c_o=yes}
+lt_cv_prog_compiler_c_o_CXX=${lt_cv_prog_compiler_c_o_CXX=yes}
+lt_cv_prog_compiler_pic=${lt_cv_prog_compiler_pic='-fPIC -DPIC'}
+lt_cv_prog_compiler_pic_CXX=${lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC'}
+lt_cv_prog_compiler_pic_works=${lt_cv_prog_compiler_pic_works=yes}
+lt_cv_prog_compiler_pic_works_CXX=${lt_cv_prog_compiler_pic_works_CXX=yes}
+lt_cv_prog_compiler_rtti_exceptions=${lt_cv_prog_compiler_rtti_exceptions=no}
+lt_cv_prog_compiler_static_works=${lt_cv_prog_compiler_static_works=yes}
+lt_cv_prog_compiler_static_works_CXX=${lt_cv_prog_compiler_static_works_CXX=yes}
+lt_cv_prog_gnu_ld=${lt_cv_prog_gnu_ld=yes}
+lt_cv_prog_gnu_ldcxx=${lt_cv_prog_gnu_ldcxx=yes}
+lt_cv_sharedlib_from_linklib_cmd=${lt_cv_sharedlib_from_linklib_cmd='printf %s\n'}
+lt_cv_shlibpath_overrides_runpath=${lt_cv_shlibpath_overrides_runpath=no}
+lt_cv_sys_global_symbol_pipe=${lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''}
+test "${lt_cv_sys_global_symbol_to_c_name_address+set}" = set || lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"\2", (void *) \&\2},/p'\'''
+test "${lt_cv_sys_global_symbol_to_c_name_address_lib_prefix+set}" = set || lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/  {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"lib\2", (void *) \&\2},/p'\'''
+lt_cv_sys_global_symbol_to_cdecl=${lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''}
+lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=1572864}
+lt_cv_to_host_file_cmd=${lt_cv_to_host_file_cmd=func_convert_file_noop}
+lt_cv_to_tool_file_cmd=${lt_cv_to_tool_file_cmd=func_convert_file_noop}
+pkg_cv_LIBFFI_CFLAGS=${pkg_cv_LIBFFI_CFLAGS=-I/src/packages/glib/dist/usr/lib/libffi-3.0.13/include}
+pkg_cv_LIBFFI_LIBS=${pkg_cv_LIBFFI_LIBS='-L/src/packages/glib/dist/usr/lib -lffi'}
+pkg_cv_ZLIB_CFLAGS=${pkg_cv_ZLIB_CFLAGS=-I/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/include}
+pkg_cv_ZLIB_LIBS=${pkg_cv_ZLIB_LIBS='-L/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib  -lz'}
diff --git a/build_glib.sh b/build_glib.sh
new file mode 100755
index 0000000..d893ff0
--- /dev/null
+++ b/build_glib.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+set -e
+
+TOP=`pwd`
+
+rm -rf dist
+mkdir dist
+
+rm -rf build
+mkdir build
+cd build
+
+tar xfv ../libffi-3.0.13.tar.gz
+cd libffi-3.0.13
+./configure --prefix=/usr \
+            --host=arm-none-linux-gnueabi \
+            --disable-static \
+            CFLAGS="-mtune=arm1136j-s -march=armv6 -Os" \
+            LDFLAGS="-Os -L$TOP/dist/usr/lib "
+make install DESTDIR=$TOP/dist
+cd $TOP
+
+cd build
+tar xfv ../glib-2.37.3.tar.xz 
+cd glib-2.37.3
+
+for p in `ls -v $TOP/patches/*.patch`;  do patch -p1 < $p; done
+
+LIBFFI_CFLAGS="-I$TOP/dist/usr/lib/libffi-3.0.13/include" \
+   LIBFFI_LIBS="-L$TOP/dist/usr/lib -lffi" \
+   ./autogen.sh
+
+./configure --prefix=/usr --cache-file=$TOP/arm-linux-a5s.cache --disable-gtk-doc-html --disable-man \
+   --host=arm-none-linux-gnueabi \
+   CFLAGS="-mtune=arm1136j-s -march=armv6 -Os" \
+   LIBFFI_CFLAGS="-I$TOP/dist/usr/lib/libffi-3.0.13/include" \
+   ZLIB_CFLAGS="-I$TOP/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/include" \
+   LIBFFI_LIBS="-L$TOP/dist/usr/lib -lffi" \
+   ZLIB_LIBS="-L$TOP/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib  -lz" \
+   LDFLAGS="-s -Wl,-rpath,$TOP/dist/usr/lib -Wl,-rpath,$TOP/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib " 
+
+make install DESTDIR=$TOP/dist
+cd $TOP
+
+rm -rf fakeroot
+mkdir fakeroot
+cp -R dist/* fakeroot/
+
+rm -rf fakeroot/usr/bin
+rm -rf fakeroot/usr/share
+rm -rf fakeroot/usr/include
+rm -rf fakeroot/usr/lib/libffi-3.0.13/include
+rm -rf fakeroot/usr/lib/pkgconfig
+find fakeroot -name *.la -exec rm -f {} \;
+mkdir fakeroot/usr/bin
+cp dist/usr/bin/gdbus fakeroot/usr/bin/
+
+tar cjfv glib.tar.bz2 fakeroot
+cp glib.tar.bz2 ../../a5s_linux_sdk/ambarella/boards/dropcam/rootfs/
+
diff --git a/dist/usr/bin/gdbus b/dist/usr/bin/gdbus
new file mode 100755
index 0000000..57eb05f
--- /dev/null
+++ b/dist/usr/bin/gdbus
Binary files differ
diff --git a/dist/usr/bin/gdbus-codegen b/dist/usr/bin/gdbus-codegen
new file mode 100755
index 0000000..7c85a3a
--- /dev/null
+++ b/dist/usr/bin/gdbus-codegen
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+
+import os
+import sys
+
+srcdir = os.getenv('UNINSTALLED_GLIB_SRCDIR', None)
+
+if srcdir is not None:
+    path = os.path.join(srcdir, 'gio', 'gdbus-2.0')
+elif os.name == 'nt':
+    # Makes gdbus-codegen 'relocatable' at runtime on Windows.
+    path = os.path.join(os.path.dirname(__file__), '..', 'lib', 'gdbus-2.0')
+else:
+    path = os.path.join('/usr/share', 'glib-2.0')
+
+sys.path.insert(0, os.path.abspath(path))
+from codegen import codegen_main
+
+sys.exit(codegen_main.codegen_main())
diff --git a/dist/usr/bin/gio-querymodules b/dist/usr/bin/gio-querymodules
new file mode 100755
index 0000000..7f9ee6d
--- /dev/null
+++ b/dist/usr/bin/gio-querymodules
Binary files differ
diff --git a/dist/usr/bin/glib-compile-resources b/dist/usr/bin/glib-compile-resources
new file mode 100755
index 0000000..eef1d4f
--- /dev/null
+++ b/dist/usr/bin/glib-compile-resources
Binary files differ
diff --git a/dist/usr/bin/glib-compile-schemas b/dist/usr/bin/glib-compile-schemas
new file mode 100755
index 0000000..d6c5ba9
--- /dev/null
+++ b/dist/usr/bin/glib-compile-schemas
Binary files differ
diff --git a/dist/usr/bin/glib-genmarshal b/dist/usr/bin/glib-genmarshal
new file mode 100755
index 0000000..3275e8b
--- /dev/null
+++ b/dist/usr/bin/glib-genmarshal
Binary files differ
diff --git a/dist/usr/bin/glib-gettextize b/dist/usr/bin/glib-gettextize
new file mode 100755
index 0000000..6e6e1ea
--- /dev/null
+++ b/dist/usr/bin/glib-gettextize
@@ -0,0 +1,188 @@
+#! /bin/sh
+#
+# Copyright (C) 1995-1998, 2000, 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# - Modified in October 2001 by jacob berkman <jacob@ximian.com> to
+# work with glib's Makefile.in.in and po2tbl.sed.in, to not copy in
+# intl/, and to not add ChangeLog entries to po/ChangeLog
+
+# This file is meant for authors or maintainers which want to
+# internationalize their package with the help of GNU gettext.  For
+# further information how to use it consult the GNU gettext manual.
+
+echo=echo
+progname=$0
+force=0
+configstatus=0
+origdir=`pwd`
+usage="\
+Usage: glib-gettextize [OPTION]... [package-dir]
+      --help           print this help and exit
+      --version        print version information and exit
+  -c, --copy           copy files instead of making symlinks
+  -f, --force          force writing of new files even if old exist
+Report bugs to http://bugzilla.gnome.org/."
+package=glib
+version=2.37.3
+try_ln_s=:
+
+# Directory where the sources are stored.
+prefix=/usr
+case `uname` in
+MINGW32*)
+    prefix="`dirname $0`/.."
+    ;;
+esac
+
+datarootdir=${prefix}/share
+datadir=${datarootdir}
+
+gettext_dir=$prefix/share/glib-2.0/gettext
+
+while test $# -gt 0; do
+  case "$1" in
+    -c | --copy | --c* )
+      shift
+      try_ln_s=false ;;
+    -f | --force | --f* )
+      shift
+      force=1 ;;
+    -r | --run | --r* )
+      shift
+      configstatus=1 ;;
+    --help | --h* )
+      $echo "$usage"; exit 0 ;;
+    --version | --v* )
+      echo "$progname (GNU $package) $version"
+      $echo "Copyright (C) 1995-1998, 2000, 2001 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."
+      $echo "Written by" "Ulrich Drepper"
+      exit 0 ;;
+    -- )	# Stop option prcessing
+      shift; break ;;
+    -* )
+      $echo "glib-gettextize: unknown option $1"
+      $echo "Try \`glib-gettextize --help' for more information."; exit 1 ;;
+    * )
+      break ;;
+  esac
+done
+
+if test $# -gt 1; then
+  $echo "$usage"
+  exit 1
+fi
+
+# Fill in the command line options value.
+if test $# -eq 1; then
+  srcdir=$1
+  if cd "$srcdir"; then
+    srcdir=`pwd`
+  else
+    $echo "Cannot change directory to \`$srcdir'"
+    exit 1
+  fi
+else
+  srcdir=$origdir
+fi
+
+test -f configure.in || test -f configure.ac || {
+  $echo "Missing configure.in or configure.ac, please cd to your package first."
+  exit 1
+}
+
+configure_in=NONE
+if test -f configure.in; then
+  configure_in=configure.in
+else
+  if test -f configure.ac; then
+    configure_in=configure.ac
+  fi
+fi
+# Check in which directory config.rpath, mkinstalldirs etc. belong.
+auxdir=`cat "$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
+if test -n "$auxdir"; then
+  auxdir="$auxdir/"
+fi
+
+if test -f po/Makefile.in.in && test $force -eq 0; then
+  $echo "\
+po/Makefile.in.in exists: use option -f if you really want to delete it."
+  exit 1
+fi
+
+test -d po || {
+  $echo "Creating po/ subdirectory"
+  mkdir po || {
+    $echo "failed to create po/ subdirectory"
+    exit 1
+  }
+}
+
+# For simplicity we changed to the gettext source directory.
+cd $gettext_dir || {
+   $echo "gettext source directory '${gettext_dir}' doesn't exist"
+   exit 1
+}
+
+# Now copy all files.  Take care for the destination directories.
+for file in *; do
+  case $file in
+    intl | po)
+      ;;
+    mkinstalldirs)
+      rm -f "$srcdir/$auxdir$file"
+      ($try_ln_s && ln -s $gettext_dir/$file "$srcdir/$auxdir$file" && $echo "Symlinking file $file") 2>/dev/null ||
+      { $echo "Copying file $file"; cp $file "$srcdir/$auxdir$file"; }
+      ;;
+    *)
+      rm -f "$srcdir/$file"
+      ($try_ln_s && ln -s $gettext_dir/$file "$srcdir/$file" && $echo "Symlinking file $file") 2>/dev/null ||
+      { $echo "Copying file $file"; cp $file "$srcdir/$file"; }
+      ;;
+  esac
+done
+
+# Copy files to po/ subdirectory.
+cd po
+for file in *; do
+  rm -f "$srcdir/po/$file"
+  ($try_ln_s && ln -s $gettext_dir/po/$file "$srcdir/po/$file" && $echo "Symlinking file po/$file") 2>/dev/null ||
+  { $echo "Copying file po/$file"; cp $file "$srcdir/po/$file"; }
+done
+if test -f "$srcdir/po/cat-id-tbl.c"; then
+  $echo "Removing po/cat-id-tbl.c"
+  rm -f "$srcdir/po/cat-id-tbl.c"
+fi
+if test -f "$srcdir/po/stamp-cat-id"; then
+  $echo "Removing po/stamp-cat-id"
+  rm -f "$srcdir/po/stamp-cat-id"
+fi
+
+echo
+echo "Please add the files"
+echo "  codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4"
+echo "  progtest.m4"
+echo "from the $datadir/aclocal directory to your autoconf macro directory"
+echo "or directly to your aclocal.m4 file."
+echo "You will also need config.guess and config.sub, which you can get from"
+echo "ftp://ftp.gnu.org/pub/gnu/config/."
+echo
+
+exit 0
diff --git a/dist/usr/bin/glib-mkenums b/dist/usr/bin/glib-mkenums
new file mode 100755
index 0000000..f0a3ad6
--- /dev/null
+++ b/dist/usr/bin/glib-mkenums
@@ -0,0 +1,565 @@
+#! /usr/bin/perl
+
+use warnings;
+use File::Basename;
+use Safe;
+
+# glib-mkenums.pl 
+# Information about the current enumeration
+my $flags;			# Is enumeration a bitmask?
+my $option_underscore_name;	# Overriden underscore variant of the enum name
+				# for example to fix the cases we don't get the
+				# mixed-case -> underscorized transform right.
+my $option_lowercase_name;	# DEPRECATED.  A lower case name to use as part
+				# of the *_get_type() function, instead of the
+				# one that we guess. For instance, when an enum
+				# uses abnormal capitalization and we can not
+				# guess where to put the underscores.
+my $seenbitshift;		# Have we seen bitshift operators?
+my $enum_prefix;		# Prefix for this enumeration
+my $enumname;			# Name for this enumeration
+my $enumshort;			# $enumname without prefix
+my $enumname_prefix;		# prefix of $enumname
+my $enumindex = 0;		# Global enum counter
+my $firstenum = 1;		# Is this the first enumeration per file?
+my @entries;			# [ $name, $val ] for each entry
+my $sandbox = Safe->new;        # sandbox for safe evaluation of expressions
+
+sub parse_trigraph {
+    my $opts = shift;
+    my @opts;
+
+    for $opt (split /\s*,\s*/, $opts) {
+	$opt =~ s/^\s*//;
+	$opt =~ s/\s*$//;
+        my ($key,$val) = $opt =~ /(\w+)(?:=(.+))?/;
+	defined $val or $val = 1;
+	push @opts, $key, $val;
+    }
+    @opts;
+}
+sub parse_entries {
+    my $file = shift;
+    my $file_name = shift;
+    my $looking_for_name = 0;
+    
+    while (<$file>) {
+	# read lines until we have no open comments
+	while (m@/\*([^*]|\*(?!/))*$@) {
+	    my $new;
+	    defined ($new = <$file>) || die "Unmatched comment in $ARGV";
+	    $_ .= $new;
+	}
+	# strip comments w/o options
+	s@/\*(?!<)
+	    ([^*]+|\*(?!/))*
+	   \*/@@gx;
+	
+	# strip newlines
+	s@\n@ @;
+	
+	# skip empty lines
+	next if m@^\s*$@;
+	
+	if ($looking_for_name) {
+	    if (/^\s*(\w+)/) {
+		$enumname = $1;
+		return 1;
+	    }
+	}
+	
+	# Handle include files
+	if (/^\#include\s*<([^>]*)>/ ) {
+            my $file= "../$1";
+	    open NEWFILE, $file or die "Cannot open include file $file: $!\n";
+	    
+	    if (parse_entries (\*NEWFILE, $NEWFILE)) {
+		return 1;
+	    } else {
+		next;
+	    }
+	}
+	
+	if (/^\s*\}\s*(\w+)/) {
+	    $enumname = $1;
+	    $enumindex++;
+	    return 1;
+	}
+	
+	if (/^\s*\}/) {
+	    $enumindex++;
+	    $looking_for_name = 1;
+	    next;
+	}
+
+        if (m@^\s*
+              (\w+)\s*                   # name
+              (?:=(                      # value
+		   \s*\w+\s*\(.*\)\s*       # macro with multiple args
+		   |                        # OR
+                   (?:[^,/]|/(?!\*))*       # anything but a comma or comment
+                  ))?,?\s*
+              (?:/\*<                    # options
+                (([^*]|\*(?!/))*)
+               >\s*\*/)?,?
+              \s*$
+             @x) {
+            my ($name, $value, $options) = ($1,$2,$3);
+
+	    if (!defined $flags && defined $value && $value =~ /<</) {
+		$seenbitshift = 1;
+	    }
+
+	    if (defined $options) {
+		my %options = parse_trigraph($options);
+		if (!defined $options{skip}) {
+		    push @entries, [ $name, $value, $options{nick} ];
+		}
+	    } else {
+		push @entries, [ $name, $value ];
+	    }
+	} elsif (m@^\s*\#@) {
+	    # ignore preprocessor directives
+	} else {
+	    print STDERR "$0: $file_name:$.: Failed to parse `$_'\n";
+	}
+    }
+
+    return 0;
+}
+
+sub version {
+    print "glib-mkenums version glib-2.37.3\n";
+    print "glib-mkenums comes with ABSOLUTELY NO WARRANTY.\n";
+    print "You may redistribute copies of glib-mkenums under the terms of\n";
+    print "the GNU General Public License which can be found in the\n";
+    print "GLib source package. Sources, examples and contact\n";
+    print "information are available at http://www.gtk.org\n";
+    exit 0;
+}
+sub usage {
+    print "Usage:\n";
+    print "  glib-mkenums [OPTION...] [FILES...]\n\n";
+    print "Help Options:\n";
+    print "  -h, --help            Show this help message\n\n";
+    print "Utility Options:\n";
+    print "  --identifier-prefix <text>   Identifier prefix\n";
+    print "  --symbol-prefix <text>       Symbol prefix\n";
+    print "  --fhead <text>               Output file header\n";
+    print "  --fprod <text>               Per input file production\n";
+    print "  --ftail <text>               Output file trailer\n";
+    print "  --eprod <text>               Per enum text (produced prior to value itarations)\n";
+    print "  --vhead <text>               Value header, produced before iterating over enum values\n";
+    print "  --vprod <text>               Value text, produced for each enum value\n";
+    print "  --vtail <text>               Value tail, produced after iterating over enum values\n";
+    print "  --comments <text>            Comment structure\n";
+    print "  --template file              Template file\n";
+    print "  -v, --version                Print version informations\n\n";
+    print "Production text substitutions:\n";
+    print "  \@EnumName\@            PrefixTheXEnum\n";
+    print "  \@enum_name\@           prefix_the_xenum\n";
+    print "  \@ENUMNAME\@            PREFIX_THE_XENUM\n";
+    print "  \@ENUMSHORT\@           THE_XENUM\n";
+    print "  \@ENUMPREFIX\@          PREFIX\n";
+    print "  \@VALUENAME\@           PREFIX_THE_XVALUE\n";
+    print "  \@valuenick\@           the-xvalue\n";
+    print "  \@valuenum\@            the integer value (limited support, Since: 2.26)\n";
+    print "  \@type\@                either enum or flags\n";
+    print "  \@Type\@                either Enum or Flags\n";
+    print "  \@TYPE\@                either ENUM or FLAGS\n";
+    print "  \@filename\@            name of current input file\n";
+    print "  \@basename\@            base name of the current input file (Since: 2.22)\n";
+    exit 0;
+}
+
+# production variables:
+my $idprefix = "";    # "G", "Gtk", etc
+my $symprefix = "";   # "g", "gtk", etc, if not just lc($idprefix)
+my $fhead = "";   # output file header
+my $fprod = "";   # per input file production
+my $ftail = "";   # output file trailer
+my $eprod = "";   # per enum text (produced prior to value itarations)
+my $vhead = "";   # value header, produced before iterating over enum values
+my $vprod = "";   # value text, produced for each enum value
+my $vtail = "";   # value tail, produced after iterating over enum values
+my $comment_tmpl = "";   # comment template
+
+sub read_template_file {
+  my ($file) = @_;
+  my %tmpl = ('file-header', $fhead, 
+	      'file-production', $fprod, 
+	      'file-tail', $ftail, 
+	      'enumeration-production', $eprod,
+	      'value-header', $vhead,
+	      'value-production', $vprod,
+	      'value-tail', $vtail,
+	      'comment', $comment_tmpl);
+  my $in = 'junk';
+  open (FILE, $file) || die "Can't open $file: $!\n";
+  while (<FILE>) {
+    if (/^\/\*\*\*\s+(BEGIN|END)\s+([\w-]+)\s+\*\*\*\//) {
+      if (($in eq 'junk') && ($1 eq 'BEGIN') && (exists($tmpl{$2}))) {
+	$in = $2;
+	next;
+      }
+      elsif (($in eq $2) && ($1 eq 'END') && (exists($tmpl{$2}))) {
+	$in = 'junk';
+	next;
+      } else {
+	  die "Malformed template file $file\n";
+      }
+    }
+    if (!($in eq 'junk')) {
+	$tmpl{$in} .= $_;
+    }
+  }
+  close (FILE);
+  if (!($in eq 'junk')) {
+      die "Malformed template file $file\n";
+  }
+  $fhead = $tmpl{'file-header'};
+  $fprod = $tmpl{'file-production'};
+  $ftail = $tmpl{'file-tail'};
+  $eprod = $tmpl{'enumeration-production'};
+  $vhead = $tmpl{'value-header'};
+  $vprod = $tmpl{'value-production'};
+  $vtail = $tmpl{'value-tail'};
+  $comment_tmpl = $tmpl{'comment'};
+
+  # default to C-style comments
+  $comment_tmpl = "/* \@comment\@ */" if $comment_tmpl eq "";
+}
+
+if (!defined $ARGV[0]) {
+    usage;
+}
+while ($_=$ARGV[0],/^-/) {
+    shift;
+    last if /^--$/;
+    if (/^--template$/)                      { read_template_file (shift); }
+    elsif (/^--identifier-prefix$/)          { $idprefix = shift }
+    elsif (/^--symbol-prefix$/)              { $symprefix = shift }
+    elsif (/^--fhead$/)                      { $fhead = $fhead . shift }
+    elsif (/^--fprod$/)                      { $fprod = $fprod . shift }
+    elsif (/^--ftail$/)                      { $ftail = $ftail . shift }
+    elsif (/^--eprod$/)                      { $eprod = $eprod . shift }
+    elsif (/^--vhead$/)                      { $vhead = $vhead . shift }
+    elsif (/^--vprod$/)                      { $vprod = $vprod . shift }
+    elsif (/^--vtail$/)                      { $vtail = $vtail . shift }
+    elsif (/^--comments$/)                   { $comment_tmpl = shift }
+    elsif (/^--help$/ || /^-h$/ || /^-\?$/)  { usage; }
+    elsif (/^--version$/ || /^-v$/)          { version; }
+    else { usage; }
+    last if not defined($ARGV[0]);
+}
+
+# put auto-generation comment
+{
+    my $comment = $comment_tmpl;
+    $comment =~ s/\@comment\@/Generated data (by glib-mkenums)/;
+    print "\n" . $comment . "\n\n";
+}
+
+if (length($fhead)) {
+    my $prod = $fhead;
+    my $base = basename ($ARGV[0]);
+
+    $prod =~ s/\@filename\@/$ARGV[0]/g;
+    $prod =~ s/\@basename\@/$base/g;
+    $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+    $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+    chomp ($prod);
+		
+    print "$prod\n";
+}
+
+while (<>) {
+    if (eof) {
+	close (ARGV);		# reset line numbering
+	$firstenum = 1;		# Flag to print filename at next enum
+    }
+
+    # read lines until we have no open comments
+    while (m@/\*([^*]|\*(?!/))*$@) {
+	my $new;
+	defined ($new = <>) || die "Unmatched comment in $ARGV";
+	$_ .= $new;
+    }
+    # strip comments w/o options
+    s@/\*(?!<)
+       ([^*]+|\*(?!/))*
+       \*/@@gx;
+	
+    # ignore forward declarations
+    next if /^\s*typedef\s+enum.*;/;
+
+    if (m@^\s*typedef\s+enum\s*
+           ({)?\s*
+           (?:/\*<
+             (([^*]|\*(?!/))*)
+            >\s*\*/)?
+           \s*({)?
+         @x) {
+	if (defined $2) {
+	    my %options = parse_trigraph ($2);
+	    next if defined $options{skip};
+	    $enum_prefix = $options{prefix};
+	    $flags = $options{flags};
+	    $option_lowercase_name = $options{lowercase_name};
+	    $option_underscore_name = $options{underscore_name};
+	} else {
+	    $enum_prefix = undef;
+	    $flags = undef;
+	    $option_lowercase_name = undef;
+	    $option_underscore_name = undef;
+	}
+	if (defined $option_lowercase_name) {
+	    if (defined $option_underscore_name) {
+		print STDERR "$0: $ARGV:$.: lowercase_name overriden with underscore_name\n";
+		$option_lowercase_name = undef;
+	    } else {
+		print STDERR "$0: $ARGV:$.: lowercase_name is deprecated, use underscore_name\n";
+	    }
+	}
+	# Didn't have trailing '{' look on next lines
+	if (!defined $1 && !defined $4) {
+	    while (<>) {
+		if (eof) {
+		    die "Hit end of file while parsing enum in $ARGV";
+		}
+		if (s/^\s*\{//) {
+		    last;
+		}
+	    }
+	}
+
+	$seenbitshift = 0;
+	@entries = ();
+
+	# Now parse the entries
+	parse_entries (\*ARGV, $ARGV);
+
+	# figure out if this was a flags or enums enumeration
+	if (!defined $flags) {
+	    $flags = $seenbitshift;
+	}
+
+	# Autogenerate a prefix
+	if (!defined $enum_prefix) {
+	    for (@entries) {
+		my $nick = $_->[2];
+		if (!defined $nick) {
+		    my $name = $_->[0];
+		    if (defined $enum_prefix) {
+			my $tmp = ~ ($name ^ $enum_prefix);
+			($tmp) = $tmp =~ /(^\xff*)/;
+			$enum_prefix = $enum_prefix & $tmp;
+		    } else {
+			$enum_prefix = $name;
+		    }
+		}
+	    }
+	    if (!defined $enum_prefix) {
+		$enum_prefix = "";
+	    } else {
+		# Trim so that it ends in an underscore
+		$enum_prefix =~ s/_[^_]*$/_/;
+	    }
+	} else {
+	    # canonicalize user defined prefixes
+	    $enum_prefix = uc($enum_prefix);
+	    $enum_prefix =~ s/-/_/g;
+	    $enum_prefix =~ s/(.*)([^_])$/$1$2_/;
+	}
+	
+	for $entry (@entries) {
+	    my ($name,$num,$nick) = @{$entry};
+            if (!defined $nick) {
+ 	        ($nick = $name) =~ s/^$enum_prefix//;
+	        $nick =~ tr/_/-/;
+	        $nick = lc($nick);
+	        @{$entry} = ($name, $num, $nick);
+            }
+	}
+	
+
+	# Spit out the output
+	if (defined $option_underscore_name) {
+	    $enumlong = uc $option_underscore_name;
+	    $enumsym = lc $option_underscore_name;
+	    $enumshort = $enumlong;
+	    $enumshort =~ s/^[A-Z][A-Z0-9]*_//;
+
+	    $enumname_prefix = $enumlong;
+	    $enumname_prefix =~ s/_$enumshort$//;
+	} elsif (!$symprefix && !$idprefix) {
+	    # enumname is e.g. GMatchType
+	    $enspace = $enumname;
+	    $enspace =~ s/^([A-Z][a-z]*).*$/$1/;
+
+	    $enumshort = $enumname;
+	    $enumshort =~ s/^[A-Z][a-z]*//;
+	    $enumshort =~ s/([^A-Z])([A-Z])/$1_$2/g;
+	    $enumshort =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
+	    $enumshort = uc($enumshort);
+
+	    $enumname_prefix = $enumname;
+	    $enumname_prefix =~ s/^([A-Z][a-z]*).*$/$1/;
+	    $enumname_prefix = uc($enumname_prefix);
+
+	    $enumlong = uc($enspace) . "_" . $enumshort;
+	    $enumsym = lc($enspace) . "_" . lc($enumshort);
+
+	    if (defined($option_lowercase_name)) {
+		$enumsym = $option_lowercase_name;
+	    }
+	} else {
+	    $enumshort = $enumname;
+	    if ($idprefix) {
+		$enumshort =~ s/^${idprefix}//;
+	    } else {
+		$enumshort =~ s/^[A-Z][a-z]*//;
+	    }
+	    $enumshort =~ s/([^A-Z])([A-Z])/$1_$2/g;
+	    $enumshort =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
+	    $enumshort = uc($enumshort);
+
+	    $enumname_prefix = $symprefix && uc($symprefix) || uc($idprefix);
+
+	    $enumlong = $enumname_prefix . "_" . $enumshort;
+	    $enumsym = lc($enumlong);
+	}
+
+	if ($firstenum) {
+	    $firstenum = 0;
+	    
+	    if (length($fprod)) {
+		my $prod = $fprod;
+		my $base = basename ($ARGV);
+
+		$prod =~ s/\@filename\@/$ARGV/g;
+		$prod =~ s/\@basename\@/$base/g;
+		$prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+		$prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+	        chomp ($prod);
+		
+		print "$prod\n";
+	    }
+	}
+	
+	if (length($eprod)) {
+	    my $prod = $eprod;
+
+	    $prod =~ s/\@enum_name\@/$enumsym/g;
+	    $prod =~ s/\@EnumName\@/$enumname/g;
+	    $prod =~ s/\@ENUMSHORT\@/$enumshort/g;
+	    $prod =~ s/\@ENUMNAME\@/$enumlong/g;
+	    $prod =~ s/\@ENUMPREFIX\@/$enumname_prefix/g;
+	    if ($flags) { $prod =~ s/\@type\@/flags/g; } else { $prod =~ s/\@type\@/enum/g; }
+	    if ($flags) { $prod =~ s/\@Type\@/Flags/g; } else { $prod =~ s/\@Type\@/Enum/g; }
+	    if ($flags) { $prod =~ s/\@TYPE\@/FLAGS/g; } else { $prod =~ s/\@TYPE\@/ENUM/g; }
+	    $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+	    $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+            chomp ($prod);
+
+	    print "$prod\n";
+	}
+
+	if (length($vhead)) {
+	    my $prod = $vhead;
+
+	    $prod =~ s/\@enum_name\@/$enumsym/g;
+            $prod =~ s/\@EnumName\@/$enumname/g;
+            $prod =~ s/\@ENUMSHORT\@/$enumshort/g;
+            $prod =~ s/\@ENUMNAME\@/$enumlong/g;
+	    $prod =~ s/\@ENUMPREFIX\@/$enumname_prefix/g;
+	    if ($flags) { $prod =~ s/\@type\@/flags/g; } else { $prod =~ s/\@type\@/enum/g; }
+	    if ($flags) { $prod =~ s/\@Type\@/Flags/g; } else { $prod =~ s/\@Type\@/Enum/g; }
+	    if ($flags) { $prod =~ s/\@TYPE\@/FLAGS/g; } else { $prod =~ s/\@TYPE\@/ENUM/g; }
+            $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+            $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+            chomp ($prod);
+	    
+            print "$prod\n";
+	}
+
+	if (length($vprod)) {
+	    my $prod = $vprod;
+            my $next_num = 0;
+	    
+	    $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+	    $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+	    for (@entries) {
+		my ($name,$num,$nick) = @{$_};
+		my $tmp_prod = $prod;
+
+                if ($prod =~ /\@valuenum\@/) {
+                    # only attempt to eval the value if it is requested
+                    # this prevents us from throwing errors otherwise
+                    if (defined $num) {
+                        # use sandboxed perl evaluation as a reasonable
+                        # approximation to C constant folding
+                        $num = $sandbox->reval ($num);
+
+                        # make sure it parsed to an integer
+                        if (!defined $num or $num !~ /^-?\d+$/) {
+                            die "Unable to parse enum value '$num'";
+                        }
+                    } else {
+                        $num = $next_num;
+                    }
+
+                    $tmp_prod =~ s/\@valuenum\@/$num/g;
+                    $next_num = $num + 1;
+                }
+
+		$tmp_prod =~ s/\@VALUENAME\@/$name/g;
+		$tmp_prod =~ s/\@valuenick\@/$nick/g;
+		if ($flags) { $tmp_prod =~ s/\@type\@/flags/g; } else { $tmp_prod =~ s/\@type\@/enum/g; }
+		if ($flags) { $tmp_prod =~ s/\@Type\@/Flags/g; } else { $tmp_prod =~ s/\@Type\@/Enum/g; }
+		if ($flags) { $tmp_prod =~ s/\@TYPE\@/FLAGS/g; } else { $tmp_prod =~ s/\@TYPE\@/ENUM/g; }
+		chomp ($tmp_prod);
+
+		print "$tmp_prod\n";
+	    }
+	}
+
+	if (length($vtail)) {
+	    my $prod = $vtail;
+
+	    $prod =~ s/\@enum_name\@/$enumsym/g;
+            $prod =~ s/\@EnumName\@/$enumname/g;
+            $prod =~ s/\@ENUMSHORT\@/$enumshort/g;
+            $prod =~ s/\@ENUMNAME\@/$enumlong/g;
+	    $prod =~ s/\@ENUMPREFIX\@/$enumname_prefix/g;
+	    if ($flags) { $prod =~ s/\@type\@/flags/g; } else { $prod =~ s/\@type\@/enum/g; }
+	    if ($flags) { $prod =~ s/\@Type\@/Flags/g; } else { $prod =~ s/\@Type\@/Enum/g; }
+	    if ($flags) { $prod =~ s/\@TYPE\@/FLAGS/g; } else { $prod =~ s/\@TYPE\@/ENUM/g; }
+            $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+            $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+            chomp ($prod);
+	    
+            print "$prod\n";
+	}
+    }
+}
+
+if (length($ftail)) {
+    my $prod = $ftail;
+    my $base = basename ($ARGV);
+
+    $prod =~ s/\@filename\@/$ARGV/g;
+    $prod =~ s/\@basename\@/$base/g;
+    $prod =~ s/\\a/\a/g; $prod =~ s/\\b/\b/g; $prod =~ s/\\t/\t/g; $prod =~ s/\\n/\n/g;
+    $prod =~ s/\\f/\f/g; $prod =~ s/\\r/\r/g;
+    chomp ($prod);
+		
+    print "$prod\n";
+}
+
+# put auto-generation comment
+{
+    my $comment = $comment_tmpl;
+    $comment =~ s/\@comment\@/Generated data ends here/;
+    print "\n" . $comment . "\n\n";
+}
diff --git a/dist/usr/bin/gobject-query b/dist/usr/bin/gobject-query
new file mode 100755
index 0000000..3f37aeb
--- /dev/null
+++ b/dist/usr/bin/gobject-query
Binary files differ
diff --git a/dist/usr/bin/gresource b/dist/usr/bin/gresource
new file mode 100755
index 0000000..ebbb16a
--- /dev/null
+++ b/dist/usr/bin/gresource
Binary files differ
diff --git a/dist/usr/bin/gsettings b/dist/usr/bin/gsettings
new file mode 100755
index 0000000..f6ea307
--- /dev/null
+++ b/dist/usr/bin/gsettings
Binary files differ
diff --git a/dist/usr/bin/gtester b/dist/usr/bin/gtester
new file mode 100755
index 0000000..3b3ee83
--- /dev/null
+++ b/dist/usr/bin/gtester
Binary files differ
diff --git a/dist/usr/bin/gtester-report b/dist/usr/bin/gtester-report
new file mode 100755
index 0000000..e278189
--- /dev/null
+++ b/dist/usr/bin/gtester-report
@@ -0,0 +1,492 @@
+#!/usr/bin/python
+# GLib Testing Framework Utility			-*- Mode: python; -*-
+# Copyright (C) 2007 Imendio AB
+# Authors: Tim Janik
+#
+# 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.
+import datetime
+import optparse
+import sys, re, xml.dom.minidom
+
+try:
+    import subunit
+    from subunit import iso8601
+    from testtools.content import Content, ContentType
+    mime_utf8 = ContentType('text', 'plain', {'charset': 'utf8'})
+except ImportError:
+    subunit = None
+
+
+pkginstall_configvars = {
+  #@PKGINSTALL_CONFIGVARS_IN24LINES@ # configvars are substituted upon script installation
+}
+
+# xml utilities
+def find_child (node, child_name):
+  for child in node.childNodes:
+    if child.nodeName == child_name:
+      return child
+  return None
+def list_children (node, child_name):
+  rlist = []
+  for child in node.childNodes:
+    if child.nodeName == child_name:
+      rlist += [ child ]
+  return rlist
+def find_node (node, name = None):
+  if not node or node.nodeName == name or not name:
+    return node
+  for child in node.childNodes:
+    c = find_node (child, name)
+    if c:
+      return c
+  return None
+def node_as_text (node, name = None):
+  if name:
+    node = find_node (node, name)
+  txt = ''
+  if node:
+    if node.nodeValue:
+      txt += node.nodeValue
+    for child in node.childNodes:
+      txt += node_as_text (child)
+  return txt
+def attribute_as_text (node, aname, node_name = None):
+  node = find_node (node, node_name)
+  if not node:
+    return ''
+  attr = node.attributes.get (aname, '')
+  if hasattr (attr, 'value'):
+    return attr.value
+  return ''
+
+# HTML utilities
+def html_indent_string (n):
+  uncollapsible_space = ' &nbsp;' # HTML won't compress alternating sequences of ' ' and '&nbsp;'
+  string = ''
+  for i in range (0, (n + 1) / 2):
+    string += uncollapsible_space
+  return string
+
+# TestBinary object, instantiated per test binary in the log file
+class TestBinary:
+  def __init__ (self, name):
+    self.name = name
+    self.testcases = []
+    self.duration = 0
+    self.success_cases = 0
+    self.skipped_cases = 0
+    self.file = '???'
+    self.random_seed = ''
+
+# base class to handle processing/traversion of XML nodes
+class TreeProcess:
+  def __init__ (self):
+    self.nest_level = 0
+  def trampoline (self, node):
+    name = node.nodeName
+    if name == '#text':
+      self.handle_text (node)
+    else:
+      try:	method = getattr (self, 'handle_' + re.sub ('[^a-zA-Z0-9]', '_', name))
+      except:	method = None
+      if method:
+        return method (node)
+      else:
+        return self.process_recursive (name, node)
+  def process_recursive (self, node_name, node):
+    self.process_children (node)
+  def process_children (self, node):
+    self.nest_level += 1
+    for child in node.childNodes:
+      self.trampoline (child)
+    self.nest_level += 1
+
+# test report reader, this class collects some statistics and merges duplicate test binary runs
+class ReportReader (TreeProcess):
+  def __init__ (self):
+    TreeProcess.__init__ (self)
+    self.binary_names = []
+    self.binaries = {}
+    self.last_binary = None
+    self.info = {}
+  def binary_list (self):
+    lst = []
+    for name in self.binary_names:
+      lst += [ self.binaries[name] ]
+    return lst
+  def get_info (self):
+    return self.info
+  def handle_info (self, node):
+    dn = find_child (node, 'package')
+    self.info['package'] = node_as_text (dn)
+    dn = find_child (node, 'version')
+    self.info['version'] = node_as_text (dn)
+    dn = find_child (node, 'revision')
+    if dn is not None:
+        self.info['revision'] = node_as_text (dn)
+  def handle_testcase (self, node):
+    self.last_binary.testcases += [ node ]
+    result = attribute_as_text (node, 'result', 'status')
+    if result == 'success':
+      self.last_binary.success_cases += 1
+    if bool (int (attribute_as_text (node, 'skipped') + '0')):
+      self.last_binary.skipped_cases += 1
+  def handle_text (self, node):
+    pass
+  def handle_testbinary (self, node):
+    path = node.attributes.get ('path', None).value
+    if self.binaries.get (path, -1) == -1:
+      self.binaries[path] = TestBinary (path)
+      self.binary_names += [ path ]
+    self.last_binary = self.binaries[path]
+    dn = find_child (node, 'duration')
+    dur = node_as_text (dn)
+    try:        dur = float (dur)
+    except:     dur = 0
+    if dur:
+      self.last_binary.duration += dur
+    bin = find_child (node, 'binary')
+    if bin:
+      self.last_binary.file = attribute_as_text (bin, 'file')
+    rseed = find_child (node, 'random-seed')
+    if rseed:
+      self.last_binary.random_seed = node_as_text (rseed)
+    self.process_children (node)
+
+
+class ReportWriter(object):
+    """Base class for reporting."""
+
+    def __init__(self, binary_list):
+        self.binaries = binary_list
+
+    def _error_text(self, node):
+        """Get a string representing the error children of node."""
+        rlist = list_children(node, 'error')
+        txt = ''
+        for enode in rlist:
+            txt += node_as_text (enode)
+            if txt and txt[-1] != '\n':
+                txt += '\n'
+        return txt
+
+
+class HTMLReportWriter(ReportWriter):
+  # Javascript/CSS snippet to toggle element visibility
+  cssjs = r'''
+  <style type="text/css" media="screen">
+    .VisibleSection { }
+    .HiddenSection  { display: none; }
+  </style>
+  <script language="javascript" type="text/javascript"><!--
+  function toggle_display (parentid, tagtype, idmatch, keymatch) {
+    ptag = document.getElementById (parentid);
+    tags = ptag.getElementsByTagName (tagtype);
+    for (var i = 0; i < tags.length; i++) {
+      tag = tags[i];
+      var key = tag.getAttribute ("keywords");
+      if (tag.id.indexOf (idmatch) == 0 && key && key.match (keymatch)) {
+        if (tag.className.indexOf ("HiddenSection") >= 0)
+          tag.className = "VisibleSection";
+        else
+          tag.className = "HiddenSection";
+      }
+    }
+  }
+  message_array = Array();
+  function view_testlog (wname, file, random_seed, tcase, msgtitle, msgid) {
+      txt = message_array[msgid];
+      var w = window.open ("", // URI
+                           wname,
+                           "resizable,scrollbars,status,width=790,height=400");
+      var doc = w.document;
+      doc.write ("<h2>File: " + file + "</h2>\n");
+      doc.write ("<h3>Case: " + tcase + "</h3>\n");
+      doc.write ("<strong>Random Seed:</strong> <code>" + random_seed + "</code> <br /><br />\n");
+      doc.write ("<strong>" + msgtitle + "</strong><br />\n");
+      doc.write ("<pre>");
+      doc.write (txt);
+      doc.write ("</pre>\n");
+      doc.write ("<a href=\'javascript:window.close()\'>Close Window</a>\n");
+      doc.close();
+  }
+  --></script>
+  '''
+  def __init__ (self, info, binary_list):
+    ReportWriter.__init__(self, binary_list)
+    self.info = info
+    self.bcounter = 0
+    self.tcounter = 0
+    self.total_tcounter = 0
+    self.total_fcounter = 0
+    self.total_duration = 0
+    self.indent_depth = 0
+    self.lastchar = ''
+  def oprint (self, message):
+    sys.stdout.write (message)
+    if message:
+      self.lastchar = message[-1]
+  def handle_info (self):
+    self.oprint ('<h3>Package: %(package)s, version: %(version)s</h3>\n' % self.info)
+    if self.info['revision']:
+        self.oprint ('<h5>Report generated from: %(revision)s</h5>\n' % self.info)
+  def handle_text (self, node):
+    self.oprint (node.nodeValue)
+  def handle_testcase (self, node, binary):
+    skipped = bool (int (attribute_as_text (node, 'skipped') + '0'))
+    if skipped:
+      return            # skipped tests are uninteresting for HTML reports
+    path = attribute_as_text (node, 'path')
+    duration = node_as_text (node, 'duration')
+    result = attribute_as_text (node, 'result', 'status')
+    rcolor = {
+      'success': 'bgcolor="lightgreen"',
+      'failed':  'bgcolor="red"',
+    }.get (result, '')
+    if result != 'success':
+      duration = '-'    # ignore bogus durations
+    self.oprint ('<tr id="b%u_t%u_" keywords="%s all" class="HiddenSection">\n' % (self.bcounter, self.tcounter, result))
+    self.oprint ('<td>%s %s</td> <td align="right">%s</td> \n' % (html_indent_string (4), path, duration))
+    perflist = list_children (node, 'performance')
+    if result != 'success':
+      txt = self._error_text(node)
+      txt = re.sub (r'"', r'\\"', txt)
+      txt = re.sub (r'\n', r'\\n', txt)
+      txt = re.sub (r'&', r'&amp;', txt)
+      txt = re.sub (r'<', r'&lt;', txt)
+      self.oprint ('<script language="javascript" type="text/javascript">message_array["b%u_t%u_"] = "%s";</script>\n' % (self.bcounter, self.tcounter, txt))
+      self.oprint ('<td align="center"><a href="javascript:view_testlog (\'%s\', \'%s\', \'%s\', \'%s\', \'Output:\', \'b%u_t%u_\')">Details</a></td>\n' %
+                   ('TestResultWindow', binary.file, binary.random_seed, path, self.bcounter, self.tcounter))
+    elif perflist:
+      presults = []
+      for perf in perflist:
+        pmin = bool (int (attribute_as_text (perf, 'minimize')))
+        pmax = bool (int (attribute_as_text (perf, 'maximize')))
+        pval = float (attribute_as_text (perf, 'value'))
+        txt = node_as_text (perf)
+        txt = re.sub (r'&', r'&amp;', txt)
+        txt = re.sub (r'<', r'&gt;', txt)
+        txt = '<strong>Performance(' + (pmin and '<em>minimized</em>' or '<em>maximized</em>') + '):</strong> ' + txt.strip() + '<br />\n'
+        txt = re.sub (r'"', r'\\"', txt)
+        txt = re.sub (r'\n', r'\\n', txt)
+        presults += [ (pval, txt) ]
+      presults.sort()
+      ptxt = ''.join ([e[1] for e in presults])
+      self.oprint ('<script language="javascript" type="text/javascript">message_array["b%u_t%u_"] = "%s";</script>\n' % (self.bcounter, self.tcounter, ptxt))
+      self.oprint ('<td align="center"><a href="javascript:view_testlog (\'%s\', \'%s\', \'%s\', \'%s\', \'Test Results:\', \'b%u_t%u_\')">Details</a></td>\n' %
+                   ('TestResultWindow', binary.file, binary.random_seed, path, self.bcounter, self.tcounter))
+    else:
+      self.oprint ('<td align="center">-</td>\n')
+    self.oprint ('<td align="right" %s>%s</td>\n' % (rcolor, result))
+    self.oprint ('</tr>\n')
+    self.tcounter += 1
+    self.total_tcounter += 1
+    self.total_fcounter += result != 'success'
+  def handle_binary (self, binary):
+    self.tcounter = 1
+    self.bcounter += 1
+    self.total_duration += binary.duration
+    self.oprint ('<tr><td><strong>%s</strong></td><td align="right">%f</td> <td align="center">\n' % (binary.name, binary.duration))
+    erlink, oklink = ('', '')
+    real_cases = len (binary.testcases) - binary.skipped_cases
+    if binary.success_cases < real_cases:
+      erlink = 'href="javascript:toggle_display (\'ResultTable\', \'tr\', \'b%u_\', \'failed\')"' % self.bcounter
+    if binary.success_cases:
+      oklink = 'href="javascript:toggle_display (\'ResultTable\', \'tr\', \'b%u_\', \'success\')"' % self.bcounter
+    if real_cases != 0:
+	self.oprint ('<a %s>ER</a>\n' % erlink)
+	self.oprint ('<a %s>OK</a>\n' % oklink)
+	self.oprint ('</td>\n')
+	perc = binary.success_cases * 100.0 / real_cases
+	pcolor = {
+	  100 : 'bgcolor="lightgreen"',
+	  0   : 'bgcolor="red"',
+	}.get (int (perc), 'bgcolor="yellow"')
+	self.oprint ('<td align="right" %s>%.2f%%</td>\n' % (pcolor, perc))
+	self.oprint ('</tr>\n')
+    else:
+	self.oprint ('Empty\n')
+	self.oprint ('</td>\n')
+	self.oprint ('</tr>\n')
+    for tc in binary.testcases:
+      self.handle_testcase (tc, binary)
+  def handle_totals (self):
+    self.oprint ('<tr>')
+    self.oprint ('<td><strong>Totals:</strong> %u Binaries, %u Tests, %u Failed, %u Succeeded</td>' %
+                 (self.bcounter, self.total_tcounter, self.total_fcounter, self.total_tcounter - self.total_fcounter))
+    self.oprint ('<td align="right">%f</td>\n' % self.total_duration)
+    self.oprint ('<td align="center">-</td>\n')
+    if self.total_tcounter != 0:
+        perc = (self.total_tcounter - self.total_fcounter) * 100.0 / self.total_tcounter
+    else:
+        perc = 0.0
+    pcolor = {
+      100 : 'bgcolor="lightgreen"',
+      0   : 'bgcolor="red"',
+    }.get (int (perc), 'bgcolor="yellow"')
+    self.oprint ('<td align="right" %s>%.2f%%</td>\n' % (pcolor, perc))
+    self.oprint ('</tr>\n')
+  def printout (self):
+    self.oprint ('<html><head>\n')
+    self.oprint ('<title>GTester Unit Test Report</title>\n')
+    self.oprint (self.cssjs)
+    self.oprint ('</head>\n')
+    self.oprint ('<body>\n')
+    self.oprint ('<h2>GTester Unit Test Report</h2>\n')
+    self.handle_info ()
+    self.oprint ('<table id="ResultTable" width="100%" border="1">\n<tr>\n')
+    self.oprint ('<th>Program / Testcase </th>\n')
+    self.oprint ('<th style="width:8em">Duration (sec)</th>\n')
+    self.oprint ('<th style="width:5em">View</th>\n')
+    self.oprint ('<th style="width:5em">Result</th>\n')
+    self.oprint ('</tr>\n')
+    for tb in self.binaries:
+      self.handle_binary (tb)
+    self.handle_totals()
+    self.oprint ('</table>\n')
+    self.oprint ('</body>\n')
+    self.oprint ('</html>\n')
+
+
+class SubunitWriter(ReportWriter):
+    """Reporter to output a subunit stream."""
+
+    def printout(self):
+        reporter = subunit.TestProtocolClient(sys.stdout)
+        for binary in self.binaries:
+            for tc in binary.testcases:
+                test = GTestCase(tc, binary)
+                test.run(reporter)
+
+
+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'."""
+        self._case = case
+        self._binary = binary
+        # the name of the case - e.g. /dbusmenu/glib/objects/menuitem/props_boolstr
+        self._path = attribute_as_text(self._case, 'path')
+
+    def id(self):
+        """What test is this? Returns the gtester path for the testcase."""
+        return self._path
+
+    def _get_details(self):
+        """Calculate a details dict for the test - attachments etc."""
+        details = {}
+        result = attribute_as_text(self._case, 'result', 'status')
+        details['filename'] = Content(mime_utf8, lambda:[self._binary.file])
+        details['random_seed'] = Content(mime_utf8,
+            lambda:[self._binary.random_seed])
+        if self._get_outcome() == 'addFailure':
+            # Extract the error details. Skips have no details because its not
+            # skip like unittest does, instead the runner just bypasses N test.
+            txt = self._error_text(self._case)
+            details['error'] = Content(mime_utf8, lambda:[txt])
+        if self._get_outcome() == 'addSuccess':
+            # Sucessful tests may have performance metrics.
+            perflist = list_children(self._case, 'performance')
+            if perflist:
+                presults = []
+                for perf in perflist:
+                    pmin = bool (int (attribute_as_text (perf, 'minimize')))
+                    pmax = bool (int (attribute_as_text (perf, 'maximize')))
+                    pval = float (attribute_as_text (perf, 'value'))
+                    txt = node_as_text (perf)
+                    txt = 'Performance(' + (pmin and 'minimized' or 'maximized'
+                        ) + '): ' + txt.strip() + '\n'
+                    presults += [(pval, txt)]
+                presults.sort()
+                perf_details = [e[1] for e in presults]
+                details['performance'] = Content(mime_utf8, lambda:perf_details)
+        return details
+
+    def _get_outcome(self):
+        if int(attribute_as_text(self._case, 'skipped') + '0'):
+            return 'addSkip'
+        outcome = attribute_as_text(self._case, 'result', 'status')
+        if outcome == 'success':
+            return 'addSuccess'
+        else:
+            return 'addFailure'
+
+    def run(self, result):
+        time = datetime.datetime.utcnow().replace(tzinfo=iso8601.Utc())
+        result.time(time)
+        result.startTest(self)
+        try:
+            outcome = self._get_outcome()
+            details = self._get_details()
+            # Only provide a duration IFF outcome == 'addSuccess' - the main
+            # parser claims bogus results otherwise: in that case emit time as
+            # zero perhaps.
+            if outcome == 'addSuccess':
+                duration = float(node_as_text(self._case, 'duration'))
+                duration = duration * 1000000
+                timedelta = datetime.timedelta(0, 0, duration)
+                time = time + timedelta
+                result.time(time)
+            getattr(result, outcome)(self, details=details)
+        finally:
+            result.stopTest(self)
+
+
+
+# main program handling
+def parse_opts():
+    """Parse program options.
+
+    :return: An options object and the program arguments.
+    """
+    parser = optparse.OptionParser()
+    parser.version =  pkginstall_configvars.get ('glib-version', '0.0-uninstalled')
+    parser.usage = "%prog [OPTIONS] <gtester-log.xml>"
+    parser.description = "Generate HTML reports from the XML log files generated by gtester."
+    parser.epilog = "gtester-report (GLib utils) version %s."% (parser.version,)
+    parser.add_option("-v", "--version", action="store_true", dest="version", default=False,
+        help="Show program version.")
+    parser.add_option("-s", "--subunit", action="store_true", dest="subunit", default=False,
+        help="Output subunit [See https://launchpad.net/subunit/"
+            " Needs python-subunit]")
+    options, files = parser.parse_args()
+    if options.version:
+        print parser.epilog
+        return None, None
+    if len(files) != 1:
+        parser.error("Must supply a log file to parse.")
+    if options.subunit and subunit is None:
+        parser.error("python-subunit is not installed.")
+    return options, files
+
+
+def main():
+  options, files = parse_opts()
+  if options is None:
+    return 0
+  xd = xml.dom.minidom.parse (files[0])
+  rr = ReportReader()
+  rr.trampoline (xd)
+  if not options.subunit:
+      HTMLReportWriter(rr.get_info(), rr.binary_list()).printout()
+  else:
+      SubunitWriter(rr.get_info(), rr.binary_list()).printout()
+
+
+if __name__ == '__main__':
+  main()
diff --git a/dist/usr/include/gio-unix-2.0/gio/gdesktopappinfo.h b/dist/usr/include/gio-unix-2.0/gio/gdesktopappinfo.h
new file mode 100644
index 0000000..b1be8d5
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gdesktopappinfo.h
@@ -0,0 +1,158 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_DESKTOP_APP_INFO_H__
+#define __G_DESKTOP_APP_INFO_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DESKTOP_APP_INFO         (g_desktop_app_info_get_type ())
+#define G_DESKTOP_APP_INFO(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfo))
+#define G_DESKTOP_APP_INFO_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass))
+#define G_IS_DESKTOP_APP_INFO(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DESKTOP_APP_INFO))
+#define G_IS_DESKTOP_APP_INFO_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DESKTOP_APP_INFO))
+#define G_DESKTOP_APP_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass))
+
+typedef struct _GDesktopAppInfo        GDesktopAppInfo;
+typedef struct _GDesktopAppInfoClass   GDesktopAppInfoClass;
+
+struct _GDesktopAppInfoClass
+{
+  GObjectClass parent_class;
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_desktop_app_info_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GDesktopAppInfo *g_desktop_app_info_new_from_filename (const char      *filename);
+GLIB_AVAILABLE_IN_ALL
+GDesktopAppInfo *g_desktop_app_info_new_from_keyfile  (GKeyFile        *key_file);
+
+GLIB_AVAILABLE_IN_ALL
+const char *     g_desktop_app_info_get_filename      (GDesktopAppInfo *info);
+
+GLIB_AVAILABLE_IN_2_30
+const char *     g_desktop_app_info_get_generic_name  (GDesktopAppInfo *info);
+GLIB_AVAILABLE_IN_2_30
+const char *     g_desktop_app_info_get_categories    (GDesktopAppInfo *info);
+GLIB_AVAILABLE_IN_2_30
+const char * const *g_desktop_app_info_get_keywords   (GDesktopAppInfo *info);
+GLIB_AVAILABLE_IN_2_30
+gboolean         g_desktop_app_info_get_nodisplay     (GDesktopAppInfo *info);
+GLIB_AVAILABLE_IN_2_30
+gboolean         g_desktop_app_info_get_show_in       (GDesktopAppInfo *info,
+                                                       const gchar     *desktop_env);
+GLIB_AVAILABLE_IN_2_34
+const char *     g_desktop_app_info_get_startup_wm_class (GDesktopAppInfo *info);
+
+GLIB_AVAILABLE_IN_ALL
+GDesktopAppInfo *g_desktop_app_info_new               (const char      *desktop_id);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_desktop_app_info_get_is_hidden     (GDesktopAppInfo *info);
+
+GLIB_AVAILABLE_IN_ALL
+void             g_desktop_app_info_set_desktop_env   (const char      *desktop_env);
+
+GLIB_AVAILABLE_IN_2_36
+gboolean         g_desktop_app_info_has_key           (GDesktopAppInfo *info,
+                                                       const char      *key);
+GLIB_AVAILABLE_IN_2_36
+char *           g_desktop_app_info_get_string        (GDesktopAppInfo *info,
+                                                       const char      *key);
+GLIB_AVAILABLE_IN_2_36
+gboolean         g_desktop_app_info_get_boolean       (GDesktopAppInfo *info,
+                                                       const char      *key);
+
+#ifndef G_DISABLE_DEPRECATED
+
+#define G_TYPE_DESKTOP_APP_INFO_LOOKUP           (g_desktop_app_info_lookup_get_type ())
+#define G_DESKTOP_APP_INFO_LOOKUP(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookup))
+#define G_IS_DESKTOP_APP_INFO_LOOKUP(obj)	 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP))
+#define G_DESKTOP_APP_INFO_LOOKUP_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookupIface))
+
+/**
+ * G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME:
+ *
+ * Extension point for default handler to URI association. See
+ * <link linkend="extending-gio">Extending GIO</link>.
+ */
+#define G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME "gio-desktop-app-info-lookup"
+
+#endif /* G_DISABLE_DEPRECATED */
+
+/**
+ * GDesktopAppInfoLookup:
+ *
+ * Interface that is used by backends to associate default
+ * handlers with URI schemes.
+ */
+typedef struct _GDesktopAppInfoLookup GDesktopAppInfoLookup;
+typedef struct _GDesktopAppInfoLookupIface GDesktopAppInfoLookupIface;
+
+struct _GDesktopAppInfoLookupIface
+{
+  GTypeInterface g_iface;
+
+  GAppInfo * (* get_default_for_uri_scheme) (GDesktopAppInfoLookup *lookup,
+                                             const char            *uri_scheme);
+};
+
+GLIB_DEPRECATED
+GType     g_desktop_app_info_lookup_get_type                   (void) G_GNUC_CONST;
+
+GLIB_DEPRECATED
+GAppInfo *g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup,
+                                                                const char            *uri_scheme);
+
+/**
+ * GDesktopAppLaunchCallback:
+ * @appinfo: a #GDesktopAppInfo
+ * @pid: Process identifier
+ * @user_data: User data
+ *
+ * During invocation, g_desktop_app_info_launch_uris_as_manager() may
+ * create one or more child processes.  This callback is invoked once
+ * for each, providing the process ID.
+ */
+typedef void (*GDesktopAppLaunchCallback) (GDesktopAppInfo  *appinfo,
+					   GPid              pid,
+					   gpointer          user_data);
+
+GLIB_AVAILABLE_IN_2_28
+gboolean    g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo            *appinfo,
+						       GList                      *uris,
+						       GAppLaunchContext          *launch_context,
+						       GSpawnFlags                 spawn_flags,
+						       GSpawnChildSetupFunc        user_setup,
+						       gpointer                    user_setup_data,
+						       GDesktopAppLaunchCallback   pid_callback,
+						       gpointer                    pid_callback_data,
+						       GError                    **error);
+
+
+G_END_DECLS
+
+#endif /* __G_DESKTOP_APP_INFO_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h b/dist/usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h
new file mode 100644
index 0000000..cf045b4
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gfiledescriptorbased.h
@@ -0,0 +1,65 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Christian Kellner
+ *
+ * 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_FILE_DESCRIPTOR_BASED_H__
+#define __G_FILE_DESCRIPTOR_BASED_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_DESCRIPTOR_BASED            (g_file_descriptor_based_get_type ())
+#define G_FILE_DESCRIPTOR_BASED(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_FILE_DESCRIPTOR_BASED, GFileDescriptorBased))
+#define G_IS_FILE_DESCRIPTOR_BASED(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_FILE_DESCRIPTOR_BASED))
+#define G_FILE_DESCRIPTOR_BASED_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_FILE_DESCRIPTOR_BASED, GFileDescriptorBasedIface))
+
+/**
+ * GFileDescriptorBased:
+ *
+ * An interface for file descriptor based io objects.
+ **/
+typedef struct _GFileDescriptorBasedIface   GFileDescriptorBasedIface;
+
+/**
+ * GFileDescriptorBasedIface:
+ * @g_iface: The parent interface.
+ *
+ **/
+struct _GFileDescriptorBasedIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+  int (*get_fd) (GFileDescriptorBased *fd_based);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_file_descriptor_based_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+int      g_file_descriptor_based_get_fd       (GFileDescriptorBased *fd_based);
+
+G_END_DECLS
+
+
+#endif /* __G_FILE_DESCRIPTOR_BASED_H__ */
+
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixconnection.h b/dist/usr/include/gio-unix-2.0/gio/gunixconnection.h
new file mode 100644
index 0000000..bd87374
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixconnection.h
@@ -0,0 +1,100 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_UNIX_CONNECTION_H__
+#define __G_UNIX_CONNECTION_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_CONNECTION                              (g_unix_connection_get_type ())
+#define G_UNIX_CONNECTION(inst)                             (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_UNIX_CONNECTION, GUnixConnection))
+#define G_UNIX_CONNECTION_CLASS(class)                      (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_UNIX_CONNECTION, GUnixConnectionClass))
+#define G_IS_UNIX_CONNECTION(inst)                          (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_UNIX_CONNECTION))
+#define G_IS_UNIX_CONNECTION_CLASS(class)                   (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_UNIX_CONNECTION))
+#define G_UNIX_CONNECTION_GET_CLASS(inst)                   (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_UNIX_CONNECTION, GUnixConnectionClass))
+
+typedef struct _GUnixConnection                             GUnixConnection;
+typedef struct _GUnixConnectionPrivate                      GUnixConnectionPrivate;
+typedef struct _GUnixConnectionClass                        GUnixConnectionClass;
+
+struct _GUnixConnectionClass
+{
+  GSocketConnectionClass parent_class;
+};
+
+struct _GUnixConnection
+{
+  GSocketConnection parent_instance;
+  GUnixConnectionPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_unix_connection_get_type                      (void);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_unix_connection_send_fd                       (GUnixConnection      *connection,
+                                                                         gint                  fd,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gint                    g_unix_connection_receive_fd                    (GUnixConnection      *connection,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_unix_connection_send_credentials              (GUnixConnection      *connection,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_2_32
+void                    g_unix_connection_send_credentials_async        (GUnixConnection      *connection,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_unix_connection_send_credentials_finish       (GUnixConnection      *connection,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+
+GLIB_AVAILABLE_IN_2_32
+GCredentials           *g_unix_connection_receive_credentials           (GUnixConnection      *connection,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_2_32
+void                    g_unix_connection_receive_credentials_async     (GUnixConnection      *connection,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GCredentials           *g_unix_connection_receive_credentials_finish    (GUnixConnection      *connection,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_CONNECTION_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h b/dist/usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h
new file mode 100644
index 0000000..17b4a31
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixcredentialsmessage.h
@@ -0,0 +1,87 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright (C) 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_UNIX_CREDENTIALS_MESSAGE_H__
+#define __G_UNIX_CREDENTIALS_MESSAGE_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_CREDENTIALS_MESSAGE         (g_unix_credentials_message_get_type ())
+#define G_UNIX_CREDENTIALS_MESSAGE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessage))
+#define G_UNIX_CREDENTIALS_MESSAGE_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST ((c), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessageClass))
+#define G_IS_UNIX_CREDENTIALS_MESSAGE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE))
+#define G_IS_UNIX_CREDENTIALS_MESSAGE_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE ((c), G_TYPE_UNIX_CREDENTIALS_MESSAGE))
+#define G_UNIX_CREDENTIALS_MESSAGE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_CREDENTIALS_MESSAGE, GUnixCredentialsMessageClass))
+
+typedef struct _GUnixCredentialsMessagePrivate  GUnixCredentialsMessagePrivate;
+typedef struct _GUnixCredentialsMessageClass    GUnixCredentialsMessageClass;
+
+/**
+ * GUnixCredentialsMessageClass:
+ *
+ * Class structure for #GUnixCredentialsMessage.
+ *
+ * Since: 2.26
+ */
+struct _GUnixCredentialsMessageClass
+{
+  GSocketControlMessageClass parent_class;
+
+  /*< private >*/
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+};
+
+/**
+ * GUnixCredentialsMessage:
+ *
+ * The #GUnixCredentialsMessage structure contains only private data
+ * and should only be accessed using the provided API.
+ *
+ * Since: 2.26
+ */
+struct _GUnixCredentialsMessage
+{
+  GSocketControlMessage parent_instance;
+  GUnixCredentialsMessagePrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_unix_credentials_message_get_type             (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GSocketControlMessage *g_unix_credentials_message_new                  (void);
+GLIB_AVAILABLE_IN_ALL
+GSocketControlMessage *g_unix_credentials_message_new_with_credentials (GCredentials *credentials);
+GLIB_AVAILABLE_IN_ALL
+GCredentials          *g_unix_credentials_message_get_credentials      (GUnixCredentialsMessage *message);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_unix_credentials_message_is_supported         (void);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_CREDENTIALS_MESSAGE_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixfdlist.h b/dist/usr/include/gio-unix-2.0/gio/gunixfdlist.h
new file mode 100644
index 0000000..6bbfb48
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixfdlist.h
@@ -0,0 +1,96 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_UNIX_FD_LIST_H__
+#define __G_UNIX_FD_LIST_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_FD_LIST                                 (g_unix_fd_list_get_type ())
+#define G_UNIX_FD_LIST(inst)                                (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_UNIX_FD_LIST, GUnixFDList))
+#define G_UNIX_FD_LIST_CLASS(class)                         (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_UNIX_FD_LIST, GUnixFDListClass))
+#define G_IS_UNIX_FD_LIST(inst)                             (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_UNIX_FD_LIST))
+#define G_IS_UNIX_FD_LIST_CLASS(class)                      (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_UNIX_FD_LIST))
+#define G_UNIX_FD_LIST_GET_CLASS(inst)                      (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_UNIX_FD_LIST, GUnixFDListClass))
+
+typedef struct _GUnixFDListPrivate                       GUnixFDListPrivate;
+typedef struct _GUnixFDListClass                         GUnixFDListClass;
+
+struct _GUnixFDListClass
+{
+  GObjectClass parent_class;
+
+  /*< private >*/
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+struct _GUnixFDList
+{
+  GObject parent_instance;
+  GUnixFDListPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_unix_fd_list_get_type                         (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GUnixFDList *           g_unix_fd_list_new                              (void);
+GLIB_AVAILABLE_IN_ALL
+GUnixFDList *           g_unix_fd_list_new_from_array                   (const gint   *fds,
+                                                                         gint          n_fds);
+
+GLIB_AVAILABLE_IN_ALL
+gint                    g_unix_fd_list_append                           (GUnixFDList  *list,
+                                                                         gint          fd,
+                                                                         GError      **error);
+
+GLIB_AVAILABLE_IN_ALL
+gint                    g_unix_fd_list_get_length                       (GUnixFDList  *list);
+
+GLIB_AVAILABLE_IN_ALL
+gint                    g_unix_fd_list_get                              (GUnixFDList  *list,
+                                                                         gint          index_,
+                                                                         GError      **error);
+
+GLIB_AVAILABLE_IN_ALL
+const gint *            g_unix_fd_list_peek_fds                         (GUnixFDList  *list,
+                                                                         gint         *length);
+
+GLIB_AVAILABLE_IN_ALL
+gint *                  g_unix_fd_list_steal_fds                        (GUnixFDList  *list,
+                                                                         gint         *length);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_FD_LIST_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixfdmessage.h b/dist/usr/include/gio-unix-2.0/gio/gunixfdmessage.h
new file mode 100644
index 0000000..41f9b0a
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixfdmessage.h
@@ -0,0 +1,84 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_UNIX_FD_MESSAGE_H__
+#define __G_UNIX_FD_MESSAGE_H__
+
+#include <gio/gio.h>
+#include <gio/gunixfdlist.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_FD_MESSAGE                              (g_unix_fd_message_get_type ())
+#define G_UNIX_FD_MESSAGE(inst)                             (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessage))
+#define G_UNIX_FD_MESSAGE_CLASS(class)                      (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessageClass))
+#define G_IS_UNIX_FD_MESSAGE(inst)                          (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_UNIX_FD_MESSAGE))
+#define G_IS_UNIX_FD_MESSAGE_CLASS(class)                   (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_UNIX_FD_MESSAGE))
+#define G_UNIX_FD_MESSAGE_GET_CLASS(inst)                   (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessageClass))
+
+typedef struct _GUnixFDMessagePrivate                       GUnixFDMessagePrivate;
+typedef struct _GUnixFDMessageClass                         GUnixFDMessageClass;
+typedef struct _GUnixFDMessage                              GUnixFDMessage;
+
+struct _GUnixFDMessageClass
+{
+  GSocketControlMessageClass parent_class;
+
+  /*< private >*/
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+};
+
+struct _GUnixFDMessage
+{
+  GSocketControlMessage parent_instance;
+  GUnixFDMessagePrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_unix_fd_message_get_type                      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GSocketControlMessage * g_unix_fd_message_new_with_fd_list              (GUnixFDList     *fd_list);
+GLIB_AVAILABLE_IN_ALL
+GSocketControlMessage * g_unix_fd_message_new                           (void);
+
+GLIB_AVAILABLE_IN_ALL
+GUnixFDList *           g_unix_fd_message_get_fd_list                   (GUnixFDMessage  *message);
+
+GLIB_AVAILABLE_IN_ALL
+gint *                  g_unix_fd_message_steal_fds                     (GUnixFDMessage  *message,
+                                                                         gint            *length);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_unix_fd_message_append_fd                     (GUnixFDMessage  *message,
+                                                                         gint             fd,
+                                                                         GError         **error);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_FD_MESSAGE_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixinputstream.h b/dist/usr/include/gio-unix-2.0/gio/gunixinputstream.h
new file mode 100644
index 0000000..a8beb88
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixinputstream.h
@@ -0,0 +1,83 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_UNIX_INPUT_STREAM_H__
+#define __G_UNIX_INPUT_STREAM_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_INPUT_STREAM         (g_unix_input_stream_get_type ())
+#define G_UNIX_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_INPUT_STREAM, GUnixInputStream))
+#define G_UNIX_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_UNIX_INPUT_STREAM, GUnixInputStreamClass))
+#define G_IS_UNIX_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_INPUT_STREAM))
+#define G_IS_UNIX_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_UNIX_INPUT_STREAM))
+#define G_UNIX_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_INPUT_STREAM, GUnixInputStreamClass))
+
+/**
+ * GUnixInputStream:
+ *
+ * Implements #GInputStream for reading from selectable unix file descriptors
+ **/
+typedef struct _GUnixInputStream         GUnixInputStream;
+typedef struct _GUnixInputStreamClass    GUnixInputStreamClass;
+typedef struct _GUnixInputStreamPrivate  GUnixInputStreamPrivate;
+
+struct _GUnixInputStream
+{
+  GInputStream parent_instance;
+
+  /*< private >*/
+  GUnixInputStreamPrivate *priv;
+};
+
+struct _GUnixInputStreamClass
+{
+  GInputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_unix_input_stream_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GInputStream * g_unix_input_stream_new          (gint              fd,
+                                                 gboolean          close_fd);
+GLIB_AVAILABLE_IN_ALL
+void           g_unix_input_stream_set_close_fd (GUnixInputStream *stream,
+                                                 gboolean          close_fd);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_input_stream_get_close_fd (GUnixInputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+gint           g_unix_input_stream_get_fd       (GUnixInputStream *stream);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixmounts.h b/dist/usr/include/gio-unix-2.0/gio/gunixmounts.h
new file mode 100644
index 0000000..bd269a3
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixmounts.h
@@ -0,0 +1,141 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_UNIX_MOUNTS_H__
+#define __G_UNIX_MOUNTS_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GUnixMountEntry:
+ *
+ * Defines a Unix mount entry (e.g. <filename>/media/cdrom</filename>).
+ * This corresponds roughly to a mtab entry.
+ **/
+typedef struct _GUnixMountEntry GUnixMountEntry;
+
+/**
+ * GUnixMountPoint:
+ *
+ * Defines a Unix mount point (e.g. <filename>/dev</filename>).
+ * This corresponds roughly to a fstab entry.
+ **/
+typedef struct _GUnixMountPoint GUnixMountPoint;
+
+/**
+ * GUnixMountMonitor:
+ *
+ * Watches #GUnixMount<!-- -->s for changes.
+ **/
+typedef struct _GUnixMountMonitor      GUnixMountMonitor;
+typedef struct _GUnixMountMonitorClass GUnixMountMonitorClass;
+
+#define G_TYPE_UNIX_MOUNT_MONITOR        (g_unix_mount_monitor_get_type ())
+#define G_UNIX_MOUNT_MONITOR(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_MOUNT_MONITOR, GUnixMountMonitor))
+#define G_UNIX_MOUNT_MONITOR_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_UNIX_MOUNT_MONITOR, GUnixMountMonitorClass))
+#define G_IS_UNIX_MOUNT_MONITOR(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_MOUNT_MONITOR))
+#define G_IS_UNIX_MOUNT_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_UNIX_MOUNT_MONITOR))
+
+GLIB_AVAILABLE_IN_ALL
+void           g_unix_mount_free                    (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+void           g_unix_mount_point_free              (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+gint           g_unix_mount_compare                 (GUnixMountEntry    *mount1,
+						     GUnixMountEntry    *mount2);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_get_mount_path          (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_get_device_path         (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_get_fs_type             (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_is_readonly             (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_is_system_internal      (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_guess_can_eject         (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_guess_should_display    (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+char *         g_unix_mount_guess_name              (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+GIcon *        g_unix_mount_guess_icon              (GUnixMountEntry    *mount_entry);
+GLIB_AVAILABLE_IN_ALL
+GIcon *        g_unix_mount_guess_symbolic_icon     (GUnixMountEntry    *mount_entry);
+
+
+GLIB_AVAILABLE_IN_ALL
+gint           g_unix_mount_point_compare           (GUnixMountPoint    *mount1,
+						     GUnixMountPoint    *mount2);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_point_get_mount_path    (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_point_get_device_path   (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+const char *   g_unix_mount_point_get_fs_type       (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_2_32
+const char *   g_unix_mount_point_get_options       (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_point_is_readonly       (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_point_is_user_mountable (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_point_is_loopback       (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_point_guess_can_eject   (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+char *         g_unix_mount_point_guess_name        (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+GIcon *        g_unix_mount_point_guess_icon        (GUnixMountPoint    *mount_point);
+GLIB_AVAILABLE_IN_ALL
+GIcon *        g_unix_mount_point_guess_symbolic_icon (GUnixMountPoint    *mount_point);
+
+
+GLIB_AVAILABLE_IN_ALL
+GList *        g_unix_mount_points_get              (guint64            *time_read);
+GLIB_AVAILABLE_IN_ALL
+GList *        g_unix_mounts_get                    (guint64            *time_read);
+GLIB_AVAILABLE_IN_ALL
+GUnixMountEntry *g_unix_mount_at                    (const char         *mount_path,
+						     guint64            *time_read);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mounts_changed_since          (guint64             time);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_unix_mount_points_changed_since    (guint64             time);
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_unix_mount_monitor_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GUnixMountMonitor *g_unix_mount_monitor_new            (void);
+GLIB_AVAILABLE_IN_ALL
+void               g_unix_mount_monitor_set_rate_limit (GUnixMountMonitor *mount_monitor,
+                                                        int                limit_msec);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_unix_is_mount_path_system_internal (const char *mount_path);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_MOUNTS_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixoutputstream.h b/dist/usr/include/gio-unix-2.0/gio/gunixoutputstream.h
new file mode 100644
index 0000000..9ef2e52
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixoutputstream.h
@@ -0,0 +1,82 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_UNIX_OUTPUT_STREAM_H__
+#define __G_UNIX_OUTPUT_STREAM_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_OUTPUT_STREAM         (g_unix_output_stream_get_type ())
+#define G_UNIX_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_OUTPUT_STREAM, GUnixOutputStream))
+#define G_UNIX_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_UNIX_OUTPUT_STREAM, GUnixOutputStreamClass))
+#define G_IS_UNIX_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_OUTPUT_STREAM))
+#define G_IS_UNIX_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_UNIX_OUTPUT_STREAM))
+#define G_UNIX_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_OUTPUT_STREAM, GUnixOutputStreamClass))
+
+/**
+ * GUnixOutputStream:
+ *
+ * Implements #GOutputStream for outputting to selectable unix file descriptors
+ **/
+typedef struct _GUnixOutputStream         GUnixOutputStream;
+typedef struct _GUnixOutputStreamClass    GUnixOutputStreamClass;
+typedef struct _GUnixOutputStreamPrivate  GUnixOutputStreamPrivate;
+
+struct _GUnixOutputStream
+{
+  GOutputStream parent_instance;
+
+  /*< private >*/
+  GUnixOutputStreamPrivate *priv;
+};
+
+struct _GUnixOutputStreamClass
+{
+  GOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_unix_output_stream_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GOutputStream * g_unix_output_stream_new          (gint     fd,
+                                                   gboolean close_fd);
+GLIB_AVAILABLE_IN_ALL
+void            g_unix_output_stream_set_close_fd (GUnixOutputStream *stream,
+                                                   gboolean           close_fd);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_unix_output_stream_get_close_fd (GUnixOutputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+gint            g_unix_output_stream_get_fd       (GUnixOutputStream *stream);
+G_END_DECLS
+
+#endif /* __G_UNIX_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/gio-unix-2.0/gio/gunixsocketaddress.h b/dist/usr/include/gio-unix-2.0/gio/gunixsocketaddress.h
new file mode 100644
index 0000000..39d5821
--- /dev/null
+++ b/dist/usr/include/gio-unix-2.0/gio/gunixsocketaddress.h
@@ -0,0 +1,81 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
+ *
+ * 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ */
+
+#ifndef __G_UNIX_SOCKET_ADDRESS_H__
+#define __G_UNIX_SOCKET_ADDRESS_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_UNIX_SOCKET_ADDRESS         (g_unix_socket_address_get_type ())
+#define G_UNIX_SOCKET_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddress))
+#define G_UNIX_SOCKET_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddressClass))
+#define G_IS_UNIX_SOCKET_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_UNIX_SOCKET_ADDRESS))
+#define G_IS_UNIX_SOCKET_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_UNIX_SOCKET_ADDRESS))
+#define G_UNIX_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_UNIX_SOCKET_ADDRESS, GUnixSocketAddressClass))
+
+typedef struct _GUnixSocketAddress        GUnixSocketAddress;
+typedef struct _GUnixSocketAddressClass   GUnixSocketAddressClass;
+typedef struct _GUnixSocketAddressPrivate GUnixSocketAddressPrivate;
+
+struct _GUnixSocketAddress
+{
+  GSocketAddress parent_instance;
+
+  /*< private >*/
+  GUnixSocketAddressPrivate *priv;
+};
+
+struct _GUnixSocketAddressClass
+{
+  GSocketAddressClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_unix_socket_address_get_type    (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_unix_socket_address_new             (const gchar        *path);
+GLIB_DEPRECATED_FOR(g_unix_socket_address_new_with_type)
+GSocketAddress *g_unix_socket_address_new_abstract    (const gchar        *path,
+                                                       gint                path_len);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_unix_socket_address_new_with_type   (const gchar            *path,
+                                                       gint                    path_len,
+                                                       GUnixSocketAddressType  type);
+GLIB_AVAILABLE_IN_ALL
+const char *    g_unix_socket_address_get_path        (GUnixSocketAddress *address);
+GLIB_AVAILABLE_IN_ALL
+gsize           g_unix_socket_address_get_path_len    (GUnixSocketAddress *address);
+GLIB_AVAILABLE_IN_ALL
+GUnixSocketAddressType g_unix_socket_address_get_address_type (GUnixSocketAddress *address);
+GLIB_DEPRECATED
+gboolean        g_unix_socket_address_get_is_abstract (GUnixSocketAddress *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_unix_socket_address_abstract_names_supported (void);
+
+G_END_DECLS
+
+#endif /* __G_UNIX_SOCKET_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gaction.h b/dist/usr/include/glib-2.0/gio/gaction.h
new file mode 100644
index 0000000..b153db6
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gaction.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_ACTION_H__
+#define __G_ACTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ACTION                                       (g_action_get_type ())
+#define G_ACTION(inst)                                      (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_ACTION, GAction))
+#define G_IS_ACTION(inst)                                   (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_ACTION))
+#define G_ACTION_GET_IFACE(inst)                            (G_TYPE_INSTANCE_GET_INTERFACE ((inst),                  \
+                                                             G_TYPE_ACTION, GActionInterface))
+
+typedef struct _GActionInterface                            GActionInterface;
+
+struct _GActionInterface
+{
+  GTypeInterface g_iface;
+
+  /* virtual functions */
+  const gchar *        (* get_name)             (GAction  *action);
+  const GVariantType * (* get_parameter_type)   (GAction  *action);
+  const GVariantType * (* get_state_type)       (GAction  *action);
+  GVariant *           (* get_state_hint)       (GAction  *action);
+
+  gboolean             (* get_enabled)          (GAction  *action);
+  GVariant *           (* get_state)            (GAction  *action);
+
+  void                 (* change_state)         (GAction  *action,
+                                                 GVariant *value);
+  void                 (* activate)             (GAction  *action,
+                                                 GVariant *parameter);
+};
+
+GLIB_AVAILABLE_IN_2_30
+GType                   g_action_get_type                               (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *           g_action_get_name                               (GAction            *action);
+GLIB_AVAILABLE_IN_ALL
+const GVariantType *    g_action_get_parameter_type                     (GAction            *action);
+GLIB_AVAILABLE_IN_ALL
+const GVariantType *    g_action_get_state_type                         (GAction            *action);
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_action_get_state_hint                         (GAction            *action);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_action_get_enabled                            (GAction            *action);
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_action_get_state                              (GAction            *action);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_change_state                           (GAction            *action,
+                                                                         GVariant           *value);
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_activate                               (GAction            *action,
+                                                                         GVariant           *parameter);
+
+GLIB_AVAILABLE_IN_2_38
+gboolean                g_action_parse_detailed_name                    (const gchar        *detailed_name,
+                                                                         gchar             **action_name,
+                                                                         GVariant          **target_value,
+                                                                         GError            **error);
+G_END_DECLS
+
+#endif /* __G_ACTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gactiongroup.h b/dist/usr/include/glib-2.0/gio/gactiongroup.h
new file mode 100644
index 0000000..9fc3b2b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gactiongroup.h
@@ -0,0 +1,163 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_ACTION_GROUP_H__
+#define __G_ACTION_GROUP_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+
+#define G_TYPE_ACTION_GROUP                                 (g_action_group_get_type ())
+#define G_ACTION_GROUP(inst)                                (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_ACTION_GROUP, GActionGroup))
+#define G_IS_ACTION_GROUP(inst)                             (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_ACTION_GROUP))
+#define G_ACTION_GROUP_GET_IFACE(inst)                      (G_TYPE_INSTANCE_GET_INTERFACE ((inst),                  \
+                                                             G_TYPE_ACTION_GROUP, GActionGroupInterface))
+
+typedef struct _GActionGroupInterface                       GActionGroupInterface;
+
+struct _GActionGroupInterface
+{
+  GTypeInterface g_iface;
+
+  /* virtual functions */
+  gboolean              (* has_action)                 (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  gchar **              (* list_actions)               (GActionGroup  *action_group);
+
+  gboolean              (* get_action_enabled)         (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  const GVariantType *  (* get_action_parameter_type)  (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  const GVariantType *  (* get_action_state_type)      (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  GVariant *            (* get_action_state_hint)      (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  GVariant *            (* get_action_state)           (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+
+  void                  (* change_action_state)        (GActionGroup  *action_group,
+                                                        const gchar   *action_name,
+                                                        GVariant      *value);
+
+  void                  (* activate_action)            (GActionGroup  *action_group,
+                                                        const gchar   *action_name,
+                                                        GVariant      *parameter);
+
+  /* signals */
+  void                  (* action_added)               (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+  void                  (* action_removed)             (GActionGroup  *action_group,
+                                                        const gchar   *action_name);
+  void                  (* action_enabled_changed)     (GActionGroup  *action_group,
+                                                        const gchar   *action_name,
+                                                        gboolean       enabled);
+  void                  (* action_state_changed)       (GActionGroup   *action_group,
+                                                        const gchar    *action_name,
+                                                        GVariant       *state);
+
+  /* more virtual functions */
+  gboolean              (* query_action)               (GActionGroup        *action_group,
+                                                        const gchar         *action_name,
+                                                        gboolean            *enabled,
+                                                        const GVariantType **parameter_type,
+                                                        const GVariantType **state_type,
+                                                        GVariant           **state_hint,
+                                                        GVariant           **state);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_action_group_get_type                         (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_action_group_has_action                       (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+gchar **                g_action_group_list_actions                     (GActionGroup *action_group);
+
+GLIB_AVAILABLE_IN_ALL
+const GVariantType *    g_action_group_get_action_parameter_type        (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+const GVariantType *    g_action_group_get_action_state_type            (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_action_group_get_action_state_hint            (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_action_group_get_action_enabled               (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_action_group_get_action_state                 (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_change_action_state              (GActionGroup *action_group,
+                                                                         const gchar  *action_name,
+                                                                         GVariant     *value);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_activate_action                  (GActionGroup *action_group,
+                                                                         const gchar  *action_name,
+                                                                         GVariant     *parameter);
+
+/* signals */
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_action_added                     (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_action_removed                   (GActionGroup *action_group,
+                                                                         const gchar  *action_name);
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_action_enabled_changed           (GActionGroup *action_group,
+                                                                         const gchar  *action_name,
+                                                                         gboolean      enabled);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_action_group_action_state_changed             (GActionGroup *action_group,
+                                                                         const gchar  *action_name,
+                                                                         GVariant     *state);
+
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_action_group_query_action                     (GActionGroup        *action_group,
+                                                                         const gchar         *action_name,
+                                                                         gboolean            *enabled,
+                                                                         const GVariantType **parameter_type,
+                                                                         const GVariantType **state_type,
+                                                                         GVariant           **state_hint,
+                                                                         GVariant           **state);
+
+G_END_DECLS
+
+#endif /* __G_ACTION_GROUP_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gactiongroupexporter.h b/dist/usr/include/glib-2.0/gio/gactiongroupexporter.h
new file mode 100644
index 0000000..31f21f2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gactiongroupexporter.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ * Copyright © 2011 Canonical Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+
+#ifndef __G_ACTION_GROUP_EXPORTER_H__
+#define __G_ACTION_GROUP_EXPORTER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_2_32
+guint                   g_dbus_connection_export_action_group           (GDBusConnection  *connection,
+                                                                         const gchar      *object_path,
+                                                                         GActionGroup     *action_group,
+                                                                         GError          **error);
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_dbus_connection_unexport_action_group         (GDBusConnection  *connection,
+                                                                         guint             export_id);
+
+G_END_DECLS
+
+#endif /* __G_ACTION_GROUP_EXPORTER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gactionmap.h b/dist/usr/include/glib-2.0/gio/gactionmap.h
new file mode 100644
index 0000000..93451a8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gactionmap.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_ACTION_MAP_H__
+#define __G_ACTION_MAP_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+
+#define G_TYPE_ACTION_MAP                                   (g_action_map_get_type ())
+#define G_ACTION_MAP(inst)                                  (G_TYPE_CHECK_INSTANCE_CAST ((inst),                      \
+                                                             G_TYPE_ACTION_MAP, GActionMap))
+#define G_IS_ACTION_MAP(inst)                               (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                      \
+                                                             G_TYPE_ACTION_MAP))
+#define G_ACTION_MAP_GET_IFACE(inst)                        (G_TYPE_INSTANCE_GET_INTERFACE ((inst),                   \
+                                                             G_TYPE_ACTION_MAP, GActionMapInterface))
+
+typedef struct _GActionMapInterface                         GActionMapInterface;
+typedef struct _GActionEntry                                GActionEntry;
+
+struct _GActionMapInterface
+{
+  GTypeInterface g_iface;
+
+  GAction * (* lookup_action) (GActionMap  *action_map,
+                               const gchar *action_name);
+  void      (* add_action)    (GActionMap  *action_map,
+                               GAction     *action);
+  void      (* remove_action) (GActionMap  *action_map,
+                               const gchar *action_name);
+};
+
+struct _GActionEntry
+{
+  const gchar *name;
+
+  void (* activate) (GSimpleAction *action,
+                     GVariant      *parameter,
+                     gpointer       user_data);
+
+  const gchar *parameter_type;
+
+  const gchar *state;
+
+  void (* change_state) (GSimpleAction *action,
+                         GVariant      *value,
+                         gpointer       user_data);
+
+  /*< private >*/
+  gsize padding[3];
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType                   g_action_map_get_type                           (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+GAction *               g_action_map_lookup_action                      (GActionMap         *action_map,
+                                                                         const gchar        *action_name);
+GLIB_AVAILABLE_IN_2_32
+void                    g_action_map_add_action                         (GActionMap         *action_map,
+                                                                         GAction            *action);
+GLIB_AVAILABLE_IN_2_32
+void                    g_action_map_remove_action                      (GActionMap         *action_map,
+                                                                         const gchar        *action_name);
+GLIB_AVAILABLE_IN_2_32
+void                    g_action_map_add_action_entries                 (GActionMap         *action_map,
+                                                                         const GActionEntry *entries,
+                                                                         gint                n_entries,
+                                                                         gpointer            user_data);
+
+G_END_DECLS
+
+#endif /* __G_ACTION_MAP_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gappinfo.h b/dist/usr/include/glib-2.0/gio/gappinfo.h
new file mode 100644
index 0000000..baed4c4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gappinfo.h
@@ -0,0 +1,301 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_APP_INFO_H__
+#define __G_APP_INFO_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_APP_INFO            (g_app_info_get_type ())
+#define G_APP_INFO(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_APP_INFO, GAppInfo))
+#define G_IS_APP_INFO(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_APP_INFO))
+#define G_APP_INFO_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_APP_INFO, GAppInfoIface))
+
+#define G_TYPE_APP_LAUNCH_CONTEXT         (g_app_launch_context_get_type ())
+#define G_APP_LAUNCH_CONTEXT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContext))
+#define G_APP_LAUNCH_CONTEXT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContextClass))
+#define G_IS_APP_LAUNCH_CONTEXT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_APP_LAUNCH_CONTEXT))
+#define G_IS_APP_LAUNCH_CONTEXT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_APP_LAUNCH_CONTEXT))
+#define G_APP_LAUNCH_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_APP_LAUNCH_CONTEXT, GAppLaunchContextClass))
+
+typedef struct _GAppLaunchContextClass   GAppLaunchContextClass;
+typedef struct _GAppLaunchContextPrivate GAppLaunchContextPrivate;
+
+/**
+ * GAppInfo:
+ *
+ * Information about an installed application and methods to launch
+ * it (with file arguments).
+ */
+
+/**
+ * GAppInfoIface:
+ * @g_iface: The parent interface.
+ * @dup: Copies a #GAppInfo.
+ * @equal: Checks two #GAppInfo<!-- -->s for equality.
+ * @get_id: Gets a string identifier for a #GAppInfo.
+ * @get_name: Gets the name of the application for a #GAppInfo.
+ * @get_description: Gets a short description for the application described by the #GAppInfo.
+ * @get_executable: Gets the executable name for the #GAppInfo.
+ * @get_icon: Gets the #GIcon for the #GAppInfo.
+ * @launch: Launches an application specified by the #GAppInfo.
+ * @supports_uris: Indicates whether the application specified supports launching URIs.
+ * @supports_files: Indicates whether the application specified accepts filename arguments.
+ * @launch_uris: Launches an application with a list of URIs.
+ * @should_show: Returns whether an application should be shown (e.g. when getting a list of installed applications).
+ * <ulink url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt">
+ * <citetitle>FreeDesktop.Org Startup Notification Specification</citetitle></ulink>.
+ * @set_as_default_for_type: Sets an application as default for a given content type.
+ * @set_as_default_for_extension: Sets an application as default for a given file extension.
+ * @add_supports_type: Adds to the #GAppInfo information about supported file types.
+ * @can_remove_supports_type: Checks for support for removing supported file types from a #GAppInfo.
+ * @remove_supports_type: Removes a supported application type from a #GAppInfo.
+ * @can_delete: Checks if a #GAppInfo can be deleted. Since 2.20
+ * @do_delete: Deletes a #GAppInfo. Since 2.20
+ * @get_commandline: Gets the commandline for the #GAppInfo. Since 2.20
+ * @get_display_name: Gets the display name for the #GAppInfo. Since 2.24
+ * @set_as_last_used_for_type: Sets the application as the last used. See g_app_info_set_as_last_used_for_type().
+ *
+ * Application Information interface, for operating system portability.
+ */
+typedef struct _GAppInfoIface    GAppInfoIface;
+
+struct _GAppInfoIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GAppInfo *   (* dup)                          (GAppInfo           *appinfo);
+  gboolean     (* equal)                        (GAppInfo           *appinfo1,
+                                                 GAppInfo           *appinfo2);
+  const char * (* get_id)                       (GAppInfo           *appinfo);
+  const char * (* get_name)                     (GAppInfo           *appinfo);
+  const char * (* get_description)              (GAppInfo           *appinfo);
+  const char * (* get_executable)               (GAppInfo           *appinfo);
+  GIcon *      (* get_icon)                     (GAppInfo           *appinfo);
+  gboolean     (* launch)                       (GAppInfo           *appinfo,
+                                                 GList              *files,
+                                                 GAppLaunchContext  *launch_context,
+                                                 GError            **error);
+  gboolean     (* supports_uris)                (GAppInfo           *appinfo);
+  gboolean     (* supports_files)               (GAppInfo           *appinfo);
+  gboolean     (* launch_uris)                  (GAppInfo           *appinfo,
+                                                 GList              *uris,
+                                                 GAppLaunchContext  *launch_context,
+                                                 GError            **error);
+  gboolean     (* should_show)                  (GAppInfo           *appinfo);
+
+  /* For changing associations */
+  gboolean     (* set_as_default_for_type)      (GAppInfo           *appinfo,
+                                                 const char         *content_type,
+                                                 GError            **error);
+  gboolean     (* set_as_default_for_extension) (GAppInfo           *appinfo,
+                                                 const char         *extension,
+                                                 GError            **error);
+  gboolean     (* add_supports_type)            (GAppInfo           *appinfo,
+                                                 const char         *content_type,
+                                                 GError            **error);
+  gboolean     (* can_remove_supports_type)     (GAppInfo           *appinfo);
+  gboolean     (* remove_supports_type)         (GAppInfo           *appinfo,
+                                                 const char         *content_type,
+                                                 GError            **error);
+  gboolean     (* can_delete)                   (GAppInfo           *appinfo);
+  gboolean     (* do_delete)                    (GAppInfo           *appinfo);
+  const char * (* get_commandline)              (GAppInfo           *appinfo);
+  const char * (* get_display_name)             (GAppInfo           *appinfo);
+  gboolean     (* set_as_last_used_for_type)    (GAppInfo           *appinfo,
+                                                 const char         *content_type,
+                                                 GError            **error);
+  const char ** (* get_supported_types)         (GAppInfo           *appinfo);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType       g_app_info_get_type                     (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GAppInfo *  g_app_info_create_from_commandline      (const char           *commandline,
+                                                     const char           *application_name,
+                                                     GAppInfoCreateFlags   flags,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+GAppInfo *  g_app_info_dup                          (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_equal                        (GAppInfo             *appinfo1,
+                                                     GAppInfo             *appinfo2);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_id                       (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_name                     (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_display_name             (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_description              (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_executable               (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+const char *g_app_info_get_commandline              (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+GIcon *     g_app_info_get_icon                     (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_launch                       (GAppInfo             *appinfo,
+                                                     GList                *files,
+                                                     GAppLaunchContext    *launch_context,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_supports_uris                (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_supports_files               (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_launch_uris                  (GAppInfo             *appinfo,
+                                                     GList                *uris,
+                                                     GAppLaunchContext    *launch_context,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_should_show                  (GAppInfo             *appinfo);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_set_as_default_for_type      (GAppInfo             *appinfo,
+                                                     const char           *content_type,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_set_as_default_for_extension (GAppInfo             *appinfo,
+                                                     const char           *extension,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_add_supports_type            (GAppInfo             *appinfo,
+                                                     const char           *content_type,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_can_remove_supports_type     (GAppInfo             *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_remove_supports_type         (GAppInfo             *appinfo,
+                                                     const char           *content_type,
+                                                     GError              **error);
+GLIB_AVAILABLE_IN_2_34
+const char **g_app_info_get_supported_types         (GAppInfo             *appinfo);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_can_delete                   (GAppInfo   *appinfo);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_delete                       (GAppInfo   *appinfo);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_app_info_set_as_last_used_for_type    (GAppInfo             *appinfo,
+                                                     const char           *content_type,
+                                                     GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+GList *   g_app_info_get_all                     (void);
+GLIB_AVAILABLE_IN_ALL
+GList *   g_app_info_get_all_for_type            (const char  *content_type);
+GLIB_AVAILABLE_IN_ALL
+GList *   g_app_info_get_recommended_for_type    (const gchar *content_type);
+GLIB_AVAILABLE_IN_ALL
+GList *   g_app_info_get_fallback_for_type       (const gchar *content_type);
+
+GLIB_AVAILABLE_IN_ALL
+void      g_app_info_reset_type_associations     (const char  *content_type);
+GLIB_AVAILABLE_IN_ALL
+GAppInfo *g_app_info_get_default_for_type        (const char  *content_type,
+                                                  gboolean     must_support_uris);
+GLIB_AVAILABLE_IN_ALL
+GAppInfo *g_app_info_get_default_for_uri_scheme  (const char  *uri_scheme);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean  g_app_info_launch_default_for_uri      (const char              *uri,
+                                                  GAppLaunchContext       *launch_context,
+                                                  GError                 **error);
+
+/**
+ * GAppLaunchContext:
+ *
+ * Integrating the launch with the launching application. This is used to
+ * handle for instance startup notification and launching the new application
+ * on the same screen as the launching window.
+ */
+struct _GAppLaunchContext
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GAppLaunchContextPrivate *priv;
+};
+
+struct _GAppLaunchContextClass
+{
+  GObjectClass parent_class;
+
+  char * (* get_display)           (GAppLaunchContext *context,
+                                    GAppInfo          *info,
+                                    GList             *files);
+  char * (* get_startup_notify_id) (GAppLaunchContext *context,
+                                    GAppInfo          *info,
+                                    GList             *files);
+  void   (* launch_failed)         (GAppLaunchContext *context,
+                                    const char        *startup_notify_id);
+  void   (* launched)              (GAppLaunchContext *context,
+                                    GAppInfo          *info,
+                                    GVariant          *platform_data);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_app_launch_context_get_type              (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GAppLaunchContext *g_app_launch_context_new                   (void);
+
+GLIB_AVAILABLE_IN_2_32
+void               g_app_launch_context_setenv                (GAppLaunchContext *context,
+                                                               const char        *variable,
+                                                               const char        *value);
+GLIB_AVAILABLE_IN_2_32
+void               g_app_launch_context_unsetenv              (GAppLaunchContext *context,
+                                                               const char        *variable);
+GLIB_AVAILABLE_IN_2_32
+char **            g_app_launch_context_get_environment       (GAppLaunchContext *context);
+
+GLIB_AVAILABLE_IN_ALL
+char *             g_app_launch_context_get_display           (GAppLaunchContext *context,
+                                                               GAppInfo          *info,
+                                                               GList             *files);
+GLIB_AVAILABLE_IN_ALL
+char *             g_app_launch_context_get_startup_notify_id (GAppLaunchContext *context,
+                                                               GAppInfo          *info,
+                                                               GList             *files);
+GLIB_AVAILABLE_IN_ALL
+void               g_app_launch_context_launch_failed         (GAppLaunchContext *context,
+                                                               const char *       startup_notify_id);
+
+G_END_DECLS
+
+#endif /* __G_APP_INFO_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gapplication.h b/dist/usr/include/glib-2.0/gio/gapplication.h
new file mode 100644
index 0000000..5878a7f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gapplication.h
@@ -0,0 +1,206 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_APPLICATION_H__
+#define __G_APPLICATION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_APPLICATION                                  (g_application_get_type ())
+#define G_APPLICATION(inst)                                 (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_APPLICATION, GApplication))
+#define G_APPLICATION_CLASS(class)                          (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_APPLICATION, GApplicationClass))
+#define G_IS_APPLICATION(inst)                              (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_APPLICATION))
+#define G_IS_APPLICATION_CLASS(class)                       (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_APPLICATION))
+#define G_APPLICATION_GET_CLASS(inst)                       (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_APPLICATION, GApplicationClass))
+
+typedef struct _GApplicationPrivate                         GApplicationPrivate;
+typedef struct _GApplicationClass                           GApplicationClass;
+
+/**
+ * GApplication:
+ *
+ * Since: 2.28
+ */
+struct _GApplication
+{
+  /*< private >*/
+  GObject parent_instance;
+
+  GApplicationPrivate *priv;
+};
+
+struct _GApplicationClass
+{
+  /*< private >*/
+  GObjectClass parent_class;
+
+  /*< public >*/
+  /* signals */
+  void                      (* startup)             (GApplication              *application);
+
+  void                      (* activate)            (GApplication              *application);
+
+  void                      (* open)                (GApplication              *application,
+                                                     GFile                    **files,
+                                                     gint                       n_files,
+                                                     const gchar               *hint);
+
+  int                       (* command_line)        (GApplication              *application,
+                                                     GApplicationCommandLine   *command_line);
+
+  /* vfuncs */
+
+  /**
+   * GApplicationClass::local_command_line:
+   * @application: a #GApplication
+   * @arguments: (inout) (array zero-terminated=1): array of command line arguments
+   * @exit_status: (out): exit status to fill after processing the command line.
+   *
+   * This virtual function is always invoked in the local instance. It
+   * gets passed a pointer to a %NULL-terminated copy of @argv and is
+   * expected to remove arguments that it handled (shifting up remaining
+   * arguments).
+   *
+   * The last argument to local_command_line() is a pointer to the @status
+   * variable which can used to set the exit status that is returned from
+   * g_application_run().
+   *
+   * See g_application_run() for more details on #GApplication startup.
+   *
+   * Returns: %TRUE if the commandline has been completely handled
+   */
+  gboolean                  (* local_command_line)  (GApplication              *application,
+                                                     gchar                   ***arguments,
+                                                     int                       *exit_status);
+
+  void                      (* before_emit)         (GApplication              *application,
+                                                     GVariant                  *platform_data);
+  void                      (* after_emit)          (GApplication              *application,
+                                                     GVariant                  *platform_data);
+  void                      (* add_platform_data)   (GApplication              *application,
+                                                     GVariantBuilder           *builder);
+  void                      (* quit_mainloop)       (GApplication              *application);
+  void                      (* run_mainloop)        (GApplication              *application);
+  void                      (* shutdown)            (GApplication              *application);
+
+  gboolean                  (* dbus_register)       (GApplication              *application,
+                                                     GDBusConnection           *connection,
+                                                     const gchar               *object_path,
+                                                     GError                   **error);
+  void                      (* dbus_unregister)     (GApplication              *application,
+                                                     GDBusConnection           *connection,
+                                                     const gchar               *object_path);
+
+  /*< private >*/
+  gpointer padding[9];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_application_get_type                          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_application_id_is_valid                       (const gchar              *application_id);
+
+GLIB_AVAILABLE_IN_ALL
+GApplication *          g_application_new                               (const gchar              *application_id,
+                                                                         GApplicationFlags         flags);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *           g_application_get_application_id                (GApplication             *application);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_set_application_id                (GApplication             *application,
+                                                                         const gchar              *application_id);
+
+GLIB_AVAILABLE_IN_2_34
+GDBusConnection *       g_application_get_dbus_connection               (GApplication             *application);
+GLIB_AVAILABLE_IN_2_34
+const gchar *           g_application_get_dbus_object_path              (GApplication             *application);
+
+GLIB_AVAILABLE_IN_ALL
+guint                   g_application_get_inactivity_timeout            (GApplication             *application);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_set_inactivity_timeout            (GApplication             *application,
+                                                                         guint                     inactivity_timeout);
+
+GLIB_AVAILABLE_IN_ALL
+GApplicationFlags       g_application_get_flags                         (GApplication             *application);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_set_flags                         (GApplication             *application,
+                                                                         GApplicationFlags         flags);
+
+GLIB_DEPRECATED
+void                    g_application_set_action_group                  (GApplication             *application,
+                                                                         GActionGroup             *action_group);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_application_get_is_registered                 (GApplication             *application);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_application_get_is_remote                     (GApplication             *application);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_application_register                          (GApplication             *application,
+                                                                         GCancellable             *cancellable,
+                                                                         GError                  **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_hold                              (GApplication             *application);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_release                           (GApplication             *application);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_activate                          (GApplication             *application);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_open                              (GApplication             *application,
+                                                                         GFile                   **files,
+                                                                         gint                      n_files,
+                                                                         const gchar              *hint);
+
+GLIB_AVAILABLE_IN_ALL
+int                     g_application_run                               (GApplication             *application,
+                                                                         int                       argc,
+                                                                         char                    **argv);
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_application_quit                              (GApplication             *application);
+
+GLIB_AVAILABLE_IN_2_32
+GApplication *          g_application_get_default                       (void);
+GLIB_AVAILABLE_IN_2_32
+void                    g_application_set_default                       (GApplication             *application);
+
+GLIB_AVAILABLE_IN_2_38
+void                    g_application_mark_busy                         (GApplication             *application);
+GLIB_AVAILABLE_IN_2_38
+void                    g_application_unmark_busy                       (GApplication             *application);
+
+G_END_DECLS
+
+#endif /* __G_APPLICATION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gapplicationcommandline.h b/dist/usr/include/glib-2.0/gio/gapplicationcommandline.h
new file mode 100644
index 0000000..5f70d65
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gapplicationcommandline.h
@@ -0,0 +1,121 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_APPLICATION_COMMAND_LINE_H__
+#define __G_APPLICATION_COMMAND_LINE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_APPLICATION_COMMAND_LINE                     (g_application_command_line_get_type ())
+#define G_APPLICATION_COMMAND_LINE(inst)                    (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_APPLICATION_COMMAND_LINE,                        \
+                                                             GApplicationCommandLine))
+#define G_APPLICATION_COMMAND_LINE_CLASS(class)             (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_APPLICATION_COMMAND_LINE,                        \
+                                                             GApplicationCommandLineClass))
+#define G_IS_APPLICATION_COMMAND_LINE(inst)                 (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_APPLICATION_COMMAND_LINE))
+#define G_IS_APPLICATION_COMMAND_LINE_CLASS(class)          (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_APPLICATION_COMMAND_LINE))
+#define G_APPLICATION_COMMAND_LINE_GET_CLASS(inst)          (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_APPLICATION_COMMAND_LINE,                        \
+                                                             GApplicationCommandLineClass))
+
+typedef struct _GApplicationCommandLinePrivate               GApplicationCommandLinePrivate;
+typedef struct _GApplicationCommandLineClass                 GApplicationCommandLineClass;
+
+struct _GApplicationCommandLine
+{
+  /*< private >*/
+  GObject parent_instance;
+
+  GApplicationCommandLinePrivate *priv;
+};
+
+struct _GApplicationCommandLineClass
+{
+  /*< private >*/
+  GObjectClass parent_class;
+
+  void                  (* print_literal)       (GApplicationCommandLine *cmdline,
+                                                 const gchar             *message);
+  void                  (* printerr_literal)    (GApplicationCommandLine *cmdline,
+                                                 const gchar             *message);
+  GInputStream *        (* get_stdin)           (GApplicationCommandLine *cmdline);
+
+  gpointer padding[11];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_application_command_line_get_type             (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gchar **                g_application_command_line_get_arguments        (GApplicationCommandLine   *cmdline,
+                                                                         int                       *argc);
+
+GLIB_AVAILABLE_IN_2_36
+GInputStream *          g_application_command_line_get_stdin            (GApplicationCommandLine   *cmdline);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar * const *   g_application_command_line_get_environ          (GApplicationCommandLine   *cmdline);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *           g_application_command_line_getenv               (GApplicationCommandLine   *cmdline,
+                                                                         const gchar               *name);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *           g_application_command_line_get_cwd              (GApplicationCommandLine   *cmdline);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_application_command_line_get_is_remote        (GApplicationCommandLine   *cmdline);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_command_line_print                (GApplicationCommandLine   *cmdline,
+                                                                         const gchar               *format,
+                                                                         ...) G_GNUC_PRINTF(2, 3);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_command_line_printerr             (GApplicationCommandLine   *cmdline,
+                                                                         const gchar               *format,
+                                                                         ...) G_GNUC_PRINTF(2, 3);
+
+GLIB_AVAILABLE_IN_ALL
+int                     g_application_command_line_get_exit_status      (GApplicationCommandLine   *cmdline);
+GLIB_AVAILABLE_IN_ALL
+void                    g_application_command_line_set_exit_status      (GApplicationCommandLine   *cmdline,
+                                                                         int                        exit_status);
+
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_application_command_line_get_platform_data    (GApplicationCommandLine   *cmdline);
+
+GLIB_AVAILABLE_IN_2_36
+GFile *                 g_application_command_line_create_file_for_arg  (GApplicationCommandLine   *cmdline,
+                                                                         const gchar               *arg);
+
+G_END_DECLS
+
+#endif /* __G_APPLICATION_COMMAND_LINE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gasyncinitable.h b/dist/usr/include/glib-2.0/gio/gasyncinitable.h
new file mode 100644
index 0000000..af5cfb1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gasyncinitable.h
@@ -0,0 +1,126 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_ASYNC_INITABLE_H__
+#define __G_ASYNC_INITABLE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+#include <gio/ginitable.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ASYNC_INITABLE            (g_async_initable_get_type ())
+#define G_ASYNC_INITABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ASYNC_INITABLE, GAsyncInitable))
+#define G_IS_ASYNC_INITABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ASYNC_INITABLE))
+#define G_ASYNC_INITABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ASYNC_INITABLE, GAsyncInitableIface))
+#define G_TYPE_IS_ASYNC_INITABLE(type)   (g_type_is_a ((type), G_TYPE_ASYNC_INITABLE))
+
+/**
+ * GAsyncInitable:
+ *
+ * Interface for asynchronously initializable objects.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GAsyncInitableIface GAsyncInitableIface;
+
+/**
+ * GAsyncInitableIface:
+ * @g_iface: The parent interface.
+ * @init_async: Starts initialization of the object.
+ * @init_finish: Finishes initialization of the object.
+ *
+ * Provides an interface for asynchronous initializing object such that
+ * initialization may fail.
+ *
+ * Since: 2.22
+ **/
+struct _GAsyncInitableIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  void     (* init_async)  (GAsyncInitable      *initable,
+			    int                  io_priority,
+			    GCancellable        *cancellable,
+			    GAsyncReadyCallback  callback,
+			    gpointer             user_data);
+  gboolean (* init_finish) (GAsyncInitable      *initable,
+			    GAsyncResult        *res,
+			    GError             **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_async_initable_get_type    (void) G_GNUC_CONST;
+
+
+GLIB_AVAILABLE_IN_ALL
+void     g_async_initable_init_async       (GAsyncInitable       *initable,
+					    int                   io_priority,
+					    GCancellable         *cancellable,
+					    GAsyncReadyCallback   callback,
+					    gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_async_initable_init_finish      (GAsyncInitable       *initable,
+					    GAsyncResult         *res,
+					    GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void     g_async_initable_new_async        (GType                 object_type,
+					    int                   io_priority,
+					    GCancellable         *cancellable,
+					    GAsyncReadyCallback   callback,
+					    gpointer              user_data,
+					    const gchar          *first_property_name,
+					    ...);
+GLIB_AVAILABLE_IN_ALL
+void     g_async_initable_newv_async       (GType                 object_type,
+					    guint                 n_parameters,
+					    GParameter           *parameters,
+					    int                   io_priority,
+					    GCancellable         *cancellable,
+					    GAsyncReadyCallback   callback,
+					    gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+void     g_async_initable_new_valist_async (GType                 object_type,
+					    const gchar          *first_property_name,
+					    va_list               var_args,
+					    int                   io_priority,
+					    GCancellable         *cancellable,
+					    GAsyncReadyCallback   callback,
+					    gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GObject *g_async_initable_new_finish       (GAsyncInitable       *initable,
+					    GAsyncResult         *res,
+					    GError              **error);
+
+
+
+G_END_DECLS
+
+
+#endif /* __G_ASYNC_INITABLE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gasyncresult.h b/dist/usr/include/glib-2.0/gio/gasyncresult.h
new file mode 100644
index 0000000..9c8184f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gasyncresult.h
@@ -0,0 +1,87 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_ASYNC_RESULT_H__
+#define __G_ASYNC_RESULT_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ASYNC_RESULT            (g_async_result_get_type ())
+#define G_ASYNC_RESULT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ASYNC_RESULT, GAsyncResult))
+#define G_IS_ASYNC_RESULT(obj)	       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ASYNC_RESULT))
+#define G_ASYNC_RESULT_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ASYNC_RESULT, GAsyncResultIface))
+
+/**
+ * GAsyncResult:
+ *
+ * Holds results information for an asynchronous operation,
+ * usually passed directly to a asynchronous _finish() operation.
+ **/
+typedef struct _GAsyncResultIface    GAsyncResultIface;
+
+
+/**
+ * GAsyncResultIface:
+ * @g_iface: The parent interface.
+ * @get_user_data: Gets the user data passed to the callback.
+ * @get_source_object: Gets the source object that issued the asynchronous operation.
+ * @is_tagged: Checks if a result is tagged with a particular source.
+ *
+ * Interface definition for #GAsyncResult.
+ **/
+struct _GAsyncResultIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  gpointer  (* get_user_data)     (GAsyncResult *res);
+  GObject * (* get_source_object) (GAsyncResult *res);
+
+  gboolean  (* is_tagged)         (GAsyncResult *res,
+				   gpointer      source_tag);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_async_result_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gpointer g_async_result_get_user_data     (GAsyncResult *res);
+GLIB_AVAILABLE_IN_ALL
+GObject *g_async_result_get_source_object (GAsyncResult *res);
+
+GLIB_AVAILABLE_IN_2_34
+gboolean g_async_result_legacy_propagate_error (GAsyncResult  *res,
+						GError       **error);
+GLIB_AVAILABLE_IN_2_34
+gboolean g_async_result_is_tagged              (GAsyncResult  *res,
+						gpointer       source_tag);
+
+G_END_DECLS
+
+#endif /* __G_ASYNC_RESULT_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gbufferedinputstream.h b/dist/usr/include/glib-2.0/gio/gbufferedinputstream.h
new file mode 100644
index 0000000..a4f8ef0
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gbufferedinputstream.h
@@ -0,0 +1,135 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_BUFFERED_INPUT_STREAM_H__
+#define __G_BUFFERED_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gfilterinputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_BUFFERED_INPUT_STREAM         (g_buffered_input_stream_get_type ())
+#define G_BUFFERED_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStream))
+#define G_BUFFERED_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStreamClass))
+#define G_IS_BUFFERED_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_BUFFERED_INPUT_STREAM))
+#define G_IS_BUFFERED_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_BUFFERED_INPUT_STREAM))
+#define G_BUFFERED_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_BUFFERED_INPUT_STREAM, GBufferedInputStreamClass))
+
+/**
+ * GBufferedInputStream:
+ *
+ * Implements #GFilterInputStream with a sized input buffer.
+ **/
+typedef struct _GBufferedInputStreamClass    GBufferedInputStreamClass;
+typedef struct _GBufferedInputStreamPrivate  GBufferedInputStreamPrivate;
+
+struct _GBufferedInputStream
+{
+  GFilterInputStream parent_instance;
+
+  /*< private >*/
+  GBufferedInputStreamPrivate *priv;
+};
+
+struct _GBufferedInputStreamClass
+{
+  GFilterInputStreamClass parent_class;
+
+  gssize   (* fill)        (GBufferedInputStream *stream,
+			    gssize                count,
+			    GCancellable         *cancellable,
+			    GError              **error);
+
+  /* Async ops: (optional in derived classes) */
+  void     (* fill_async)  (GBufferedInputStream *stream,
+			    gssize                count,
+			    int                   io_priority,
+			    GCancellable         *cancellable,
+			    GAsyncReadyCallback   callback,
+			    gpointer              user_data);
+  gssize   (* fill_finish) (GBufferedInputStream *stream,
+			    GAsyncResult         *result,
+			    GError              **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType         g_buffered_input_stream_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GInputStream* g_buffered_input_stream_new             (GInputStream          *base_stream);
+GLIB_AVAILABLE_IN_ALL
+GInputStream* g_buffered_input_stream_new_sized       (GInputStream          *base_stream,
+						       gsize                  size);
+
+GLIB_AVAILABLE_IN_ALL
+gsize         g_buffered_input_stream_get_buffer_size (GBufferedInputStream  *stream);
+GLIB_AVAILABLE_IN_ALL
+void          g_buffered_input_stream_set_buffer_size (GBufferedInputStream  *stream,
+						       gsize                  size);
+GLIB_AVAILABLE_IN_ALL
+gsize         g_buffered_input_stream_get_available   (GBufferedInputStream  *stream);
+GLIB_AVAILABLE_IN_ALL
+gsize         g_buffered_input_stream_peek            (GBufferedInputStream  *stream,
+						       void                  *buffer,
+						       gsize                  offset,
+						       gsize                  count);
+GLIB_AVAILABLE_IN_ALL
+const void*   g_buffered_input_stream_peek_buffer     (GBufferedInputStream  *stream,
+						       gsize                 *count);
+
+GLIB_AVAILABLE_IN_ALL
+gssize        g_buffered_input_stream_fill            (GBufferedInputStream  *stream,
+						       gssize                 count,
+						       GCancellable          *cancellable,
+						       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+void          g_buffered_input_stream_fill_async      (GBufferedInputStream  *stream,
+						       gssize                 count,
+						       int                    io_priority,
+						       GCancellable          *cancellable,
+						       GAsyncReadyCallback    callback,
+						       gpointer               user_data);
+GLIB_AVAILABLE_IN_ALL
+gssize        g_buffered_input_stream_fill_finish     (GBufferedInputStream  *stream,
+						       GAsyncResult          *result,
+						       GError               **error);
+
+GLIB_AVAILABLE_IN_ALL
+int           g_buffered_input_stream_read_byte       (GBufferedInputStream  *stream,
+						       GCancellable          *cancellable,
+						       GError               **error);
+
+G_END_DECLS
+
+#endif /* __G_BUFFERED_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gbufferedoutputstream.h b/dist/usr/include/glib-2.0/gio/gbufferedoutputstream.h
new file mode 100644
index 0000000..49c0fa9
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gbufferedoutputstream.h
@@ -0,0 +1,88 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_BUFFERED_OUTPUT_STREAM_H__
+#define __G_BUFFERED_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gfilteroutputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_BUFFERED_OUTPUT_STREAM         (g_buffered_output_stream_get_type ())
+#define G_BUFFERED_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStream))
+#define G_BUFFERED_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStreamClass))
+#define G_IS_BUFFERED_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_BUFFERED_OUTPUT_STREAM))
+#define G_IS_BUFFERED_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_BUFFERED_OUTPUT_STREAM))
+#define G_BUFFERED_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_BUFFERED_OUTPUT_STREAM, GBufferedOutputStreamClass))
+
+/**
+ * GBufferedOutputStream:
+ *
+ * An implementation of #GFilterOutputStream with a sized buffer.
+ **/
+typedef struct _GBufferedOutputStreamClass    GBufferedOutputStreamClass;
+typedef struct _GBufferedOutputStreamPrivate  GBufferedOutputStreamPrivate;
+
+struct _GBufferedOutputStream
+{
+  GFilterOutputStream parent_instance;
+
+  /*< protected >*/
+  GBufferedOutputStreamPrivate *priv;
+};
+
+struct _GBufferedOutputStreamClass
+{
+  GFilterOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_buffered_output_stream_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GOutputStream* g_buffered_output_stream_new             (GOutputStream         *base_stream);
+GLIB_AVAILABLE_IN_ALL
+GOutputStream* g_buffered_output_stream_new_sized       (GOutputStream         *base_stream,
+							 gsize                  size);
+GLIB_AVAILABLE_IN_ALL
+gsize          g_buffered_output_stream_get_buffer_size (GBufferedOutputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+void           g_buffered_output_stream_set_buffer_size (GBufferedOutputStream *stream,
+							 gsize                  size);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_buffered_output_stream_get_auto_grow   (GBufferedOutputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+void           g_buffered_output_stream_set_auto_grow   (GBufferedOutputStream *stream,
+							 gboolean               auto_grow);
+
+G_END_DECLS
+
+#endif /* __G_BUFFERED_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gbytesicon.h b/dist/usr/include/glib-2.0/gio/gbytesicon.h
new file mode 100644
index 0000000..bf7753b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gbytesicon.h
@@ -0,0 +1,54 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_BYTES_ICON_H__
+#define __G_BYTES_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_BYTES_ICON         (g_bytes_icon_get_type ())
+#define G_BYTES_ICON(inst)        (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_BYTES_ICON, GBytesIcon))
+#define G_IS_BYTES_ICON(inst)     (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_BYTES_ICON))
+
+/**
+ * GBytesIcon:
+ *
+ * Gets an icon for a #GBytes. Implements #GLoadableIcon.
+ **/
+GLIB_AVAILABLE_IN_2_38
+GType   g_bytes_icon_get_type   (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_38
+GIcon * g_bytes_icon_new        (GBytes     *bytes);
+
+GLIB_AVAILABLE_IN_2_38
+GBytes * g_bytes_icon_get_bytes (GBytesIcon *icon);
+
+G_END_DECLS
+
+#endif /* __G_BYTES_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gcancellable.h b/dist/usr/include/glib-2.0/gio/gcancellable.h
new file mode 100644
index 0000000..e44bbad
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gcancellable.h
@@ -0,0 +1,120 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CANCELLABLE_H__
+#define __G_CANCELLABLE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CANCELLABLE         (g_cancellable_get_type ())
+#define G_CANCELLABLE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CANCELLABLE, GCancellable))
+#define G_CANCELLABLE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CANCELLABLE, GCancellableClass))
+#define G_IS_CANCELLABLE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CANCELLABLE))
+#define G_IS_CANCELLABLE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CANCELLABLE))
+#define G_CANCELLABLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CANCELLABLE, GCancellableClass))
+
+/**
+ * GCancellable:
+ *
+ * Allows actions to be cancelled.
+ */
+typedef struct _GCancellableClass   GCancellableClass;
+typedef struct _GCancellablePrivate GCancellablePrivate;
+
+struct _GCancellable
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GCancellablePrivate *priv;
+};
+
+struct _GCancellableClass
+{
+  GObjectClass parent_class;
+
+  void (* cancelled) (GCancellable *cancellable);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType         g_cancellable_get_type               (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GCancellable *g_cancellable_new                    (void);
+
+/* These are only safe to call inside a cancellable op */
+GLIB_AVAILABLE_IN_ALL
+gboolean      g_cancellable_is_cancelled           (GCancellable  *cancellable);
+GLIB_AVAILABLE_IN_ALL
+gboolean      g_cancellable_set_error_if_cancelled (GCancellable  *cancellable,
+						    GError       **error);
+
+GLIB_AVAILABLE_IN_ALL
+int           g_cancellable_get_fd                 (GCancellable  *cancellable);
+GLIB_AVAILABLE_IN_ALL
+gboolean      g_cancellable_make_pollfd            (GCancellable  *cancellable,
+						    GPollFD       *pollfd);
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_release_fd             (GCancellable  *cancellable);
+
+GLIB_AVAILABLE_IN_ALL
+GSource *     g_cancellable_source_new             (GCancellable  *cancellable);
+
+GLIB_AVAILABLE_IN_ALL
+GCancellable *g_cancellable_get_current            (void);
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_push_current           (GCancellable  *cancellable);
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_pop_current            (GCancellable  *cancellable);
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_reset                  (GCancellable  *cancellable);
+GLIB_AVAILABLE_IN_ALL
+gulong        g_cancellable_connect                (GCancellable  *cancellable,
+						    GCallback      callback,
+						    gpointer       data,
+						    GDestroyNotify data_destroy_func);
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_disconnect             (GCancellable  *cancellable,
+						    gulong         handler_id);
+
+
+/* This is safe to call from another thread */
+GLIB_AVAILABLE_IN_ALL
+void          g_cancellable_cancel       (GCancellable  *cancellable);
+
+G_END_DECLS
+
+#endif /* __G_CANCELLABLE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gcharsetconverter.h b/dist/usr/include/glib-2.0/gio/gcharsetconverter.h
new file mode 100644
index 0000000..af9b989
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gcharsetconverter.h
@@ -0,0 +1,65 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CHARSET_CONVERTER_H__
+#define __G_CHARSET_CONVERTER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gconverter.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CHARSET_CONVERTER         (g_charset_converter_get_type ())
+#define G_CHARSET_CONVERTER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CHARSET_CONVERTER, GCharsetConverter))
+#define G_CHARSET_CONVERTER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CHARSET_CONVERTER, GCharsetConverterClass))
+#define G_IS_CHARSET_CONVERTER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CHARSET_CONVERTER))
+#define G_IS_CHARSET_CONVERTER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CHARSET_CONVERTER))
+#define G_CHARSET_CONVERTER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CHARSET_CONVERTER, GCharsetConverterClass))
+
+typedef struct _GCharsetConverterClass   GCharsetConverterClass;
+
+struct _GCharsetConverterClass
+{
+  GObjectClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_charset_converter_get_type      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GCharsetConverter *g_charset_converter_new            (const gchar  *to_charset,
+						       const gchar  *from_charset,
+						       GError **error);
+GLIB_AVAILABLE_IN_ALL
+void               g_charset_converter_set_use_fallback (GCharsetConverter *converter,
+							 gboolean use_fallback);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_charset_converter_get_use_fallback (GCharsetConverter *converter);
+GLIB_AVAILABLE_IN_ALL
+guint              g_charset_converter_get_num_fallbacks (GCharsetConverter *converter);
+
+G_END_DECLS
+
+#endif /* __G_CHARSET_CONVERTER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gcontenttype.h b/dist/usr/include/glib-2.0/gio/gcontenttype.h
new file mode 100644
index 0000000..9ffbdeb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gcontenttype.h
@@ -0,0 +1,73 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CONTENT_TYPE_H__
+#define __G_CONTENT_TYPE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_content_type_equals            (const gchar  *type1,
+                                           const gchar  *type2);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_content_type_is_a              (const gchar  *type,
+                                           const gchar  *supertype);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_content_type_is_unknown        (const gchar  *type);
+GLIB_AVAILABLE_IN_ALL
+gchar *  g_content_type_get_description   (const gchar  *type);
+GLIB_AVAILABLE_IN_ALL
+gchar *  g_content_type_get_mime_type     (const gchar  *type);
+GLIB_AVAILABLE_IN_ALL
+GIcon *  g_content_type_get_icon          (const gchar  *type);
+GLIB_AVAILABLE_IN_2_34
+GIcon *  g_content_type_get_symbolic_icon (const gchar  *type);
+GLIB_AVAILABLE_IN_2_34
+gchar *  g_content_type_get_generic_icon_name (const gchar  *type);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_content_type_can_be_executable (const gchar  *type);
+
+GLIB_AVAILABLE_IN_ALL
+gchar *  g_content_type_from_mime_type    (const gchar  *mime_type);
+
+GLIB_AVAILABLE_IN_ALL
+gchar *  g_content_type_guess             (const gchar  *filename,
+                                           const guchar *data,
+                                           gsize         data_size,
+                                           gboolean     *result_uncertain);
+
+GLIB_AVAILABLE_IN_ALL
+gchar ** g_content_type_guess_for_tree    (GFile        *root);
+
+GLIB_AVAILABLE_IN_ALL
+GList *  g_content_types_get_registered   (void);
+
+G_END_DECLS
+
+#endif /* __G_CONTENT_TYPE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gconverter.h b/dist/usr/include/glib-2.0/gio/gconverter.h
new file mode 100644
index 0000000..4fea64d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gconverter.h
@@ -0,0 +1,98 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CONVERTER_H__
+#define __G_CONVERTER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CONVERTER            (g_converter_get_type ())
+#define G_CONVERTER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_CONVERTER, GConverter))
+#define G_IS_CONVERTER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_CONVERTER))
+#define G_CONVERTER_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_CONVERTER, GConverterIface))
+
+/**
+ * GConverter:
+ *
+ * Seek object for streaming operations.
+ *
+ * Since: 2.24
+ **/
+typedef struct _GConverterIface   GConverterIface;
+
+/**
+ * GConverterIface:
+ * @g_iface: The parent interface.
+ * @convert: Converts data.
+ * @reset: Reverts the internal state of the converter to its initial state.
+ *
+ * Provides an interface for converting data from one type
+ * to another type. The conversion can be stateful
+ * and may fail at any place.
+ *
+ * Since: 2.24
+ **/
+struct _GConverterIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GConverterResult (* convert) (GConverter *converter,
+				const void *inbuf,
+				gsize       inbuf_size,
+				void       *outbuf,
+				gsize       outbuf_size,
+				GConverterFlags flags,
+				gsize      *bytes_read,
+				gsize      *bytes_written,
+				GError    **error);
+  void  (* reset)   (GConverter *converter);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_converter_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GConverterResult g_converter_convert (GConverter       *converter,
+				      const void       *inbuf,
+				      gsize             inbuf_size,
+				      void             *outbuf,
+				      gsize             outbuf_size,
+				      GConverterFlags   flags,
+				      gsize            *bytes_read,
+				      gsize            *bytes_written,
+				      GError          **error);
+GLIB_AVAILABLE_IN_ALL
+void             g_converter_reset   (GConverter       *converter);
+
+
+G_END_DECLS
+
+
+#endif /* __G_CONVERTER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gconverterinputstream.h b/dist/usr/include/glib-2.0/gio/gconverterinputstream.h
new file mode 100644
index 0000000..3a8f845
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gconverterinputstream.h
@@ -0,0 +1,82 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CONVERTER_INPUT_STREAM_H__
+#define __G_CONVERTER_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gfilterinputstream.h>
+#include <gio/gconverter.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CONVERTER_INPUT_STREAM         (g_converter_input_stream_get_type ())
+#define G_CONVERTER_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStream))
+#define G_CONVERTER_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStreamClass))
+#define G_IS_CONVERTER_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CONVERTER_INPUT_STREAM))
+#define G_IS_CONVERTER_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CONVERTER_INPUT_STREAM))
+#define G_CONVERTER_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CONVERTER_INPUT_STREAM, GConverterInputStreamClass))
+
+/**
+ * GConverterInputStream:
+ *
+ * An implementation of #GFilterInputStream that allows data
+ * conversion.
+ **/
+typedef struct _GConverterInputStreamClass    GConverterInputStreamClass;
+typedef struct _GConverterInputStreamPrivate  GConverterInputStreamPrivate;
+
+struct _GConverterInputStream
+{
+  GFilterInputStream parent_instance;
+
+  /*< private >*/
+  GConverterInputStreamPrivate *priv;
+};
+
+struct _GConverterInputStreamClass
+{
+  GFilterInputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_converter_input_stream_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GInputStream          *g_converter_input_stream_new           (GInputStream          *base_stream,
+                                                               GConverter            *converter);
+GLIB_AVAILABLE_IN_ALL
+GConverter            *g_converter_input_stream_get_converter (GConverterInputStream *converter_stream);
+
+G_END_DECLS
+
+#endif /* __G_CONVERTER_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gconverteroutputstream.h b/dist/usr/include/glib-2.0/gio/gconverteroutputstream.h
new file mode 100644
index 0000000..1f91001
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gconverteroutputstream.h
@@ -0,0 +1,82 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_CONVERTER_OUTPUT_STREAM_H__
+#define __G_CONVERTER_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gfilteroutputstream.h>
+#include <gio/gconverter.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CONVERTER_OUTPUT_STREAM         (g_converter_output_stream_get_type ())
+#define G_CONVERTER_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStream))
+#define G_CONVERTER_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStreamClass))
+#define G_IS_CONVERTER_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CONVERTER_OUTPUT_STREAM))
+#define G_IS_CONVERTER_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CONVERTER_OUTPUT_STREAM))
+#define G_CONVERTER_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CONVERTER_OUTPUT_STREAM, GConverterOutputStreamClass))
+
+/**
+ * GConverterOutputStream:
+ *
+ * An implementation of #GFilterOutputStream that allows data
+ * conversion.
+ **/
+typedef struct _GConverterOutputStreamClass    GConverterOutputStreamClass;
+typedef struct _GConverterOutputStreamPrivate  GConverterOutputStreamPrivate;
+
+struct _GConverterOutputStream
+{
+  GFilterOutputStream parent_instance;
+
+  /*< private >*/
+  GConverterOutputStreamPrivate *priv;
+};
+
+struct _GConverterOutputStreamClass
+{
+  GFilterOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_converter_output_stream_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GOutputStream          *g_converter_output_stream_new           (GOutputStream         *base_stream,
+                                                                 GConverter            *converter);
+GLIB_AVAILABLE_IN_ALL
+GConverter             *g_converter_output_stream_get_converter (GConverterOutputStream *converter_stream);
+
+G_END_DECLS
+
+#endif /* __G_CONVERTER_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gcredentials.h b/dist/usr/include/glib-2.0/gio/gcredentials.h
new file mode 100644
index 0000000..ff1ae4d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gcredentials.h
@@ -0,0 +1,87 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_CREDENTIALS_H__
+#define __G_CREDENTIALS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+#ifdef G_OS_UNIX
+/* To get the uid_t type */
+#include <unistd.h>
+#include <sys/types.h>
+#endif
+
+G_BEGIN_DECLS
+
+#define G_TYPE_CREDENTIALS         (g_credentials_get_type ())
+#define G_CREDENTIALS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_CREDENTIALS, GCredentials))
+#define G_CREDENTIALS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_CREDENTIALS, GCredentialsClass))
+#define G_CREDENTIALS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_CREDENTIALS, GCredentialsClass))
+#define G_IS_CREDENTIALS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_CREDENTIALS))
+#define G_IS_CREDENTIALS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_CREDENTIALS))
+
+typedef struct _GCredentialsClass   GCredentialsClass;
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_credentials_get_type           (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GCredentials    *g_credentials_new                (void);
+
+GLIB_AVAILABLE_IN_ALL
+gchar           *g_credentials_to_string          (GCredentials    *credentials);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer         g_credentials_get_native         (GCredentials    *credentials,
+                                                   GCredentialsType native_type);
+
+GLIB_AVAILABLE_IN_ALL
+void             g_credentials_set_native         (GCredentials    *credentials,
+                                                   GCredentialsType native_type,
+                                                   gpointer         native);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_credentials_is_same_user       (GCredentials    *credentials,
+                                                   GCredentials    *other_credentials,
+                                                   GError         **error);
+
+#ifdef G_OS_UNIX
+GLIB_AVAILABLE_IN_2_36
+pid_t            g_credentials_get_unix_pid       (GCredentials    *credentials,
+                                                   GError         **error);
+GLIB_AVAILABLE_IN_ALL
+uid_t            g_credentials_get_unix_user      (GCredentials    *credentials,
+                                                   GError         **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_credentials_set_unix_user      (GCredentials    *credentials,
+                                                   uid_t           uid,
+                                                   GError         **error);
+#endif
+
+G_END_DECLS
+
+#endif /* __G_DBUS_PROXY_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdatainputstream.h b/dist/usr/include/glib-2.0/gio/gdatainputstream.h
new file mode 100644
index 0000000..3ebf67a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdatainputstream.h
@@ -0,0 +1,182 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_DATA_INPUT_STREAM_H__
+#define __G_DATA_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gbufferedinputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DATA_INPUT_STREAM         (g_data_input_stream_get_type ())
+#define G_DATA_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DATA_INPUT_STREAM, GDataInputStream))
+#define G_DATA_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DATA_INPUT_STREAM, GDataInputStreamClass))
+#define G_IS_DATA_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DATA_INPUT_STREAM))
+#define G_IS_DATA_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DATA_INPUT_STREAM))
+#define G_DATA_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DATA_INPUT_STREAM, GDataInputStreamClass))
+
+/**
+ * GDataInputStream:
+ *
+ * An implementation of #GBufferedInputStream that allows for high-level
+ * data manipulation of arbitrary data (including binary operations).
+ **/
+typedef struct _GDataInputStreamClass    GDataInputStreamClass;
+typedef struct _GDataInputStreamPrivate  GDataInputStreamPrivate;
+
+struct _GDataInputStream
+{
+  GBufferedInputStream parent_instance;
+
+  /*< private >*/
+  GDataInputStreamPrivate *priv;
+};
+
+struct _GDataInputStreamClass
+{
+  GBufferedInputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_data_input_stream_get_type             (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDataInputStream *     g_data_input_stream_new                  (GInputStream            *base_stream);
+
+GLIB_AVAILABLE_IN_ALL
+void                   g_data_input_stream_set_byte_order       (GDataInputStream        *stream,
+                                                                 GDataStreamByteOrder     order);
+GLIB_AVAILABLE_IN_ALL
+GDataStreamByteOrder   g_data_input_stream_get_byte_order       (GDataInputStream        *stream);
+GLIB_AVAILABLE_IN_ALL
+void                   g_data_input_stream_set_newline_type     (GDataInputStream        *stream,
+                                                                 GDataStreamNewlineType   type);
+GLIB_AVAILABLE_IN_ALL
+GDataStreamNewlineType g_data_input_stream_get_newline_type     (GDataInputStream        *stream);
+GLIB_AVAILABLE_IN_ALL
+guchar                 g_data_input_stream_read_byte            (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gint16                 g_data_input_stream_read_int16           (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+guint16                g_data_input_stream_read_uint16          (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gint32                 g_data_input_stream_read_int32           (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+guint32                g_data_input_stream_read_uint32          (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gint64                 g_data_input_stream_read_int64           (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+guint64                g_data_input_stream_read_uint64          (GDataInputStream        *stream,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_line            (GDataInputStream        *stream,
+                                                                 gsize                   *length,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_2_30
+char *                 g_data_input_stream_read_line_utf8       (GDataInputStream        *stream,
+								 gsize                   *length,
+								 GCancellable            *cancellable,
+								 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_data_input_stream_read_line_async      (GDataInputStream        *stream,
+                                                                 gint                     io_priority,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_line_finish     (GDataInputStream        *stream,
+                                                                 GAsyncResult            *result,
+                                                                 gsize                   *length,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_2_30
+char *                 g_data_input_stream_read_line_finish_utf8(GDataInputStream        *stream,
+                                                                 GAsyncResult            *result,
+                                                                 gsize                   *length,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_until           (GDataInputStream        *stream,
+                                                                 const gchar             *stop_chars,
+                                                                 gsize                   *length,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_data_input_stream_read_until_async     (GDataInputStream        *stream,
+                                                                 const gchar             *stop_chars,
+                                                                 gint                     io_priority,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_until_finish    (GDataInputStream        *stream,
+                                                                 GAsyncResult            *result,
+                                                                 gsize                   *length,
+                                                                 GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_upto            (GDataInputStream        *stream,
+                                                                 const gchar             *stop_chars,
+                                                                 gssize                   stop_chars_len,
+                                                                 gsize                   *length,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_data_input_stream_read_upto_async      (GDataInputStream        *stream,
+                                                                 const gchar             *stop_chars,
+                                                                 gssize                   stop_chars_len,
+                                                                 gint                     io_priority,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+GLIB_AVAILABLE_IN_ALL
+char *                 g_data_input_stream_read_upto_finish     (GDataInputStream        *stream,
+                                                                 GAsyncResult            *result,
+                                                                 gsize                   *length,
+                                                                 GError                 **error);
+
+G_END_DECLS
+
+#endif /* __G_DATA_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdataoutputstream.h b/dist/usr/include/glib-2.0/gio/gdataoutputstream.h
new file mode 100644
index 0000000..12db684
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdataoutputstream.h
@@ -0,0 +1,127 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_DATA_OUTPUT_STREAM_H__
+#define __G_DATA_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gfilteroutputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DATA_OUTPUT_STREAM         (g_data_output_stream_get_type ())
+#define G_DATA_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStream))
+#define G_DATA_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStreamClass))
+#define G_IS_DATA_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DATA_OUTPUT_STREAM))
+#define G_IS_DATA_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DATA_OUTPUT_STREAM))
+#define G_DATA_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DATA_OUTPUT_STREAM, GDataOutputStreamClass))
+
+/**
+ * GDataOutputStream:
+ *
+ * An implementation of #GBufferedOutputStream that allows for high-level
+ * data manipulation of arbitrary data (including binary operations).
+ **/
+typedef struct _GDataOutputStream         GDataOutputStream;
+typedef struct _GDataOutputStreamClass    GDataOutputStreamClass;
+typedef struct _GDataOutputStreamPrivate  GDataOutputStreamPrivate;
+
+struct _GDataOutputStream
+{
+  GFilterOutputStream parent_instance;
+
+  /*< private >*/
+  GDataOutputStreamPrivate *priv;
+};
+
+struct _GDataOutputStreamClass
+{
+  GFilterOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType                g_data_output_stream_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDataOutputStream *  g_data_output_stream_new            (GOutputStream         *base_stream);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_data_output_stream_set_byte_order (GDataOutputStream     *stream,
+							  GDataStreamByteOrder   order);
+GLIB_AVAILABLE_IN_ALL
+GDataStreamByteOrder g_data_output_stream_get_byte_order (GDataOutputStream     *stream);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_byte       (GDataOutputStream     *stream,
+							  guchar                 data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_int16      (GDataOutputStream     *stream,
+							  gint16                 data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_uint16     (GDataOutputStream     *stream,
+							  guint16                data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_int32      (GDataOutputStream     *stream,
+							  gint32                 data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_uint32     (GDataOutputStream     *stream,
+							  guint32                data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_int64      (GDataOutputStream     *stream,
+							  gint64                 data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_uint64     (GDataOutputStream     *stream,
+							  guint64                data,
+							  GCancellable          *cancellable,
+							  GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean             g_data_output_stream_put_string     (GDataOutputStream     *stream,
+							  const char            *str,
+							  GCancellable          *cancellable,
+							  GError               **error);
+
+G_END_DECLS
+
+#endif /* __G_DATA_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusactiongroup.h b/dist/usr/include/glib-2.0/gio/gdbusactiongroup.h
new file mode 100644
index 0000000..4d8e168
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusactiongroup.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ * Copyright © 2011 Canonical Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_DBUS_ACTION_GROUP_H__
+#define __G_DBUS_ACTION_GROUP_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include "giotypes.h"
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_ACTION_GROUP                            (g_dbus_action_group_get_type ())
+#define G_DBUS_ACTION_GROUP(inst)                           (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroup))
+#define G_DBUS_ACTION_GROUP_CLASS(class)                    (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroupClass))
+#define G_IS_DBUS_ACTION_GROUP(inst)                        (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_DBUS_ACTION_GROUP))
+#define G_IS_DBUS_ACTION_GROUP_CLASS(class)                 (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_DBUS_ACTION_GROUP))
+#define G_DBUS_ACTION_GROUP_GET_CLASS(inst)                 (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_DBUS_ACTION_GROUP, GDBusActionGroupClass))
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_dbus_action_group_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+GDBusActionGroup *      g_dbus_action_group_get                       (GDBusConnection        *connection,
+                                                                       const gchar            *bus_name,
+                                                                       const gchar            *object_path);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_ACTION_GROUP_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusaddress.h b/dist/usr/include/glib-2.0/gio/gdbusaddress.h
new file mode 100644
index 0000000..08773aa
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusaddress.h
@@ -0,0 +1,67 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_ADDRESS_H__
+#define __G_DBUS_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_2_36
+gchar *g_dbus_address_escape_value (const gchar *string);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_address (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_supported_address (const gchar  *string,
+                                      GError      **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_address_get_stream        (const gchar          *address,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream           *g_dbus_address_get_stream_finish (GAsyncResult         *res,
+                                                       gchar               **out_guid,
+                                                       GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream           *g_dbus_address_get_stream_sync   (const gchar          *address,
+                                                       gchar               **out_guid,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gchar               *g_dbus_address_get_for_bus_sync  (GBusType              bus_type,
+                                                       GCancellable  *cancellable,
+                                                       GError              **error);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusauthobserver.h b/dist/usr/include/glib-2.0/gio/gdbusauthobserver.h
new file mode 100644
index 0000000..bc61c53
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusauthobserver.h
@@ -0,0 +1,53 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_AUTH_OBSERVER_H__
+#define __G_DBUS_AUTH_OBSERVER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_AUTH_OBSERVER         (g_dbus_auth_observer_get_type ())
+#define G_DBUS_AUTH_OBSERVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_AUTH_OBSERVER, GDBusAuthObserver))
+#define G_IS_DBUS_AUTH_OBSERVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_AUTH_OBSERVER))
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_dbus_auth_observer_get_type                     (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusAuthObserver *g_dbus_auth_observer_new                          (void);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_dbus_auth_observer_authorize_authenticated_peer (GDBusAuthObserver  *observer,
+                                                                      GIOStream          *stream,
+                                                                      GCredentials       *credentials);
+
+GLIB_AVAILABLE_IN_2_34
+gboolean           g_dbus_auth_observer_allow_mechanism (GDBusAuthObserver  *observer,
+                                                         const gchar        *mechanism);
+
+G_END_DECLS
+
+#endif /* _G_DBUS_AUTH_OBSERVER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusconnection.h b/dist/usr/include/glib-2.0/gio/gdbusconnection.h
new file mode 100644
index 0000000..a669953
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusconnection.h
@@ -0,0 +1,669 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_CONNECTION_H__
+#define __G_DBUS_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_CONNECTION         (g_dbus_connection_get_type ())
+#define G_DBUS_CONNECTION(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_CONNECTION, GDBusConnection))
+#define G_IS_DBUS_CONNECTION(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_CONNECTION))
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_dbus_connection_get_type                   (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+void              g_bus_get                    (GBusType             bus_type,
+                                                GCancellable        *cancellable,
+                                                GAsyncReadyCallback  callback,
+                                                gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection  *g_bus_get_finish             (GAsyncResult        *res,
+                                                GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection  *g_bus_get_sync               (GBusType            bus_type,
+                                                GCancellable       *cancellable,
+                                                GError            **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_new                        (GIOStream              *stream,
+                                                               const gchar            *guid,
+                                                               GDBusConnectionFlags    flags,
+                                                               GDBusAuthObserver      *observer,
+                                                               GCancellable           *cancellable,
+                                                               GAsyncReadyCallback     callback,
+                                                               gpointer                user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection *g_dbus_connection_new_finish                 (GAsyncResult           *res,
+                                                               GError                **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection *g_dbus_connection_new_sync                   (GIOStream              *stream,
+                                                               const gchar            *guid,
+                                                               GDBusConnectionFlags    flags,
+                                                               GDBusAuthObserver      *observer,
+                                                               GCancellable           *cancellable,
+                                                               GError                **error);
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_new_for_address            (const gchar            *address,
+                                                               GDBusConnectionFlags    flags,
+                                                               GDBusAuthObserver      *observer,
+                                                               GCancellable           *cancellable,
+                                                               GAsyncReadyCallback     callback,
+                                                               gpointer                user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection *g_dbus_connection_new_for_address_finish     (GAsyncResult           *res,
+                                                               GError                **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection *g_dbus_connection_new_for_address_sync       (const gchar            *address,
+                                                               GDBusConnectionFlags    flags,
+                                                               GDBusAuthObserver      *observer,
+                                                               GCancellable           *cancellable,
+                                                               GError                **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_start_message_processing   (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_is_closed                  (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+GIOStream       *g_dbus_connection_get_stream                 (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_connection_get_guid                   (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_connection_get_unique_name            (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+GCredentials    *g_dbus_connection_get_peer_credentials       (GDBusConnection    *connection);
+
+GLIB_AVAILABLE_IN_2_34
+guint32          g_dbus_connection_get_last_serial            (GDBusConnection    *connection);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_get_exit_on_close          (GDBusConnection    *connection);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_set_exit_on_close          (GDBusConnection    *connection,
+                                                               gboolean            exit_on_close);
+GLIB_AVAILABLE_IN_ALL
+GDBusCapabilityFlags  g_dbus_connection_get_capabilities      (GDBusConnection    *connection);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_close                          (GDBusConnection     *connection,
+                                                                   GCancellable        *cancellable,
+                                                                   GAsyncReadyCallback  callback,
+                                                                   gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_close_finish                   (GDBusConnection     *connection,
+                                                                   GAsyncResult        *res,
+                                                                   GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_close_sync                     (GDBusConnection     *connection,
+                                                                   GCancellable        *cancellable,
+                                                                   GError             **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_flush                          (GDBusConnection     *connection,
+                                                                   GCancellable        *cancellable,
+                                                                   GAsyncReadyCallback  callback,
+                                                                   gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_flush_finish                   (GDBusConnection     *connection,
+                                                                   GAsyncResult        *res,
+                                                                   GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_flush_sync                     (GDBusConnection     *connection,
+                                                                   GCancellable        *cancellable,
+                                                                   GError             **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_send_message                   (GDBusConnection     *connection,
+                                                                   GDBusMessage        *message,
+                                                                   GDBusSendMessageFlags flags,
+                                                                   volatile guint32    *out_serial,
+                                                                   GError             **error);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_send_message_with_reply        (GDBusConnection     *connection,
+                                                                   GDBusMessage        *message,
+                                                                   GDBusSendMessageFlags flags,
+                                                                   gint                 timeout_msec,
+                                                                   volatile guint32    *out_serial,
+                                                                   GCancellable        *cancellable,
+                                                                   GAsyncReadyCallback  callback,
+                                                                   gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage    *g_dbus_connection_send_message_with_reply_finish (GDBusConnection     *connection,
+                                                                   GAsyncResult        *res,
+                                                                   GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage    *g_dbus_connection_send_message_with_reply_sync   (GDBusConnection     *connection,
+                                                                   GDBusMessage        *message,
+                                                                   GDBusSendMessageFlags flags,
+                                                                   gint                 timeout_msec,
+                                                                   volatile guint32    *out_serial,
+                                                                   GCancellable        *cancellable,
+                                                                   GError             **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+GLIB_AVAILABLE_IN_ALL
+gboolean  g_dbus_connection_emit_signal                       (GDBusConnection    *connection,
+                                                               const gchar        *destination_bus_name,
+                                                               const gchar        *object_path,
+                                                               const gchar        *interface_name,
+                                                               const gchar        *signal_name,
+                                                               GVariant           *parameters,
+                                                               GError            **error);
+GLIB_AVAILABLE_IN_ALL
+void      g_dbus_connection_call                              (GDBusConnection    *connection,
+                                                               const gchar        *bus_name,
+                                                               const gchar        *object_path,
+                                                               const gchar        *interface_name,
+                                                               const gchar        *method_name,
+                                                               GVariant           *parameters,
+                                                               const GVariantType *reply_type,
+                                                               GDBusCallFlags      flags,
+                                                               gint                timeout_msec,
+                                                               GCancellable       *cancellable,
+                                                               GAsyncReadyCallback callback,
+                                                               gpointer            user_data);
+GLIB_AVAILABLE_IN_ALL
+GVariant *g_dbus_connection_call_finish                       (GDBusConnection    *connection,
+                                                               GAsyncResult       *res,
+                                                               GError            **error);
+GLIB_AVAILABLE_IN_ALL
+GVariant *g_dbus_connection_call_sync                         (GDBusConnection    *connection,
+                                                               const gchar        *bus_name,
+                                                               const gchar        *object_path,
+                                                               const gchar        *interface_name,
+                                                               const gchar        *method_name,
+                                                               GVariant           *parameters,
+                                                               const GVariantType *reply_type,
+                                                               GDBusCallFlags      flags,
+                                                               gint                timeout_msec,
+                                                               GCancellable       *cancellable,
+                                                               GError            **error);
+GLIB_AVAILABLE_IN_2_30
+void      g_dbus_connection_call_with_unix_fd_list            (GDBusConnection    *connection,
+                                                               const gchar        *bus_name,
+                                                               const gchar        *object_path,
+                                                               const gchar        *interface_name,
+                                                               const gchar        *method_name,
+                                                               GVariant           *parameters,
+                                                               const GVariantType *reply_type,
+                                                               GDBusCallFlags      flags,
+                                                               gint                timeout_msec,
+                                                               GUnixFDList        *fd_list,
+                                                               GCancellable       *cancellable,
+                                                               GAsyncReadyCallback callback,
+                                                               gpointer            user_data);
+GLIB_AVAILABLE_IN_2_30
+GVariant *g_dbus_connection_call_with_unix_fd_list_finish     (GDBusConnection    *connection,
+                                                               GUnixFDList       **out_fd_list,
+                                                               GAsyncResult       *res,
+                                                               GError            **error);
+GLIB_AVAILABLE_IN_2_30
+GVariant *g_dbus_connection_call_with_unix_fd_list_sync       (GDBusConnection    *connection,
+                                                               const gchar        *bus_name,
+                                                               const gchar        *object_path,
+                                                               const gchar        *interface_name,
+                                                               const gchar        *method_name,
+                                                               GVariant           *parameters,
+                                                               const GVariantType *reply_type,
+                                                               GDBusCallFlags      flags,
+                                                               gint                timeout_msec,
+                                                               GUnixFDList        *fd_list,
+                                                               GUnixFDList       **out_fd_list,
+                                                               GCancellable       *cancellable,
+                                                               GError            **error);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+
+/**
+ * GDBusInterfaceMethodCallFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that the method was invoked on.
+ * @interface_name: The D-Bus interface name the method was invoked on.
+ * @method_name: The name of the method that was invoked.
+ * @parameters: A #GVariant tuple with parameters.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object().
+ *
+ * The type of the @method_call function in #GDBusInterfaceVTable.
+ *
+ * Since: 2.26
+ */
+typedef void (*GDBusInterfaceMethodCallFunc) (GDBusConnection       *connection,
+                                              const gchar           *sender,
+                                              const gchar           *object_path,
+                                              const gchar           *interface_name,
+                                              const gchar           *method_name,
+                                              GVariant              *parameters,
+                                              GDBusMethodInvocation *invocation,
+                                              gpointer               user_data);
+
+/**
+ * GDBusInterfaceGetPropertyFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that the method was invoked on.
+ * @interface_name: The D-Bus interface name for the property.
+ * @property_name: The name of the property to get the value of.
+ * @error: Return location for error.
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object().
+ *
+ * The type of the @get_property function in #GDBusInterfaceVTable.
+ *
+ * Returns: A #GVariant with the value for @property_name or %NULL if
+ *     @error is set. If the returned #GVariant is floating, it is
+ *     consumed - otherwise its reference count is decreased by one.
+ *
+ * Since: 2.26
+ */
+typedef GVariant *(*GDBusInterfaceGetPropertyFunc) (GDBusConnection       *connection,
+                                                    const gchar           *sender,
+                                                    const gchar           *object_path,
+                                                    const gchar           *interface_name,
+                                                    const gchar           *property_name,
+                                                    GError               **error,
+                                                    gpointer               user_data);
+
+/**
+ * GDBusInterfaceSetPropertyFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that the method was invoked on.
+ * @interface_name: The D-Bus interface name for the property.
+ * @property_name: The name of the property to get the value of.
+ * @value: The value to set the property to.
+ * @error: Return location for error.
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_object().
+ *
+ * The type of the @set_property function in #GDBusInterfaceVTable.
+ *
+ * Returns: %TRUE if the property was set to @value, %FALSE if @error is set.
+ *
+ * Since: 2.26
+ */
+typedef gboolean  (*GDBusInterfaceSetPropertyFunc) (GDBusConnection       *connection,
+                                                    const gchar           *sender,
+                                                    const gchar           *object_path,
+                                                    const gchar           *interface_name,
+                                                    const gchar           *property_name,
+                                                    GVariant              *value,
+                                                    GError               **error,
+                                                    gpointer               user_data);
+
+/**
+ * GDBusInterfaceVTable:
+ * @method_call: Function for handling incoming method calls.
+ * @get_property: Function for getting a property.
+ * @set_property: Function for setting a property.
+ *
+ * Virtual table for handling properties and method calls for a D-Bus
+ * interface.
+ *
+ * Since 2.38, if you want to handle getting/setting D-Bus properties
+ * asynchronously, give %NULL as your get_property() or set_property()
+ * function.  The D-Bus call will be directed to your @method_call
+ * function, with the provided @interface_name set to
+ * <literal>"org.freedesktop.DBus.Properties"</literal>.
+ *
+ * The usual checks on the validity of the calls is performed.  For
+ * <literal>'Get'</literal> calls, an error is automatically returned if
+ * the property does not exist or the permissions do not allow access.
+ * The same checks are performed for <literal>'Set'</literal> calls, and
+ * the provided value is also checked for being the correct type.
+ *
+ * For both <literal>'Get'</literal> and <literal>'Set'</literal> calls,
+ * the #GDBusMethodInvocation passed to the method_call handler can be
+ * queried with g_dbus_method_invocation_get_property_info() to get a
+ * pointer to the #GDBusPropertyInfo of the property.
+ *
+ * If you have readable properties specified in your interface info, you
+ * must ensure that you either provide a non-%NULL @get_property()
+ * function or provide implementations of both the
+ * <literal>'Get'</literal> and <literal>'GetAll'</literal> methods on
+ * the <literal>'org.freedesktop.DBus.Properties'</literal> interface in
+ * your @method_call function.  Note that the required return type of
+ * the <literal>'Get'</literal> call is <literal>(v)</literal>, not the
+ * type of the property.  <literal>'GetAll'</literal> expects a return
+ * value of type <literal>a{sv}</literal>.
+ *
+ * If you have writable properties specified in your interface info, you
+ * must ensure that you either provide a non-%NULL @set_property()
+ * function or provide an implementation of the <literal>'Set'</literal>
+ * call.  If implementing the call, you must return the value of type
+ * %G_VARIANT_TYPE_UNIT.
+ *
+ * Since: 2.26
+ */
+struct _GDBusInterfaceVTable
+{
+  GDBusInterfaceMethodCallFunc  method_call;
+  GDBusInterfaceGetPropertyFunc get_property;
+  GDBusInterfaceSetPropertyFunc set_property;
+
+  /*< private >*/
+  /* Padding for future expansion - also remember to update
+   * gdbusconnection.c:_g_dbus_interface_vtable_copy() when
+   * changing this.
+   */
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+guint            g_dbus_connection_register_object            (GDBusConnection            *connection,
+                                                               const gchar                *object_path,
+                                                               GDBusInterfaceInfo         *interface_info,
+                                                               const GDBusInterfaceVTable *vtable,
+                                                               gpointer                    user_data,
+                                                               GDestroyNotify              user_data_free_func,
+                                                               GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_unregister_object          (GDBusConnection            *connection,
+                                                               guint                       registration_id);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/**
+ * GDBusSubtreeEnumerateFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that was registered with g_dbus_connection_register_subtree().
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree().
+ *
+ * The type of the @enumerate function in #GDBusSubtreeVTable.
+ *
+ * This function is called when generating introspection data and also
+ * when preparing to dispatch incoming messages in the event that the
+ * %G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is not
+ * specified (ie: to verify that the object path is valid).
+ *
+ * Hierarchies are not supported; the items that you return should not
+ * contain the '/' character.
+ *
+ * The return value will be freed with g_strfreev().
+ *
+ * Returns: A newly allocated array of strings for node names that are children of @object_path.
+ *
+ * Since: 2.26
+ */
+typedef gchar** (*GDBusSubtreeEnumerateFunc) (GDBusConnection       *connection,
+                                              const gchar           *sender,
+                                              const gchar           *object_path,
+                                              gpointer               user_data);
+
+/**
+ * GDBusSubtreeIntrospectFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that was registered with g_dbus_connection_register_subtree().
+ * @node: A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree.
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree().
+ *
+ * The type of the @introspect function in #GDBusSubtreeVTable.
+ *
+ * Subtrees are flat.  @node, if non-%NULL, is always exactly one
+ * segment of the object path (ie: it never contains a slash).
+ *
+ * This function should return %NULL to indicate that there is no object
+ * at this node.
+ *
+ * If this function returns non-%NULL, the return value is expected to
+ * be a %NULL-terminated array of pointers to #GDBusInterfaceInfo
+ * structures describing the interfaces implemented by @node.  This
+ * array will have g_dbus_interface_info_unref() called on each item
+ * before being freed with g_free().
+ *
+ * The difference between returning %NULL and an array containing zero
+ * items is that the standard DBus interfaces will returned to the
+ * remote introspector in the empty array case, but not in the %NULL
+ * case.
+ *
+ * Returns: A %NULL-terminated array of pointers to #GDBusInterfaceInfo, or %NULL.
+ *
+ * Since: 2.26
+ */
+typedef GDBusInterfaceInfo ** (*GDBusSubtreeIntrospectFunc) (GDBusConnection       *connection,
+                                                             const gchar           *sender,
+                                                             const gchar           *object_path,
+                                                             const gchar           *node,
+                                                             gpointer               user_data);
+
+/**
+ * GDBusSubtreeDispatchFunc:
+ * @connection: A #GDBusConnection.
+ * @sender: The unique bus name of the remote caller.
+ * @object_path: The object path that was registered with g_dbus_connection_register_subtree().
+ * @interface_name: The D-Bus interface name that the method call or property access is for.
+ * @node: A node that is a child of @object_path (relative to @object_path) or %NULL for the root of the subtree.
+ * @out_user_data: Return location for user data to pass to functions in the returned #GDBusInterfaceVTable (never %NULL).
+ * @user_data: The @user_data #gpointer passed to g_dbus_connection_register_subtree().
+ *
+ * The type of the @dispatch function in #GDBusSubtreeVTable.
+ *
+ * Subtrees are flat.  @node, if non-%NULL, is always exactly one
+ * segment of the object path (ie: it never contains a slash).
+ *
+ * Returns: A #GDBusInterfaceVTable or %NULL if you don't want to handle the methods.
+ *
+ * Since: 2.26
+ */
+typedef const GDBusInterfaceVTable * (*GDBusSubtreeDispatchFunc) (GDBusConnection             *connection,
+                                                                  const gchar                 *sender,
+                                                                  const gchar                 *object_path,
+                                                                  const gchar                 *interface_name,
+                                                                  const gchar                 *node,
+                                                                  gpointer                    *out_user_data,
+                                                                  gpointer                     user_data);
+
+/**
+ * GDBusSubtreeVTable:
+ * @enumerate: Function for enumerating child nodes.
+ * @introspect: Function for introspecting a child node.
+ * @dispatch: Function for dispatching a remote call on a child node.
+ *
+ * Virtual table for handling subtrees registered with g_dbus_connection_register_subtree().
+ *
+ * Since: 2.26
+ */
+struct _GDBusSubtreeVTable
+{
+  GDBusSubtreeEnumerateFunc  enumerate;
+  GDBusSubtreeIntrospectFunc introspect;
+  GDBusSubtreeDispatchFunc   dispatch;
+
+  /*< private >*/
+  /* Padding for future expansion - also remember to update
+   * gdbusconnection.c:_g_dbus_subtree_vtable_copy() when
+   * changing this.
+   */
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+guint            g_dbus_connection_register_subtree           (GDBusConnection            *connection,
+                                                               const gchar                *object_path,
+                                                               const GDBusSubtreeVTable   *vtable,
+                                                               GDBusSubtreeFlags           flags,
+                                                               gpointer                    user_data,
+                                                               GDestroyNotify              user_data_free_func,
+                                                               GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_dbus_connection_unregister_subtree         (GDBusConnection            *connection,
+                                                               guint                       registration_id);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/**
+ * GDBusSignalCallback:
+ * @connection: A #GDBusConnection.
+ * @sender_name: The unique bus name of the sender of the signal.
+ * @object_path: The object path that the signal was emitted on.
+ * @interface_name: The name of the interface.
+ * @signal_name: The name of the signal.
+ * @parameters: A #GVariant tuple with parameters for the signal.
+ * @user_data: User data passed when subscribing to the signal.
+ *
+ * Signature for callback function used in g_dbus_connection_signal_subscribe().
+ *
+ * Since: 2.26
+ */
+typedef void (*GDBusSignalCallback) (GDBusConnection  *connection,
+                                     const gchar      *sender_name,
+                                     const gchar      *object_path,
+                                     const gchar      *interface_name,
+                                     const gchar      *signal_name,
+                                     GVariant         *parameters,
+                                     gpointer          user_data);
+
+GLIB_AVAILABLE_IN_ALL
+guint            g_dbus_connection_signal_subscribe           (GDBusConnection     *connection,
+                                                               const gchar         *sender,
+                                                               const gchar         *interface_name,
+                                                               const gchar         *member,
+                                                               const gchar         *object_path,
+                                                               const gchar         *arg0,
+                                                               GDBusSignalFlags     flags,
+                                                               GDBusSignalCallback  callback,
+                                                               gpointer             user_data,
+                                                               GDestroyNotify       user_data_free_func);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_connection_signal_unsubscribe         (GDBusConnection     *connection,
+                                                               guint                subscription_id);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/**
+ * GDBusMessageFilterFunction:
+ * @connection: (transfer none): A #GDBusConnection.
+ * @message: (transfer full): A locked #GDBusMessage that the filter function takes ownership of.
+ * @incoming: %TRUE if it is a message received from the other peer, %FALSE if it is
+ * a message to be sent to the other peer.
+ * @user_data: User data passed when adding the filter.
+ *
+ * Signature for function used in g_dbus_connection_add_filter().
+ *
+ * A filter function is passed a #GDBusMessage and expected to return
+ * a #GDBusMessage too. Passive filter functions that don't modify the
+ * message can simply return the @message object:
+ * |[
+ * static GDBusMessage *
+ * passive_filter (GDBusConnection *connection
+ *                 GDBusMessage    *message,
+ *                 gboolean         incoming,
+ *                 gpointer         user_data)
+ * {
+ *   /<!-- -->* inspect @message *<!-- -->/
+ *   return message;
+ * }
+ * ]|
+ * Filter functions that wants to drop a message can simply return %NULL:
+ * |[
+ * static GDBusMessage *
+ * drop_filter (GDBusConnection *connection
+ *              GDBusMessage    *message,
+ *              gboolean         incoming,
+ *              gpointer         user_data)
+ * {
+ *   if (should_drop_message)
+ *     {
+ *       g_object_unref (message);
+ *       message = NULL;
+ *     }
+ *   return message;
+ * }
+ * ]|
+ * Finally, a filter function may modify a message by copying it:
+ * |[
+ * static GDBusMessage *
+ * modifying_filter (GDBusConnection *connection
+ *                   GDBusMessage    *message,
+ *                   gboolean         incoming,
+ *                   gpointer         user_data)
+ * {
+ *   GDBusMessage *copy;
+ *   GError *error;
+ *
+ *   error = NULL;
+ *   copy = g_dbus_message_copy (message, &error);
+ *   /<!-- -->* handle @error being is set *<!-- -->/
+ *   g_object_unref (message);
+ *
+ *   /<!-- -->* modify @copy *<!-- -->/
+ *
+ *   return copy;
+ * }
+ * ]|
+ * If the returned #GDBusMessage is different from @message and cannot
+ * be sent on @connection (it could use features, such as file
+ * descriptors, not compatible with @connection), then a warning is
+ * logged to <emphasis>standard error</emphasis>. Applications can
+ * check this ahead of time using g_dbus_message_to_blob() passing a
+ * #GDBusCapabilityFlags value obtained from @connection.
+ *
+ * Returns: (transfer full) (allow-none): A #GDBusMessage that will be freed with
+ * g_object_unref() or %NULL to drop the message. Passive filter
+ * functions can simply return the passed @message object.
+ *
+ * Since: 2.26
+ */
+typedef GDBusMessage *(*GDBusMessageFilterFunction) (GDBusConnection *connection,
+                                                     GDBusMessage    *message,
+                                                     gboolean         incoming,
+                                                     gpointer         user_data);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_dbus_connection_add_filter (GDBusConnection            *connection,
+                                    GDBusMessageFilterFunction  filter_function,
+                                    gpointer                    user_data,
+                                    GDestroyNotify              user_data_free_func);
+
+GLIB_AVAILABLE_IN_ALL
+void  g_dbus_connection_remove_filter (GDBusConnection    *connection,
+                                       guint               filter_id);
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+
+G_END_DECLS
+
+#endif /* __G_DBUS_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbuserror.h b/dist/usr/include/glib-2.0/gio/gdbuserror.h
new file mode 100644
index 0000000..cc90a9e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbuserror.h
@@ -0,0 +1,111 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_ERROR_H__
+#define __G_DBUS_ERROR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_DBUS_ERROR:
+ *
+ * Error domain for errors generated by a remote message bus. Errors
+ * in this domain will be from the #GDBusError enumeration.  See
+ * #GError for more information on error domains.
+ *
+ * Note that errors in this error domain is intended only for
+ * returning errors from a remote message bus process. Errors
+ * generated locally in-process by e.g. #GDBusConnection is from the
+ * %G_IO_ERROR domain.
+ *
+ * Since: 2.26
+ */
+#define G_DBUS_ERROR g_dbus_error_quark()
+
+GLIB_AVAILABLE_IN_ALL
+GQuark g_dbus_error_quark (void);
+
+/* Used by applications to check, get and strip the D-Bus error name */
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_error_is_remote_error       (const GError    *error);
+GLIB_AVAILABLE_IN_ALL
+gchar   *g_dbus_error_get_remote_error      (const GError    *error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_error_strip_remote_error    (GError          *error);
+
+/**
+ * GDBusErrorEntry:
+ * @error_code: An error code.
+ * @dbus_error_name: The D-Bus error name to associate with @error_code.
+ *
+ * Struct used in g_dbus_error_register_error_domain().
+ *
+ * Since: 2.26
+ */
+struct _GDBusErrorEntry
+{
+  gint         error_code;
+  const gchar *dbus_error_name;
+};
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_error_register_error        (GQuark                 error_domain,
+                                             gint                   error_code,
+                                             const gchar           *dbus_error_name);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_error_unregister_error      (GQuark                 error_domain,
+                                             gint                   error_code,
+                                             const gchar           *dbus_error_name);
+GLIB_AVAILABLE_IN_ALL
+void     g_dbus_error_register_error_domain (const gchar           *error_domain_quark_name,
+                                             volatile gsize        *quark_volatile,
+                                             const GDBusErrorEntry *entries,
+                                             guint                  num_entries);
+
+/* Only used by object mappings to map back and forth to GError */
+GLIB_AVAILABLE_IN_ALL
+GError  *g_dbus_error_new_for_dbus_error    (const gchar     *dbus_error_name,
+                                             const gchar     *dbus_error_message);
+GLIB_AVAILABLE_IN_ALL
+void     g_dbus_error_set_dbus_error        (GError         **error,
+                                             const gchar     *dbus_error_name,
+                                             const gchar     *dbus_error_message,
+                                             const gchar     *format,
+                                             ...) G_GNUC_PRINTF(4, 5);
+GLIB_AVAILABLE_IN_ALL
+void     g_dbus_error_set_dbus_error_valist (GError         **error,
+                                             const gchar     *dbus_error_name,
+                                             const gchar     *dbus_error_message,
+                                             const gchar     *format,
+                                             va_list          var_args) G_GNUC_PRINTF(4, 0);
+GLIB_AVAILABLE_IN_ALL
+gchar   *g_dbus_error_encode_gerror         (const GError    *error);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_ERROR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusinterface.h b/dist/usr/include/glib-2.0/gio/gdbusinterface.h
new file mode 100644
index 0000000..a82a757
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusinterface.h
@@ -0,0 +1,83 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_INTERFACE_H__
+#define __G_DBUS_INTERFACE_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_INTERFACE         (g_dbus_interface_get_type())
+#define G_DBUS_INTERFACE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_INTERFACE, GDBusInterface))
+#define G_IS_DBUS_INTERFACE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_INTERFACE))
+#define G_DBUS_INTERFACE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_INTERFACE, GDBusInterfaceIface))
+
+/**
+ * GDBusInterface:
+ *
+ * Base type for D-Bus interfaces.
+ *
+ * Since: 2.30
+ */
+
+typedef struct _GDBusInterfaceIface GDBusInterfaceIface;
+
+/**
+ * GDBusInterfaceIface:
+ * @parent_iface: The parent interface.
+ * @get_info: Returns a #GDBusInterfaceInfo. See g_dbus_interface_get_info().
+ * @get_object: Gets the enclosing #GDBusObject. See g_dbus_interface_get_object().
+ * @set_object: Sets the enclosing #GDBusObject. See g_dbus_interface_set_object().
+ * @dup_object: Gets a reference to the enclosing #GDBusObject. See g_dbus_interface_dup_object(). Added in 2.32.
+ *
+ * Base type for D-Bus interfaces.
+ *
+ * Since: 2.30
+ */
+struct _GDBusInterfaceIface
+{
+  GTypeInterface parent_iface;
+
+  /* Virtual Functions */
+  GDBusInterfaceInfo   *(*get_info)   (GDBusInterface      *interface_);
+  GDBusObject          *(*get_object) (GDBusInterface      *interface_);
+  void                  (*set_object) (GDBusInterface      *interface_,
+                                       GDBusObject         *object);
+  GDBusObject          *(*dup_object) (GDBusInterface      *interface_);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_dbus_interface_get_type         (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceInfo   *g_dbus_interface_get_info         (GDBusInterface      *interface_);
+GLIB_AVAILABLE_IN_ALL
+GDBusObject          *g_dbus_interface_get_object       (GDBusInterface      *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                  g_dbus_interface_set_object       (GDBusInterface      *interface_,
+                                                         GDBusObject         *object);
+GLIB_AVAILABLE_IN_2_32
+GDBusObject          *g_dbus_interface_dup_object       (GDBusInterface      *interface_);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_INTERFACE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h b/dist/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h
new file mode 100644
index 0000000..ca79c53
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h
@@ -0,0 +1,129 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_INTERFACE_SKELETON_H__
+#define __G_DBUS_INTERFACE_SKELETON_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_INTERFACE_SKELETON         (g_dbus_interface_skeleton_get_type ())
+#define G_DBUS_INTERFACE_SKELETON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeleton))
+#define G_DBUS_INTERFACE_SKELETON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass))
+#define G_DBUS_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_INTERFACE_SKELETON, GDBusInterfaceSkeletonClass))
+#define G_IS_DBUS_INTERFACE_SKELETON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_INTERFACE_SKELETON))
+#define G_IS_DBUS_INTERFACE_SKELETON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_INTERFACE_SKELETON))
+
+typedef struct _GDBusInterfaceSkeletonClass   GDBusInterfaceSkeletonClass;
+typedef struct _GDBusInterfaceSkeletonPrivate GDBusInterfaceSkeletonPrivate;
+
+/**
+ * GDBusInterfaceSkeleton:
+ *
+ * The #GDBusInterfaceSkeleton structure contains private data and should
+ * only be accessed using the provided API.
+ *
+ * Since: 2.30
+ */
+struct _GDBusInterfaceSkeleton
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusInterfaceSkeletonPrivate *priv;
+};
+
+/**
+ * GDBusInterfaceSkeletonClass:
+ * @parent_class: The parent class.
+ * @get_info: Returns a #GDBusInterfaceInfo. See g_dbus_interface_skeleton_get_info() for details.
+ * @get_vtable: Returns a #GDBusInterfaceVTable. See g_dbus_interface_skeleton_get_vtable() for details.
+ * @get_properties: Returns a #GVariant with all properties. See g_dbus_interface_skeleton_get_properties().
+ * @flush: Emits outstanding changes, if any. See g_dbus_interface_skeleton_flush().
+ * @g_authorize_method: Signal class handler for the #GDBusInterfaceSkeleton::g-authorize-method signal.
+ *
+ * Class structure for #GDBusInterfaceSkeleton.
+ *
+ * Since: 2.30
+ */
+struct _GDBusInterfaceSkeletonClass
+{
+  GObjectClass parent_class;
+
+  /* Virtual Functions */
+  GDBusInterfaceInfo   *(*get_info)       (GDBusInterfaceSkeleton  *interface_);
+  GDBusInterfaceVTable *(*get_vtable)     (GDBusInterfaceSkeleton  *interface_);
+  GVariant             *(*get_properties) (GDBusInterfaceSkeleton  *interface_);
+  void                  (*flush)          (GDBusInterfaceSkeleton  *interface_);
+
+  /*< private >*/
+  gpointer vfunc_padding[8];
+  /*< public >*/
+
+  /* Signals */
+  gboolean (*g_authorize_method) (GDBusInterfaceSkeleton  *interface_,
+                                  GDBusMethodInvocation   *invocation);
+
+  /*< private >*/
+  gpointer signal_padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                        g_dbus_interface_skeleton_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceSkeletonFlags  g_dbus_interface_skeleton_get_flags       (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                         g_dbus_interface_skeleton_set_flags       (GDBusInterfaceSkeleton      *interface_,
+                                                                        GDBusInterfaceSkeletonFlags  flags);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceInfo          *g_dbus_interface_skeleton_get_info        (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceVTable        *g_dbus_interface_skeleton_get_vtable      (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+GVariant                    *g_dbus_interface_skeleton_get_properties  (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                         g_dbus_interface_skeleton_flush           (GDBusInterfaceSkeleton      *interface_);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                     g_dbus_interface_skeleton_export          (GDBusInterfaceSkeleton      *interface_,
+                                                                        GDBusConnection             *connection,
+                                                                        const gchar                 *object_path,
+                                                                        GError                     **error);
+GLIB_AVAILABLE_IN_ALL
+void                         g_dbus_interface_skeleton_unexport        (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                g_dbus_interface_skeleton_unexport_from_connection (GDBusInterfaceSkeleton      *interface_,
+                                                                        GDBusConnection             *connection);
+
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection             *g_dbus_interface_skeleton_get_connection  (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+GList                       *g_dbus_interface_skeleton_get_connections (GDBusInterfaceSkeleton      *interface_);
+GLIB_AVAILABLE_IN_ALL
+gboolean                     g_dbus_interface_skeleton_has_connection  (GDBusInterfaceSkeleton      *interface_,
+                                                                        GDBusConnection             *connection);
+GLIB_AVAILABLE_IN_ALL
+const gchar                 *g_dbus_interface_skeleton_get_object_path (GDBusInterfaceSkeleton      *interface_);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_INTERFACE_SKELETON_H */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusintrospection.h b/dist/usr/include/glib-2.0/gio/gdbusintrospection.h
new file mode 100644
index 0000000..32ee784
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusintrospection.h
@@ -0,0 +1,327 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_INTROSPECTION_H__
+#define __G_DBUS_INTROSPECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GDBusAnnotationInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @key: The name of the annotation, e.g. "org.freedesktop.DBus.Deprecated".
+ * @value: The value of the annotation.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about an annotation.
+ *
+ * Since: 2.26
+ */
+struct _GDBusAnnotationInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *key;
+  gchar                *value;
+  GDBusAnnotationInfo **annotations;
+};
+
+/**
+ * GDBusArgInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @name: Name of the argument, e.g. @unix_user_id.
+ * @signature: D-Bus signature of the argument (a single complete type).
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about an argument for a method or a signal.
+ *
+ * Since: 2.26
+ */
+struct _GDBusArgInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *name;
+  gchar                *signature;
+  GDBusAnnotationInfo **annotations;
+};
+
+/**
+ * GDBusMethodInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @name: The name of the D-Bus method, e.g. @RequestName.
+ * @in_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no in arguments.
+ * @out_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no out arguments.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about a method on an D-Bus interface.
+ *
+ * Since: 2.26
+ */
+struct _GDBusMethodInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusArgInfo        **in_args;
+  GDBusArgInfo        **out_args;
+  GDBusAnnotationInfo **annotations;
+};
+
+/**
+ * GDBusSignalInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @name: The name of the D-Bus signal, e.g. "NameOwnerChanged".
+ * @args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no arguments.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about a signal on a D-Bus interface.
+ *
+ * Since: 2.26
+ */
+struct _GDBusSignalInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusArgInfo        **args;
+  GDBusAnnotationInfo **annotations;
+};
+
+/**
+ * GDBusPropertyInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @name: The name of the D-Bus property, e.g. "SupportedFilesystems".
+ * @signature: The D-Bus signature of the property (a single complete type).
+ * @flags: Access control flags for the property.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about a D-Bus property on a D-Bus interface.
+ *
+ * Since: 2.26
+ */
+struct _GDBusPropertyInfo
+{
+  /*< public >*/
+  volatile gint             ref_count;
+  gchar                    *name;
+  gchar                    *signature;
+  GDBusPropertyInfoFlags    flags;
+  GDBusAnnotationInfo     **annotations;
+};
+
+/**
+ * GDBusInterfaceInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @name: The name of the D-Bus interface, e.g. "org.freedesktop.DBus.Properties".
+ * @methods: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusMethodInfo structures or %NULL if there are no methods.
+ * @signals: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusSignalInfo structures or %NULL if there are no signals.
+ * @properties: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusPropertyInfo structures or %NULL if there are no properties.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about a D-Bus interface.
+ *
+ * Since: 2.26
+ */
+struct _GDBusInterfaceInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusMethodInfo     **methods;
+  GDBusSignalInfo     **signals;
+  GDBusPropertyInfo   **properties;
+  GDBusAnnotationInfo **annotations;
+};
+
+/**
+ * GDBusNodeInfo:
+ * @ref_count: The reference count or -1 if statically allocated.
+ * @path: The path of the node or %NULL if omitted. Note that this may be a relative path. See the D-Bus specification for more details.
+ * @interfaces: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusInterfaceInfo structures or %NULL if there are no interfaces.
+ * @nodes: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusNodeInfo structures or %NULL if there are no nodes.
+ * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
+ *
+ * Information about nodes in a remote object hierarchy.
+ *
+ * Since: 2.26
+ */
+struct _GDBusNodeInfo
+{
+  /*< public >*/
+  volatile gint         ref_count;
+  gchar                *path;
+  GDBusInterfaceInfo  **interfaces;
+  GDBusNodeInfo       **nodes;
+  GDBusAnnotationInfo **annotations;
+};
+
+GLIB_AVAILABLE_IN_ALL
+const gchar        *g_dbus_annotation_info_lookup          (GDBusAnnotationInfo **annotations,
+                                                            const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+GDBusMethodInfo    *g_dbus_interface_info_lookup_method    (GDBusInterfaceInfo   *info,
+                                                            const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+GDBusSignalInfo    *g_dbus_interface_info_lookup_signal    (GDBusInterfaceInfo   *info,
+                                                            const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+GDBusPropertyInfo  *g_dbus_interface_info_lookup_property  (GDBusInterfaceInfo   *info,
+                                                            const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+void                g_dbus_interface_info_cache_build      (GDBusInterfaceInfo   *info);
+GLIB_AVAILABLE_IN_ALL
+void                g_dbus_interface_info_cache_release    (GDBusInterfaceInfo   *info);
+
+GLIB_AVAILABLE_IN_ALL
+void                g_dbus_interface_info_generate_xml     (GDBusInterfaceInfo   *info,
+                                                            guint                 indent,
+                                                            GString              *string_builder);
+
+GLIB_AVAILABLE_IN_ALL
+GDBusNodeInfo      *g_dbus_node_info_new_for_xml           (const gchar          *xml_data,
+                                                            GError              **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceInfo *g_dbus_node_info_lookup_interface      (GDBusNodeInfo        *info,
+                                                            const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+void                g_dbus_node_info_generate_xml          (GDBusNodeInfo        *info,
+                                                            guint                 indent,
+                                                            GString              *string_builder);
+
+GLIB_AVAILABLE_IN_ALL
+GDBusNodeInfo       *g_dbus_node_info_ref                  (GDBusNodeInfo        *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceInfo  *g_dbus_interface_info_ref             (GDBusInterfaceInfo   *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusMethodInfo     *g_dbus_method_info_ref                (GDBusMethodInfo      *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusSignalInfo     *g_dbus_signal_info_ref                (GDBusSignalInfo      *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusPropertyInfo   *g_dbus_property_info_ref              (GDBusPropertyInfo    *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusArgInfo        *g_dbus_arg_info_ref                   (GDBusArgInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+GDBusAnnotationInfo *g_dbus_annotation_info_ref            (GDBusAnnotationInfo  *info);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_node_info_unref                (GDBusNodeInfo        *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_interface_info_unref           (GDBusInterfaceInfo   *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_method_info_unref              (GDBusMethodInfo      *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_signal_info_unref              (GDBusSignalInfo      *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_property_info_unref            (GDBusPropertyInfo    *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_arg_info_unref                 (GDBusArgInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_annotation_info_unref          (GDBusAnnotationInfo  *info);
+
+/**
+ * G_TYPE_DBUS_NODE_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusNodeInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_NODE_INFO       (g_dbus_node_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_INTERFACE_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusInterfaceInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_INTERFACE_INFO  (g_dbus_interface_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_METHOD_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusMethodInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_METHOD_INFO     (g_dbus_method_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_SIGNAL_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusSignalInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_SIGNAL_INFO     (g_dbus_signal_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_PROPERTY_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusPropertyInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_PROPERTY_INFO   (g_dbus_property_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_ARG_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusArgInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_ARG_INFO        (g_dbus_arg_info_get_type ())
+
+/**
+ * G_TYPE_DBUS_ANNOTATION_INFO:
+ *
+ * The #GType for a boxed type holding a #GDBusAnnotationInfo.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DBUS_ANNOTATION_INFO (g_dbus_annotation_info_get_type ())
+
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_node_info_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_interface_info_get_type  (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_method_info_get_type     (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_signal_info_get_type     (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_property_info_get_type   (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_arg_info_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType g_dbus_annotation_info_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __G_DBUS_INTROSPECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusmenumodel.h b/dist/usr/include/glib-2.0/gio/gdbusmenumodel.h
new file mode 100644
index 0000000..e0ec520
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusmenumodel.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2011 Canonical Ltd.
+ *
+ * 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
+ * licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_DBUS_MENU_MODEL_H__
+#define __G_DBUS_MENU_MODEL_H__
+
+#include <gio/gdbusconnection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_MENU_MODEL          (g_dbus_menu_model_get_type ())
+#define G_DBUS_MENU_MODEL(inst)         (G_TYPE_CHECK_INSTANCE_CAST ((inst),   \
+                                         G_TYPE_DBUS_MENU_MODEL, GDBusMenuModel))
+#define G_IS_DBUS_MENU_MODEL(inst)      (G_TYPE_CHECK_INSTANCE_TYPE ((inst),   \
+                                         G_TYPE_DBUS_MENU_MODEL))
+
+typedef struct _GDBusMenuModel GDBusMenuModel;
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_dbus_menu_model_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GDBusMenuModel *        g_dbus_menu_model_get          (GDBusConnection *connection,
+                                                        const gchar     *bus_name,
+                                                        const gchar     *object_path);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_MENU_MODEL_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusmessage.h b/dist/usr/include/glib-2.0/gio/gdbusmessage.h
new file mode 100644
index 0000000..bf27f7a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusmessage.h
@@ -0,0 +1,199 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_MESSAGE_H__
+#define __G_DBUS_MESSAGE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_MESSAGE         (g_dbus_message_get_type ())
+#define G_DBUS_MESSAGE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_MESSAGE, GDBusMessage))
+#define G_IS_DBUS_MESSAGE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_MESSAGE))
+
+GLIB_AVAILABLE_IN_ALL
+GType                     g_dbus_message_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new                (void);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_signal         (const gchar              *path,
+                                                             const gchar              *interface_,
+                                                             const gchar              *signal);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_method_call    (const gchar              *name,
+                                                             const gchar              *path,
+                                                             const gchar              *interface_,
+                                                             const gchar              *method);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_method_reply   (GDBusMessage             *method_call_message);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_method_error   (GDBusMessage             *method_call_message,
+                                                             const gchar              *error_name,
+                                                             const gchar              *error_message_format,
+                                                             ...);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_method_error_valist (GDBusMessage             *method_call_message,
+                                                                  const gchar              *error_name,
+                                                                  const gchar              *error_message_format,
+                                                                  va_list                   var_args);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_method_error_literal (GDBusMessage             *method_call_message,
+                                                                   const gchar              *error_name,
+                                                                   const gchar              *error_message);
+GLIB_AVAILABLE_IN_ALL
+gchar                    *g_dbus_message_print              (GDBusMessage             *message,
+                                                             guint                     indent);
+GLIB_AVAILABLE_IN_ALL
+gboolean                  g_dbus_message_get_locked         (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_lock               (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_copy               (GDBusMessage             *message,
+                                                             GError                  **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessageByteOrder     g_dbus_message_get_byte_order     (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_byte_order     (GDBusMessage             *message,
+                                                             GDBusMessageByteOrder     byte_order);
+
+GLIB_AVAILABLE_IN_ALL
+GDBusMessageType          g_dbus_message_get_message_type   (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_message_type   (GDBusMessage             *message,
+                                                             GDBusMessageType          type);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessageFlags         g_dbus_message_get_flags          (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_flags          (GDBusMessage             *message,
+                                                             GDBusMessageFlags         flags);
+GLIB_AVAILABLE_IN_ALL
+guint32                   g_dbus_message_get_serial         (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_serial         (GDBusMessage             *message,
+                                                             guint32                   serial);
+GLIB_AVAILABLE_IN_ALL
+GVariant                 *g_dbus_message_get_header         (GDBusMessage             *message,
+                                                             GDBusMessageHeaderField   header_field);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_header         (GDBusMessage             *message,
+                                                             GDBusMessageHeaderField   header_field,
+                                                             GVariant                 *value);
+GLIB_AVAILABLE_IN_ALL
+guchar                   *g_dbus_message_get_header_fields  (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+GVariant                 *g_dbus_message_get_body           (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_body           (GDBusMessage             *message,
+                                                             GVariant                 *body);
+GLIB_AVAILABLE_IN_ALL
+GUnixFDList              *g_dbus_message_get_unix_fd_list   (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_unix_fd_list   (GDBusMessage             *message,
+                                                             GUnixFDList              *fd_list);
+
+GLIB_AVAILABLE_IN_ALL
+guint32                   g_dbus_message_get_reply_serial   (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_reply_serial   (GDBusMessage             *message,
+                                                             guint32                   value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_interface      (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_interface      (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_member         (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_member         (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_path           (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_path           (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_sender         (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_sender         (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_destination    (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_destination    (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_error_name     (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_error_name     (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_signature      (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_signature      (GDBusMessage             *message,
+                                                             const gchar              *value);
+
+GLIB_AVAILABLE_IN_ALL
+guint32                   g_dbus_message_get_num_unix_fds   (GDBusMessage             *message);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_message_set_num_unix_fds   (GDBusMessage             *message,
+                                                             guint32                   value);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar              *g_dbus_message_get_arg0           (GDBusMessage             *message);
+
+
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage             *g_dbus_message_new_from_blob      (guchar                   *blob,
+                                                             gsize                     blob_len,
+                                                             GDBusCapabilityFlags      capabilities,
+                                                             GError                  **error);
+
+GLIB_AVAILABLE_IN_ALL
+gssize                    g_dbus_message_bytes_needed       (guchar                   *blob,
+                                                             gsize                     blob_len,
+                                                             GError                  **error);
+
+GLIB_AVAILABLE_IN_ALL
+guchar                   *g_dbus_message_to_blob            (GDBusMessage             *message,
+                                                             gsize                    *out_size,
+                                                             GDBusCapabilityFlags      capabilities,
+                                                             GError                  **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                  g_dbus_message_to_gerror          (GDBusMessage             *message,
+                                                             GError                  **error);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_MESSAGE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusmethodinvocation.h b/dist/usr/include/glib-2.0/gio/gdbusmethodinvocation.h
new file mode 100644
index 0000000..7fd4aff
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusmethodinvocation.h
@@ -0,0 +1,99 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_METHOD_INVOCATION_H__
+#define __G_DBUS_METHOD_INVOCATION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_METHOD_INVOCATION         (g_dbus_method_invocation_get_type ())
+#define G_DBUS_METHOD_INVOCATION(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_METHOD_INVOCATION, GDBusMethodInvocation))
+#define G_IS_DBUS_METHOD_INVOCATION(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_METHOD_INVOCATION))
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_dbus_method_invocation_get_type             (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+const gchar           *g_dbus_method_invocation_get_sender           (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+const gchar           *g_dbus_method_invocation_get_object_path      (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+const gchar           *g_dbus_method_invocation_get_interface_name   (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+const gchar           *g_dbus_method_invocation_get_method_name      (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+const GDBusMethodInfo *g_dbus_method_invocation_get_method_info      (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_2_38
+const GDBusPropertyInfo *g_dbus_method_invocation_get_property_info  (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection       *g_dbus_method_invocation_get_connection       (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+GDBusMessage          *g_dbus_method_invocation_get_message          (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+GVariant              *g_dbus_method_invocation_get_parameters       (GDBusMethodInvocation *invocation);
+GLIB_AVAILABLE_IN_ALL
+gpointer               g_dbus_method_invocation_get_user_data        (GDBusMethodInvocation *invocation);
+
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_value         (GDBusMethodInvocation *invocation,
+                                                                      GVariant              *parameters);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_value_with_unix_fd_list (GDBusMethodInvocation *invocation,
+                                                                                GVariant              *parameters,
+                                                                                GUnixFDList           *fd_list);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_error         (GDBusMethodInvocation *invocation,
+                                                                      GQuark                 domain,
+                                                                      gint                   code,
+                                                                      const gchar           *format,
+                                                                      ...) G_GNUC_PRINTF(4, 5);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_error_valist  (GDBusMethodInvocation *invocation,
+                                                                      GQuark                 domain,
+                                                                      gint                   code,
+                                                                      const gchar           *format,
+                                                                      va_list                var_args)
+                                                                      G_GNUC_PRINTF(4, 0);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_error_literal (GDBusMethodInvocation *invocation,
+                                                                      GQuark                 domain,
+                                                                      gint                   code,
+                                                                      const gchar           *message);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_gerror        (GDBusMethodInvocation *invocation,
+                                                                      const GError          *error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_take_error           (GDBusMethodInvocation *invocation,
+                                                                      GError                *error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_dbus_method_invocation_return_dbus_error    (GDBusMethodInvocation *invocation,
+                                                                      const gchar           *error_name,
+                                                                      const gchar           *error_message);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_METHOD_INVOCATION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusnameowning.h b/dist/usr/include/glib-2.0/gio/gdbusnameowning.h
new file mode 100644
index 0000000..6e69bff
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusnameowning.h
@@ -0,0 +1,117 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_NAME_OWNING_H__
+#define __G_DBUS_NAME_OWNING_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GBusAcquiredCallback:
+ * @connection: The #GDBusConnection to a message bus.
+ * @name: The name that is requested to be owned.
+ * @user_data: User data passed to g_bus_own_name().
+ *
+ * Invoked when a connection to a message bus has been obtained.
+ *
+ * Since: 2.26
+ */
+typedef void (*GBusAcquiredCallback) (GDBusConnection *connection,
+                                      const gchar     *name,
+                                      gpointer         user_data);
+
+/**
+ * GBusNameAcquiredCallback:
+ * @connection: The #GDBusConnection on which to acquired the name.
+ * @name: The name being owned.
+ * @user_data: User data passed to g_bus_own_name() or g_bus_own_name_on_connection().
+ *
+ * Invoked when the name is acquired.
+ *
+ * Since: 2.26
+ */
+typedef void (*GBusNameAcquiredCallback) (GDBusConnection *connection,
+                                          const gchar     *name,
+                                          gpointer         user_data);
+
+/**
+ * GBusNameLostCallback:
+ * @connection: The #GDBusConnection on which to acquire the name or %NULL if
+ * the connection was disconnected.
+ * @name: The name being owned.
+ * @user_data: User data passed to g_bus_own_name() or g_bus_own_name_on_connection().
+ *
+ * Invoked when the name is lost or @connection has been closed.
+ *
+ * Since: 2.26
+ */
+typedef void (*GBusNameLostCallback) (GDBusConnection *connection,
+                                      const gchar     *name,
+                                      gpointer         user_data);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_own_name                 (GBusType                  bus_type,
+                                      const gchar              *name,
+                                      GBusNameOwnerFlags        flags,
+                                      GBusAcquiredCallback      bus_acquired_handler,
+                                      GBusNameAcquiredCallback  name_acquired_handler,
+                                      GBusNameLostCallback      name_lost_handler,
+                                      gpointer                  user_data,
+                                      GDestroyNotify            user_data_free_func);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_own_name_on_connection   (GDBusConnection          *connection,
+                                      const gchar              *name,
+                                      GBusNameOwnerFlags        flags,
+                                      GBusNameAcquiredCallback  name_acquired_handler,
+                                      GBusNameLostCallback      name_lost_handler,
+                                      gpointer                  user_data,
+                                      GDestroyNotify            user_data_free_func);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_own_name_with_closures   (GBusType                  bus_type,
+                                      const gchar              *name,
+                                      GBusNameOwnerFlags        flags,
+                                      GClosure                 *bus_acquired_closure,
+                                      GClosure                 *name_acquired_closure,
+                                      GClosure                 *name_lost_closure);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_own_name_on_connection_with_closures (
+                                      GDBusConnection          *connection,
+                                      const gchar              *name,
+                                      GBusNameOwnerFlags        flags,
+                                      GClosure                 *name_acquired_closure,
+                                      GClosure                 *name_lost_closure);
+
+GLIB_AVAILABLE_IN_ALL
+void  g_bus_unown_name               (guint                     owner_id);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_NAME_OWNING_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusnamewatching.h b/dist/usr/include/glib-2.0/gio/gdbusnamewatching.h
new file mode 100644
index 0000000..85607bf
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusnamewatching.h
@@ -0,0 +1,104 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_NAME_WATCHING_H__
+#define __G_DBUS_NAME_WATCHING_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GBusNameAppearedCallback:
+ * @connection: The #GDBusConnection the name is being watched on.
+ * @name: The name being watched.
+ * @name_owner: Unique name of the owner of the name being watched.
+ * @user_data: User data passed to g_bus_watch_name().
+ *
+ * Invoked when the name being watched is known to have to have a owner.
+ *
+ * Since: 2.26
+ */
+typedef void (*GBusNameAppearedCallback) (GDBusConnection *connection,
+                                          const gchar     *name,
+                                          const gchar     *name_owner,
+                                          gpointer         user_data);
+
+/**
+ * GBusNameVanishedCallback:
+ * @connection: The #GDBusConnection the name is being watched on, or
+ *     %NULL.
+ * @name: The name being watched.
+ * @user_data: User data passed to g_bus_watch_name().
+ *
+ * Invoked when the name being watched is known not to have to have a owner.
+ *
+ * This is also invoked when the #GDBusConection on which the watch was
+ * established has been closed.  In that case, @connection will be
+ * %NULL.
+ *
+ * Since: 2.26
+ */
+typedef void (*GBusNameVanishedCallback) (GDBusConnection *connection,
+                                          const gchar     *name,
+                                          gpointer         user_data);
+
+
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_watch_name               (GBusType                  bus_type,
+                                      const gchar              *name,
+                                      GBusNameWatcherFlags      flags,
+                                      GBusNameAppearedCallback  name_appeared_handler,
+                                      GBusNameVanishedCallback  name_vanished_handler,
+                                      gpointer                  user_data,
+                                      GDestroyNotify            user_data_free_func);
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_watch_name_on_connection (GDBusConnection          *connection,
+                                      const gchar              *name,
+                                      GBusNameWatcherFlags      flags,
+                                      GBusNameAppearedCallback  name_appeared_handler,
+                                      GBusNameVanishedCallback  name_vanished_handler,
+                                      gpointer                  user_data,
+                                      GDestroyNotify            user_data_free_func);
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_watch_name_with_closures (GBusType                  bus_type,
+                                      const gchar              *name,
+                                      GBusNameWatcherFlags      flags,
+                                      GClosure                 *name_appeared_closure,
+                                      GClosure                 *name_vanished_closure);
+GLIB_AVAILABLE_IN_ALL
+guint g_bus_watch_name_on_connection_with_closures (
+                                      GDBusConnection          *connection,
+                                      const gchar              *name,
+                                      GBusNameWatcherFlags      flags,
+                                      GClosure                 *name_appeared_closure,
+                                      GClosure                 *name_vanished_closure);
+GLIB_AVAILABLE_IN_ALL
+void  g_bus_unwatch_name             (guint                     watcher_id);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_NAME_WATCHING_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobject.h b/dist/usr/include/glib-2.0/gio/gdbusobject.h
new file mode 100644
index 0000000..ad6c4d8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobject.h
@@ -0,0 +1,80 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_H__
+#define __G_DBUS_OBJECT_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT         (g_dbus_object_get_type())
+#define G_DBUS_OBJECT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT, GDBusObject))
+#define G_IS_DBUS_OBJECT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT))
+#define G_DBUS_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_OBJECT, GDBusObjectIface))
+
+typedef struct _GDBusObjectIface GDBusObjectIface;
+
+/**
+ * GDBusObjectIface:
+ * @parent_iface: The parent interface.
+ * @get_object_path: Returns the object path. See g_dbus_object_get_object_path().
+ * @get_interfaces: Returns all interfaces. See g_dbus_object_get_interfaces().
+ * @get_interface: Returns an interface by name. See g_dbus_object_get_interface().
+ * @interface_added: Signal handler for the #GDBusObject::interface-added signal.
+ * @interface_removed: Signal handler for the #GDBusObject::interface-removed signal.
+ *
+ * Base object type for D-Bus objects.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectIface
+{
+  GTypeInterface parent_iface;
+
+  /* Virtual Functions */
+  const gchar     *(*get_object_path) (GDBusObject  *object);
+  GList           *(*get_interfaces)  (GDBusObject  *object);
+  GDBusInterface  *(*get_interface)   (GDBusObject  *object,
+                                       const gchar  *interface_name);
+
+  /* Signals */
+  void (*interface_added)   (GDBusObject     *object,
+                             GDBusInterface  *interface_);
+  void (*interface_removed) (GDBusObject     *object,
+                             GDBusInterface  *interface_);
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_dbus_object_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_object_get_object_path (GDBusObject  *object);
+GLIB_AVAILABLE_IN_ALL
+GList           *g_dbus_object_get_interfaces  (GDBusObject  *object);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterface  *g_dbus_object_get_interface   (GDBusObject  *object,
+                                                const gchar  *interface_name);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobjectmanager.h b/dist/usr/include/glib-2.0/gio/gdbusobjectmanager.h
new file mode 100644
index 0000000..bc00c5e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobjectmanager.h
@@ -0,0 +1,96 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_MANAGER_H__
+#define __G_DBUS_OBJECT_MANAGER_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT_MANAGER         (g_dbus_object_manager_get_type())
+#define G_DBUS_OBJECT_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER, GDBusObjectManager))
+#define G_IS_DBUS_OBJECT_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER))
+#define G_DBUS_OBJECT_MANAGER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), G_TYPE_DBUS_OBJECT_MANAGER, GDBusObjectManagerIface))
+
+typedef struct _GDBusObjectManagerIface GDBusObjectManagerIface;
+
+/**
+ * GDBusObjectManagerIface:
+ * @parent_iface: The parent interface.
+ * @get_object_path: Virtual function for g_dbus_object_manager_get_object_path().
+ * @get_objects: Virtual function for g_dbus_object_manager_get_objects().
+ * @get_object: Virtual function for g_dbus_object_manager_get_object().
+ * @get_interface: Virtual function for g_dbus_object_manager_get_interface().
+ * @object_added: Signal handler for the #GDBusObjectManager::object-added signal.
+ * @object_removed: Signal handler for the #GDBusObjectManager::object-removed signal.
+ * @interface_added: Signal handler for the #GDBusObjectManager::interface-added signal.
+ * @interface_removed: Signal handler for the #GDBusObjectManager::interface-removed signal.
+ *
+ * Base type for D-Bus object managers.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectManagerIface
+{
+  GTypeInterface parent_iface;
+
+  /* Virtual Functions */
+  const gchar     *(*get_object_path) (GDBusObjectManager    *manager);
+  GList           *(*get_objects)     (GDBusObjectManager    *manager);
+  GDBusObject     *(*get_object)      (GDBusObjectManager    *manager,
+                                       const gchar           *object_path);
+  GDBusInterface  *(*get_interface)   (GDBusObjectManager    *manager,
+                                       const gchar           *object_path,
+                                       const gchar           *interface_name);
+
+  /* Signals */
+  void    (*object_added)                 (GDBusObjectManager   *manager,
+                                           GDBusObject          *object);
+  void    (*object_removed)               (GDBusObjectManager   *manager,
+                                           GDBusObject          *object);
+
+  void    (*interface_added)              (GDBusObjectManager   *manager,
+                                           GDBusObject          *object,
+                                           GDBusInterface       *interface_);
+  void    (*interface_removed)            (GDBusObjectManager   *manager,
+                                           GDBusObject          *object,
+                                           GDBusInterface       *interface_);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_dbus_object_manager_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_object_manager_get_object_path (GDBusObjectManager    *manager);
+GLIB_AVAILABLE_IN_ALL
+GList           *g_dbus_object_manager_get_objects     (GDBusObjectManager    *manager);
+GLIB_AVAILABLE_IN_ALL
+GDBusObject     *g_dbus_object_manager_get_object      (GDBusObjectManager    *manager,
+                                                        const gchar           *object_path);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterface  *g_dbus_object_manager_get_interface   (GDBusObjectManager    *manager,
+                                                        const gchar           *object_path,
+                                                        const gchar           *interface_name);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_MANAGER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h b/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h
new file mode 100644
index 0000000..91d45a8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h
@@ -0,0 +1,148 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_MANAGER_CLIENT_H__
+#define __G_DBUS_OBJECT_MANAGER_CLIENT_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT_MANAGER_CLIENT         (g_dbus_object_manager_client_get_type ())
+#define G_DBUS_OBJECT_MANAGER_CLIENT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClient))
+#define G_DBUS_OBJECT_MANAGER_CLIENT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClientClass))
+#define G_DBUS_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, GDBusObjectManagerClientClass))
+#define G_IS_DBUS_OBJECT_MANAGER_CLIENT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT))
+#define G_IS_DBUS_OBJECT_MANAGER_CLIENT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT))
+
+typedef struct _GDBusObjectManagerClientClass   GDBusObjectManagerClientClass;
+typedef struct _GDBusObjectManagerClientPrivate GDBusObjectManagerClientPrivate;
+
+/**
+ * GDBusObjectManagerClient:
+  *
+ * The #GDBusObjectManagerClient structure contains private data and should
+ * only be accessed using the provided API.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectManagerClient
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusObjectManagerClientPrivate *priv;
+};
+
+/**
+ * GDBusObjectManagerClientClass:
+ * @parent_class: The parent class.
+ * @interface_proxy_signal: Signal class handler for the #GDBusObjectManagerClient::interface-proxy-signal signal.
+ * @interface_proxy_properties_changed: Signal class handler for the #GDBusObjectManagerClient::interface-proxy-properties-changed signal.
+ *
+ * Class structure for #GDBusObjectManagerClient.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectManagerClientClass
+{
+  GObjectClass parent_class;
+
+  /* signals */
+  void    (*interface_proxy_signal)             (GDBusObjectManagerClient *manager,
+                                                 GDBusObjectProxy         *object_proxy,
+                                                 GDBusProxy               *interface_proxy,
+                                                 const gchar              *sender_name,
+                                                 const gchar              *signal_name,
+                                                 GVariant                 *parameters);
+
+  void    (*interface_proxy_properties_changed) (GDBusObjectManagerClient   *manager,
+                                                 GDBusObjectProxy           *object_proxy,
+                                                 GDBusProxy                 *interface_proxy,
+                                                 GVariant                   *changed_properties,
+                                                 const gchar* const         *invalidated_properties);
+
+  /*< private >*/
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                         g_dbus_object_manager_client_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+void                          g_dbus_object_manager_client_new                (GDBusConnection               *connection,
+                                                                               GDBusObjectManagerClientFlags  flags,
+                                                                               const gchar                   *name,
+                                                                               const gchar                   *object_path,
+                                                                               GDBusProxyTypeFunc             get_proxy_type_func,
+                                                                               gpointer                       get_proxy_type_user_data,
+                                                                               GDestroyNotify                 get_proxy_type_destroy_notify,
+                                                                               GCancellable                  *cancellable,
+                                                                               GAsyncReadyCallback            callback,
+                                                                               gpointer                       user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManager           *g_dbus_object_manager_client_new_finish         (GAsyncResult                  *res,
+                                                                               GError                       **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManager           *g_dbus_object_manager_client_new_sync           (GDBusConnection               *connection,
+                                                                               GDBusObjectManagerClientFlags  flags,
+                                                                               const gchar                   *name,
+                                                                               const gchar                   *object_path,
+                                                                               GDBusProxyTypeFunc             get_proxy_type_func,
+                                                                               gpointer                       get_proxy_type_user_data,
+                                                                               GDestroyNotify                 get_proxy_type_destroy_notify,
+                                                                               GCancellable                  *cancellable,
+                                                                               GError                       **error);
+GLIB_AVAILABLE_IN_ALL
+void                          g_dbus_object_manager_client_new_for_bus        (GBusType                       bus_type,
+                                                                               GDBusObjectManagerClientFlags  flags,
+                                                                               const gchar                   *name,
+                                                                               const gchar                   *object_path,
+                                                                               GDBusProxyTypeFunc             get_proxy_type_func,
+                                                                               gpointer                       get_proxy_type_user_data,
+                                                                               GDestroyNotify                 get_proxy_type_destroy_notify,
+                                                                               GCancellable                  *cancellable,
+                                                                               GAsyncReadyCallback            callback,
+                                                                               gpointer                       user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManager           *g_dbus_object_manager_client_new_for_bus_finish (GAsyncResult                  *res,
+                                                                               GError                       **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManager           *g_dbus_object_manager_client_new_for_bus_sync   (GBusType                       bus_type,
+                                                                               GDBusObjectManagerClientFlags  flags,
+                                                                               const gchar                   *name,
+                                                                               const gchar                   *object_path,
+                                                                               GDBusProxyTypeFunc             get_proxy_type_func,
+                                                                               gpointer                       get_proxy_type_user_data,
+                                                                               GDestroyNotify                 get_proxy_type_destroy_notify,
+                                                                               GCancellable                  *cancellable,
+                                                                               GError                       **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection              *g_dbus_object_manager_client_get_connection     (GDBusObjectManagerClient      *manager);
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManagerClientFlags g_dbus_object_manager_client_get_flags          (GDBusObjectManagerClient      *manager);
+GLIB_AVAILABLE_IN_ALL
+const gchar                  *g_dbus_object_manager_client_get_name           (GDBusObjectManagerClient      *manager);
+GLIB_AVAILABLE_IN_ALL
+gchar                        *g_dbus_object_manager_client_get_name_owner     (GDBusObjectManagerClient      *manager);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_MANAGER_CLIENT_H */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h b/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h
new file mode 100644
index 0000000..cd7bb4b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h
@@ -0,0 +1,95 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_MANAGER_SERVER_H__
+#define __G_DBUS_OBJECT_MANAGER_SERVER_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT_MANAGER_SERVER         (g_dbus_object_manager_server_get_type ())
+#define G_DBUS_OBJECT_MANAGER_SERVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServer))
+#define G_DBUS_OBJECT_MANAGER_SERVER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServerClass))
+#define G_DBUS_OBJECT_MANAGER_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER, GDBusObjectManagerServerClass))
+#define G_IS_DBUS_OBJECT_MANAGER_SERVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_MANAGER_SERVER))
+#define G_IS_DBUS_OBJECT_MANAGER_SERVER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_MANAGER_SERVER))
+
+typedef struct _GDBusObjectManagerServerClass   GDBusObjectManagerServerClass;
+typedef struct _GDBusObjectManagerServerPrivate GDBusObjectManagerServerPrivate;
+
+/**
+ * GDBusObjectManagerServer:
+ *
+ * The #GDBusObjectManagerServer structure contains private data and should
+ * only be accessed using the provided API.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectManagerServer
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusObjectManagerServerPrivate *priv;
+};
+
+/**
+ * GDBusObjectManagerServerClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #GDBusObjectManagerServer.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectManagerServerClass
+{
+  GObjectClass parent_class;
+
+  /*< private >*/
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                     g_dbus_object_manager_server_get_type            (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectManagerServer *g_dbus_object_manager_server_new                 (const gchar               *object_path);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection          *g_dbus_object_manager_server_get_connection      (GDBusObjectManagerServer  *manager);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_object_manager_server_set_connection      (GDBusObjectManagerServer  *manager,
+                                                                            GDBusConnection           *connection);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_object_manager_server_export              (GDBusObjectManagerServer  *manager,
+                                                                            GDBusObjectSkeleton       *object);
+GLIB_AVAILABLE_IN_ALL
+void                      g_dbus_object_manager_server_export_uniquely     (GDBusObjectManagerServer  *manager,
+                                                                            GDBusObjectSkeleton       *object);
+GLIB_AVAILABLE_IN_ALL
+gboolean                  g_dbus_object_manager_server_is_exported         (GDBusObjectManagerServer  *manager,
+                                                                            GDBusObjectSkeleton       *object);
+GLIB_AVAILABLE_IN_ALL
+gboolean                  g_dbus_object_manager_server_unexport            (GDBusObjectManagerServer  *manager,
+                                                                            const gchar               *object_path);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_MANAGER_SERVER_H */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobjectproxy.h b/dist/usr/include/glib-2.0/gio/gdbusobjectproxy.h
new file mode 100644
index 0000000..8fe7416
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobjectproxy.h
@@ -0,0 +1,81 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_PROXY_H__
+#define __G_DBUS_OBJECT_PROXY_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT_PROXY         (g_dbus_object_proxy_get_type ())
+#define G_DBUS_OBJECT_PROXY(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxy))
+#define G_DBUS_OBJECT_PROXY_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxyClass))
+#define G_DBUS_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_PROXY, GDBusObjectProxyClass))
+#define G_IS_DBUS_OBJECT_PROXY(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_PROXY))
+#define G_IS_DBUS_OBJECT_PROXY_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_PROXY))
+
+typedef struct _GDBusObjectProxyClass   GDBusObjectProxyClass;
+typedef struct _GDBusObjectProxyPrivate GDBusObjectProxyPrivate;
+
+/**
+ * GDBusObjectProxy:
+ *
+ * The #GDBusObjectProxy structure contains private data and should
+ * only be accessed using the provided API.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectProxy
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusObjectProxyPrivate *priv;
+};
+
+/**
+ * GDBusObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #GDBusObjectProxy.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectProxyClass
+{
+  GObjectClass parent_class;
+
+  /*< private >*/
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType             g_dbus_object_proxy_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectProxy *g_dbus_object_proxy_new            (GDBusConnection   *connection,
+                                                      const gchar       *object_path);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection  *g_dbus_object_proxy_get_connection (GDBusObjectProxy  *proxy);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_PROXY_H */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusobjectskeleton.h b/dist/usr/include/glib-2.0/gio/gdbusobjectskeleton.h
new file mode 100644
index 0000000..3bce873
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusobjectskeleton.h
@@ -0,0 +1,98 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_OBJECT_SKELETON_H__
+#define __G_DBUS_OBJECT_SKELETON_H__
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_OBJECT_SKELETON         (g_dbus_object_skeleton_get_type ())
+#define G_DBUS_OBJECT_SKELETON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeleton))
+#define G_DBUS_OBJECT_SKELETON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeletonClass))
+#define G_DBUS_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_OBJECT_SKELETON, GDBusObjectSkeletonClass))
+#define G_IS_DBUS_OBJECT_SKELETON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_OBJECT_SKELETON))
+#define G_IS_DBUS_OBJECT_SKELETON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_OBJECT_SKELETON))
+
+typedef struct _GDBusObjectSkeletonClass   GDBusObjectSkeletonClass;
+typedef struct _GDBusObjectSkeletonPrivate GDBusObjectSkeletonPrivate;
+
+/**
+ * GDBusObjectSkeleton:
+ *
+ * The #GDBusObjectSkeleton structure contains private data and should only be
+ * accessed using the provided API.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectSkeleton
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusObjectSkeletonPrivate *priv;
+};
+
+/**
+ * GDBusObjectSkeletonClass:
+ * @parent_class: The parent class.
+ * @authorize_method: Signal class handler for the #GDBusObjectSkeleton::authorize-method signal.
+ *
+ * Class structure for #GDBusObjectSkeleton.
+ *
+ * Since: 2.30
+ */
+struct _GDBusObjectSkeletonClass
+{
+  GObjectClass parent_class;
+
+  /* Signals */
+  gboolean (*authorize_method) (GDBusObjectSkeleton       *object,
+                                GDBusInterfaceSkeleton    *interface_,
+                                GDBusMethodInvocation *invocation);
+
+  /*< private >*/
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                g_dbus_object_skeleton_get_type                  (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusObjectSkeleton *g_dbus_object_skeleton_new                       (const gchar            *object_path);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_object_skeleton_flush                     (GDBusObjectSkeleton    *object);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_object_skeleton_add_interface             (GDBusObjectSkeleton    *object,
+                                                                       GDBusInterfaceSkeleton *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_object_skeleton_remove_interface          (GDBusObjectSkeleton    *object,
+                                                                       GDBusInterfaceSkeleton *interface_);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_object_skeleton_remove_interface_by_name  (GDBusObjectSkeleton    *object,
+                                                                       const gchar            *interface_name);
+GLIB_AVAILABLE_IN_ALL
+void                 g_dbus_object_skeleton_set_object_path           (GDBusObjectSkeleton    *object,
+                                                                       const gchar            *object_path);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_OBJECT_SKELETON_H */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusproxy.h b/dist/usr/include/glib-2.0/gio/gdbusproxy.h
new file mode 100644
index 0000000..18a9138
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusproxy.h
@@ -0,0 +1,216 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_PROXY_H__
+#define __G_DBUS_PROXY_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+#include <gio/gdbusintrospection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_PROXY         (g_dbus_proxy_get_type ())
+#define G_DBUS_PROXY(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_PROXY, GDBusProxy))
+#define G_DBUS_PROXY_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DBUS_PROXY, GDBusProxyClass))
+#define G_DBUS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DBUS_PROXY, GDBusProxyClass))
+#define G_IS_DBUS_PROXY(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_PROXY))
+#define G_IS_DBUS_PROXY_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DBUS_PROXY))
+
+typedef struct _GDBusProxyClass   GDBusProxyClass;
+typedef struct _GDBusProxyPrivate GDBusProxyPrivate;
+
+/**
+ * GDBusProxy:
+ *
+ * The #GDBusProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ *
+ * Since: 2.26
+ */
+struct _GDBusProxy
+{
+  /*< private >*/
+  GObject parent_instance;
+  GDBusProxyPrivate *priv;
+};
+
+/**
+ * GDBusProxyClass:
+ * @g_properties_changed: Signal class handler for the #GDBusProxy::g-properties-changed signal.
+ * @g_signal: Signal class handler for the #GDBusProxy::g-signal signal.
+ *
+ * Class structure for #GDBusProxy.
+ *
+ * Since: 2.26
+ */
+struct _GDBusProxyClass
+{
+  /*< private >*/
+  GObjectClass parent_class;
+
+  /*< public >*/
+  /* Signals */
+  void (*g_properties_changed) (GDBusProxy          *proxy,
+                                GVariant            *changed_properties,
+                                const gchar* const  *invalidated_properties);
+  void (*g_signal)             (GDBusProxy          *proxy,
+                                const gchar         *sender_name,
+                                const gchar         *signal_name,
+                                GVariant            *parameters);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[32];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_dbus_proxy_get_type                  (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_new                       (GDBusConnection     *connection,
+                                                         GDBusProxyFlags      flags,
+                                                         GDBusInterfaceInfo *info,
+                                                         const gchar         *name,
+                                                         const gchar         *object_path,
+                                                         const gchar         *interface_name,
+                                                         GCancellable        *cancellable,
+                                                         GAsyncReadyCallback  callback,
+                                                         gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusProxy      *g_dbus_proxy_new_finish                (GAsyncResult        *res,
+                                                         GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusProxy      *g_dbus_proxy_new_sync                  (GDBusConnection     *connection,
+                                                         GDBusProxyFlags      flags,
+                                                         GDBusInterfaceInfo *info,
+                                                         const gchar         *name,
+                                                         const gchar         *object_path,
+                                                         const gchar         *interface_name,
+                                                         GCancellable        *cancellable,
+                                                         GError             **error);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_new_for_bus               (GBusType             bus_type,
+                                                         GDBusProxyFlags      flags,
+                                                         GDBusInterfaceInfo *info,
+                                                         const gchar         *name,
+                                                         const gchar         *object_path,
+                                                         const gchar         *interface_name,
+                                                         GCancellable        *cancellable,
+                                                         GAsyncReadyCallback  callback,
+                                                         gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GDBusProxy      *g_dbus_proxy_new_for_bus_finish        (GAsyncResult        *res,
+                                                         GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusProxy      *g_dbus_proxy_new_for_bus_sync          (GBusType             bus_type,
+                                                         GDBusProxyFlags      flags,
+                                                         GDBusInterfaceInfo *info,
+                                                         const gchar         *name,
+                                                         const gchar         *object_path,
+                                                         const gchar         *interface_name,
+                                                         GCancellable        *cancellable,
+                                                         GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GDBusConnection *g_dbus_proxy_get_connection            (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+GDBusProxyFlags  g_dbus_proxy_get_flags                 (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_proxy_get_name                  (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+gchar           *g_dbus_proxy_get_name_owner            (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_proxy_get_object_path           (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar     *g_dbus_proxy_get_interface_name        (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+gint             g_dbus_proxy_get_default_timeout       (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_set_default_timeout       (GDBusProxy          *proxy,
+                                                         gint                 timeout_msec);
+GLIB_AVAILABLE_IN_ALL
+GDBusInterfaceInfo *g_dbus_proxy_get_interface_info     (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_set_interface_info        (GDBusProxy           *proxy,
+                                                         GDBusInterfaceInfo   *info);
+GLIB_AVAILABLE_IN_ALL
+GVariant        *g_dbus_proxy_get_cached_property       (GDBusProxy          *proxy,
+                                                         const gchar         *property_name);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_set_cached_property       (GDBusProxy          *proxy,
+                                                         const gchar         *property_name,
+                                                         GVariant            *value);
+GLIB_AVAILABLE_IN_ALL
+gchar          **g_dbus_proxy_get_cached_property_names (GDBusProxy          *proxy);
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_call                      (GDBusProxy          *proxy,
+                                                         const gchar         *method_name,
+                                                         GVariant            *parameters,
+                                                         GDBusCallFlags       flags,
+                                                         gint                 timeout_msec,
+                                                         GCancellable        *cancellable,
+                                                         GAsyncReadyCallback  callback,
+                                                         gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GVariant        *g_dbus_proxy_call_finish               (GDBusProxy          *proxy,
+                                                         GAsyncResult        *res,
+                                                         GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GVariant        *g_dbus_proxy_call_sync                 (GDBusProxy          *proxy,
+                                                         const gchar         *method_name,
+                                                         GVariant            *parameters,
+                                                         GDBusCallFlags       flags,
+                                                         gint                 timeout_msec,
+                                                         GCancellable        *cancellable,
+                                                         GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+void             g_dbus_proxy_call_with_unix_fd_list        (GDBusProxy          *proxy,
+                                                             const gchar         *method_name,
+                                                             GVariant            *parameters,
+                                                             GDBusCallFlags       flags,
+                                                             gint                 timeout_msec,
+                                                             GUnixFDList         *fd_list,
+                                                             GCancellable        *cancellable,
+                                                             GAsyncReadyCallback  callback,
+                                                             gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+GVariant        *g_dbus_proxy_call_with_unix_fd_list_finish (GDBusProxy          *proxy,
+                                                             GUnixFDList        **out_fd_list,
+                                                             GAsyncResult        *res,
+                                                             GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GVariant        *g_dbus_proxy_call_with_unix_fd_list_sync   (GDBusProxy          *proxy,
+                                                             const gchar         *method_name,
+                                                             GVariant            *parameters,
+                                                             GDBusCallFlags       flags,
+                                                             gint                 timeout_msec,
+                                                             GUnixFDList         *fd_list,
+                                                             GUnixFDList        **out_fd_list,
+                                                             GCancellable        *cancellable,
+                                                             GError             **error);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_PROXY_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusserver.h b/dist/usr/include/glib-2.0/gio/gdbusserver.h
new file mode 100644
index 0000000..05557f0
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusserver.h
@@ -0,0 +1,62 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_SERVER_H__
+#define __G_DBUS_SERVER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DBUS_SERVER         (g_dbus_server_get_type ())
+#define G_DBUS_SERVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DBUS_SERVER, GDBusServer))
+#define G_IS_DBUS_SERVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DBUS_SERVER))
+
+GLIB_AVAILABLE_IN_ALL
+GType             g_dbus_server_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GDBusServer      *g_dbus_server_new_sync           (const gchar       *address,
+                                                    GDBusServerFlags   flags,
+                                                    const gchar       *guid,
+                                                    GDBusAuthObserver *observer,
+                                                    GCancellable      *cancellable,
+                                                    GError           **error);
+GLIB_AVAILABLE_IN_ALL
+const gchar      *g_dbus_server_get_client_address (GDBusServer       *server);
+GLIB_AVAILABLE_IN_ALL
+const gchar      *g_dbus_server_get_guid           (GDBusServer       *server);
+GLIB_AVAILABLE_IN_ALL
+GDBusServerFlags  g_dbus_server_get_flags          (GDBusServer       *server);
+GLIB_AVAILABLE_IN_ALL
+void              g_dbus_server_start              (GDBusServer       *server);
+GLIB_AVAILABLE_IN_ALL
+void              g_dbus_server_stop               (GDBusServer       *server);
+GLIB_AVAILABLE_IN_ALL
+gboolean          g_dbus_server_is_active          (GDBusServer       *server);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_SERVER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdbusutils.h b/dist/usr/include/glib-2.0/gio/gdbusutils.h
new file mode 100644
index 0000000..6ef2ffd
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdbusutils.h
@@ -0,0 +1,57 @@
+/* GDBus - GLib D-Bus Library
+ *
+ * Copyright (C) 2008-2010 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.
+ *
+ * Author: David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DBUS_UTILS_H__
+#define __G_DBUS_UTILS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_guid (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
+gchar *g_dbus_generate_guid (void);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_name (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_unique_name (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_member_name (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_dbus_is_interface_name (const gchar *string);
+
+GLIB_AVAILABLE_IN_ALL
+void g_dbus_gvariant_to_gvalue (GVariant  *value,
+                                GValue    *out_gvalue);
+GLIB_AVAILABLE_IN_ALL
+GVariant *g_dbus_gvalue_to_gvariant (const GValue         *gvalue,
+                                     const GVariantType   *type);
+
+G_END_DECLS
+
+#endif /* __G_DBUS_UTILS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gdrive.h b/dist/usr/include/glib-2.0/gio/gdrive.h
new file mode 100644
index 0000000..13c02ae
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gdrive.h
@@ -0,0 +1,261 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ *         David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_DRIVE_H__
+#define __G_DRIVE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_DRIVE           (g_drive_get_type ())
+#define G_DRIVE(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DRIVE, GDrive))
+#define G_IS_DRIVE(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DRIVE))
+#define G_DRIVE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_DRIVE, GDriveIface))
+
+/**
+ * GDriveIface:
+ * @g_iface: The parent interface.
+ * @changed: Signal emitted when the drive is changed.
+ * @disconnected: The removed signal that is emitted when the #GDrive have been disconnected. If the recipient is holding references to the object they should release them so the object can be finalized.
+ * @eject_button: Signal emitted when the physical eject button (if any) of a drive have been pressed.
+ * @get_name: Returns the name for the given #GDrive.
+ * @get_icon: Returns a #GIcon for the given #GDrive.
+ * @has_volumes: Returns %TRUE if the #GDrive has mountable volumes.
+ * @get_volumes: Returns a list #GList of #GVolume for the #GDrive.
+ * @is_media_removable: Returns %TRUE if the #GDrive supports removal and insertion of media.
+ * @has_media: Returns %TRUE if the #GDrive has media inserted.
+ * @is_media_check_automatic: Returns %TRUE if the #GDrive is capabable of automatically detecting media changes.
+ * @can_poll_for_media: Returns %TRUE if the #GDrive is capable of manually polling for media change.
+ * @can_eject: Returns %TRUE if the #GDrive can eject media.
+ * @eject: Ejects a #GDrive.
+ * @eject_finish: Finishes an eject operation.
+ * @poll_for_media: Poll for media insertion/removal on a #GDrive.
+ * @poll_for_media_finish: Finishes a media poll operation.
+ * @get_identifier: Returns the identifier of the given kind, or %NULL if
+ *    the #GDrive doesn't have one.
+ * @enumerate_identifiers: Returns an array strings listing the kinds
+ *    of identifiers which the #GDrive has.
+ * @get_start_stop_type: Gets a #GDriveStartStopType with details about starting/stopping the drive. Since 2.22.
+ * @can_stop: Returns %TRUE if a #GDrive can be stopped. Since 2.22.
+ * @stop: Stops a #GDrive. Since 2.22.
+ * @stop_finish: Finishes a stop operation. Since 2.22.
+ * @can_start: Returns %TRUE if a #GDrive can be started. Since 2.22.
+ * @can_start_degraded: Returns %TRUE if a #GDrive can be started degraded. Since 2.22.
+ * @start: Starts a #GDrive. Since 2.22.
+ * @start_finish: Finishes a start operation. Since 2.22.
+ * @stop_button: Signal emitted when the physical stop button (if any) of a drive have been pressed. Since 2.22.
+ * @eject_with_operation: Starts ejecting a #GDrive using a #GMountOperation. Since 2.22.
+ * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
+ * @get_sort_key: Gets a key used for sorting #GDrive instances or %NULL if no such key exists. Since 2.32.
+ * @get_symbolic_icon: Returns a symbolic #GIcon for the given #GDrive. Since 2.34.
+ *
+ * Interface for creating #GDrive implementations.
+ */
+typedef struct _GDriveIface    GDriveIface;
+
+struct _GDriveIface
+{
+  GTypeInterface g_iface;
+
+  /* signals */
+  void     (* changed)                  (GDrive              *drive);
+  void     (* disconnected)             (GDrive              *drive);
+  void     (* eject_button)             (GDrive              *drive);
+
+  /* Virtual Table */
+  char *   (* get_name)                 (GDrive              *drive);
+  GIcon *  (* get_icon)                 (GDrive              *drive);
+  gboolean (* has_volumes)              (GDrive              *drive);
+  GList *  (* get_volumes)              (GDrive              *drive);
+  gboolean (* is_media_removable)       (GDrive              *drive);
+  gboolean (* has_media)                (GDrive              *drive);
+  gboolean (* is_media_check_automatic) (GDrive              *drive);
+  gboolean (* can_eject)                (GDrive              *drive);
+  gboolean (* can_poll_for_media)       (GDrive              *drive);
+  void     (* eject)                    (GDrive              *drive,
+                                         GMountUnmountFlags   flags,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean (* eject_finish)             (GDrive              *drive,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+  void     (* poll_for_media)           (GDrive              *drive,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean (* poll_for_media_finish)    (GDrive              *drive,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+
+  char *   (* get_identifier)           (GDrive              *drive,
+                                         const char          *kind);
+  char **  (* enumerate_identifiers)    (GDrive              *drive);
+
+  GDriveStartStopType (* get_start_stop_type) (GDrive        *drive);
+
+  gboolean (* can_start)                (GDrive              *drive);
+  gboolean (* can_start_degraded)       (GDrive              *drive);
+  void     (* start)                    (GDrive              *drive,
+                                         GDriveStartFlags     flags,
+                                         GMountOperation     *mount_operation,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean (* start_finish)             (GDrive              *drive,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+
+  gboolean (* can_stop)                 (GDrive              *drive);
+  void     (* stop)                     (GDrive              *drive,
+                                         GMountUnmountFlags   flags,
+                                         GMountOperation     *mount_operation,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean (* stop_finish)              (GDrive              *drive,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+  /* signal, not VFunc */
+  void     (* stop_button)              (GDrive              *drive);
+
+  void        (* eject_with_operation)      (GDrive              *drive,
+                                             GMountUnmountFlags   flags,
+                                             GMountOperation     *mount_operation,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* eject_with_operation_finish) (GDrive            *drive,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  const gchar * (* get_sort_key)        (GDrive              *drive);
+  GIcon *       (* get_symbolic_icon)   (GDrive              *drive);
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_drive_get_type                 (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+char *   g_drive_get_name                 (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+GIcon *  g_drive_get_icon                 (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+GIcon *  g_drive_get_symbolic_icon        (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_has_volumes              (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+GList *  g_drive_get_volumes              (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_is_media_removable       (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_has_media                (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_is_media_check_automatic (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_can_poll_for_media       (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_can_eject                (GDrive               *drive);
+GLIB_DEPRECATED_FOR(g_drive_eject_with_operation)
+void     g_drive_eject                    (GDrive               *drive,
+                                           GMountUnmountFlags    flags,
+                                           GCancellable         *cancellable,
+                                           GAsyncReadyCallback   callback,
+                                           gpointer              user_data);
+
+GLIB_DEPRECATED_FOR(g_drive_eject_with_operation_finish)
+gboolean g_drive_eject_finish             (GDrive               *drive,
+                                           GAsyncResult         *result,
+                                           GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_drive_poll_for_media           (GDrive               *drive,
+                                           GCancellable         *cancellable,
+                                           GAsyncReadyCallback   callback,
+                                           gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_poll_for_media_finish    (GDrive               *drive,
+                                           GAsyncResult         *result,
+                                           GError              **error);
+GLIB_AVAILABLE_IN_ALL
+char *   g_drive_get_identifier           (GDrive              *drive,
+                                           const char          *kind);
+GLIB_AVAILABLE_IN_ALL
+char **  g_drive_enumerate_identifiers    (GDrive              *drive);
+
+GLIB_AVAILABLE_IN_ALL
+GDriveStartStopType g_drive_get_start_stop_type (GDrive        *drive);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_can_start                (GDrive              *drive);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_can_start_degraded       (GDrive              *drive);
+GLIB_AVAILABLE_IN_ALL
+void     g_drive_start                    (GDrive              *drive,
+                                           GDriveStartFlags     flags,
+                                           GMountOperation     *mount_operation,
+                                           GCancellable        *cancellable,
+                                           GAsyncReadyCallback  callback,
+                                           gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_start_finish             (GDrive               *drive,
+                                           GAsyncResult         *result,
+                                           GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_can_stop                 (GDrive               *drive);
+GLIB_AVAILABLE_IN_ALL
+void     g_drive_stop                     (GDrive               *drive,
+                                           GMountUnmountFlags    flags,
+                                           GMountOperation      *mount_operation,
+                                           GCancellable         *cancellable,
+                                           GAsyncReadyCallback   callback,
+                                           gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_drive_stop_finish              (GDrive               *drive,
+                                           GAsyncResult         *result,
+                                           GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_drive_eject_with_operation      (GDrive              *drive,
+                                               GMountUnmountFlags   flags,
+                                               GMountOperation     *mount_operation,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_drive_eject_with_operation_finish (GDrive            *drive,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_2_32
+const gchar *g_drive_get_sort_key         (GDrive               *drive);
+
+G_END_DECLS
+
+#endif /* __G_DRIVE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gemblem.h b/dist/usr/include/glib-2.0/gio/gemblem.h
new file mode 100644
index 0000000..d581abb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gemblem.h
@@ -0,0 +1,63 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 Clemens N. Buss <cebuzz@gmail.com>
+ *
+ * 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_EMBLEM_H__
+#define __G_EMBLEM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gioenums.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_EMBLEM         (g_emblem_get_type ())
+#define G_EMBLEM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_EMBLEM, GEmblem))
+#define G_EMBLEM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_EMBLEM, GEmblemClass))
+#define G_IS_EMBLEM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_EMBLEM))
+#define G_IS_EMBLEM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_EMBLEM))
+#define G_EMBLEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_EMBLEM, GEmblemClass))
+
+/**
+ * GEmblem:
+ *
+ * An object for Emblems
+ */
+typedef struct _GEmblem        GEmblem;
+typedef struct _GEmblemClass   GEmblemClass;
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_emblem_get_type        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GEmblem       *g_emblem_new             (GIcon         *icon);
+GLIB_AVAILABLE_IN_ALL
+GEmblem       *g_emblem_new_with_origin (GIcon         *icon,
+                                         GEmblemOrigin  origin);
+GLIB_AVAILABLE_IN_ALL
+GIcon         *g_emblem_get_icon        (GEmblem       *emblem);
+GLIB_AVAILABLE_IN_ALL
+GEmblemOrigin  g_emblem_get_origin      (GEmblem       *emblem);
+
+G_END_DECLS
+
+#endif /* __G_EMBLEM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gemblemedicon.h b/dist/usr/include/glib-2.0/gio/gemblemedicon.h
new file mode 100644
index 0000000..714fe39
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gemblemedicon.h
@@ -0,0 +1,83 @@
+/* Gio - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Matthias Clasen <mclasen@redhat.com>
+ *         Clemens N. Buss <cebuzz@gmail.com>
+ */
+
+#ifndef __G_EMBLEMED_ICON_H__
+#define __G_EMBLEMED_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gicon.h>
+#include <gio/gemblem.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_EMBLEMED_ICON         (g_emblemed_icon_get_type ())
+#define G_EMBLEMED_ICON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_EMBLEMED_ICON, GEmblemedIcon))
+#define G_EMBLEMED_ICON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_EMBLEMED_ICON, GEmblemedIconClass))
+#define G_IS_EMBLEMED_ICON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_EMBLEMED_ICON))
+#define G_IS_EMBLEMED_ICON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_EMBLEMED_ICON))
+#define G_EMBLEMED_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_EMBLEMED_ICON, GEmblemedIconClass))
+
+/**
+ * GEmblemedIcon:
+ *
+ * An implementation of #GIcon for icons with emblems.
+ **/
+typedef struct _GEmblemedIcon        GEmblemedIcon;
+typedef struct _GEmblemedIconClass   GEmblemedIconClass;
+typedef struct _GEmblemedIconPrivate GEmblemedIconPrivate;
+
+struct _GEmblemedIcon
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GEmblemedIconPrivate *priv;
+};
+
+struct _GEmblemedIconClass
+{
+  GObjectClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType  g_emblemed_icon_get_type    (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GIcon *g_emblemed_icon_new         (GIcon         *icon,
+                                    GEmblem       *emblem);
+GLIB_AVAILABLE_IN_ALL
+GIcon *g_emblemed_icon_get_icon    (GEmblemedIcon *emblemed);
+GLIB_AVAILABLE_IN_ALL
+GList *g_emblemed_icon_get_emblems (GEmblemedIcon *emblemed);
+GLIB_AVAILABLE_IN_ALL
+void   g_emblemed_icon_add_emblem  (GEmblemedIcon *emblemed,
+                                    GEmblem       *emblem);
+GLIB_AVAILABLE_IN_ALL
+void   g_emblemed_icon_clear_emblems  (GEmblemedIcon *emblemed);
+
+G_END_DECLS
+
+#endif /* __G_EMBLEMED_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfile.h b/dist/usr/include/glib-2.0/gio/gfile.h
new file mode 100644
index 0000000..0cf6ee2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfile.h
@@ -0,0 +1,1190 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_H__
+#define __G_FILE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE            (g_file_get_type ())
+#define G_FILE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_FILE, GFile))
+#define G_IS_FILE(obj)	       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_FILE))
+#define G_FILE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_FILE, GFileIface))
+
+#if 0
+/**
+ * GFile:
+ *
+ * A handle to an object implementing the #GFileIface interface.
+ * Generally stores a location within the file system. Handles do not
+ * necessarily represent files or directories that currently exist.
+ **/
+typedef struct _GFile         		GFile; /* Dummy typedef */
+#endif
+typedef struct _GFileIface    		GFileIface;
+
+
+/**
+ * GFileIface:
+ * @g_iface: The parent interface.
+ * @dup: Duplicates a #GFile.
+ * @hash: Creates a hash of a #GFile.
+ * @equal: Checks equality of two given #GFile<!-- -->s.
+ * @is_native: Checks to see if a file is native to the system.
+ * @has_uri_scheme: Checks to see if a #GFile has a given URI scheme.
+ * @get_uri_scheme: Gets the URI scheme for a #GFile.
+ * @get_basename: Gets the basename for a given #GFile.
+ * @get_path: Gets the current path within a #GFile.
+ * @get_uri: Gets a URI for the path within a #GFile.
+ * @get_parse_name: Gets the parsed name for the #GFile.
+ * @get_parent: Gets the parent directory for the #GFile.
+ * @prefix_matches: Checks whether a #GFile contains a specified file.
+ * @get_relative_path: Gets the path for a #GFile relative to a given path.
+ * @resolve_relative_path: Resolves a relative path for a #GFile to an absolute path.
+ * @get_child_for_display_name: Gets the child #GFile for a given display name.
+ * @enumerate_children: Gets a #GFileEnumerator with the children of a #GFile.
+ * @enumerate_children_async: Asynchronously gets a #GFileEnumerator with the children of a #GFile.
+ * @enumerate_children_finish: Finishes asynchronously enumerating the children.
+ * @query_info: Gets the #GFileInfo for a #GFile.
+ * @query_info_async: Asynchronously gets the #GFileInfo for a #GFile.
+ * @query_info_finish: Finishes an asynchronous query info operation.
+ * @query_filesystem_info: Gets a #GFileInfo for the file system #GFile is on.
+ * @query_filesystem_info_async: Asynchronously gets a #GFileInfo for the file system #GFile is on.
+ * @query_filesystem_info_finish: Finishes asynchronously getting the file system info.
+ * @find_enclosing_mount: Gets a #GMount for the #GFile.
+ * @find_enclosing_mount_async: Asynchronously gets the #GMount for a #GFile.
+ * @find_enclosing_mount_finish: Finishes asynchronously getting the volume.
+ * @set_display_name: Sets the display name for a #GFile.
+ * @set_display_name_async: Asynchronously sets a #GFile's display name.
+ * @set_display_name_finish: Finishes asynchronously setting a #GFile's display name.
+ * @query_settable_attributes: Returns a list of #GFileAttribute<!-- -->s that can be set.
+ * @_query_settable_attributes_async: Asynchronously gets a list of #GFileAttribute<!-- -->s that can be set.
+ * @_query_settable_attributes_finish: Finishes asynchronously querying settable attributes.
+ * @query_writable_namespaces: Returns a list of #GFileAttribute namespaces that are writable.
+ * @_query_writable_namespaces_async: Asynchronously gets a list of #GFileAttribute namespaces that are writable.
+ * @_query_writable_namespaces_finish: Finishes asynchronously querying the writable namespaces.
+ * @set_attribute: Sets a #GFileAttribute.
+ * @set_attributes_from_info: Sets a #GFileAttribute with information from a #GFileInfo.
+ * @set_attributes_async: Asynchronously sets a file's attributes.
+ * @set_attributes_finish: Finishes setting a file's attributes asynchronously.
+ * @read_fn: Reads a file asynchronously.
+ * @read_async: Asynchronously reads a file.
+ * @read_finish: Finishes asynchronously reading a file.
+ * @append_to: Writes to the end of a file.
+ * @append_to_async: Asynchronously writes to the end of a file.
+ * @append_to_finish: Finishes an asynchronous file append operation.
+ * @create: Creates a new file.
+ * @create_async: Asynchronously creates a file.
+ * @create_finish: Finishes asynchronously creating a file.
+ * @replace: Replaces the contents of a file.
+ * @replace_async: Asynchronously replaces the contents of a file.
+ * @replace_finish: Finishes asynchronously replacing a file.
+ * @delete_file: Deletes a file.
+ * @delete_file_async: Asynchronously deletes a file.
+ * @delete_file_finish: Finishes an asynchronous delete.
+ * @trash: Sends a #GFile to the Trash location.
+ * @trash_async: Asynchronously sends a #GFile to the Trash location.
+ * @trash_finish: Finishes an asynchronous file trashing operation.
+ * @make_directory: Makes a directory.
+ * @make_directory_async: Asynchronously makes a directory.
+ * @make_directory_finish: Finishes making a directory asynchronously.
+ * @make_symbolic_link: Makes a symbolic link.
+ * @_make_symbolic_link_async: Asynchronously makes a symbolic link
+ * @_make_symbolic_link_finish: Finishes making a symbolic link asynchronously.
+ * @copy: Copies a file.
+ * @copy_async: Asynchronously copies a file.
+ * @copy_finish: Finishes an asynchronous copy operation.
+ * @move: Moves a file.
+ * @_move_async: Asynchronously moves a file.
+ * @_move_finish: Finishes an asynchronous move operation.
+ * @mount_mountable: Mounts a mountable object.
+ * @mount_mountable_finish: Finishes a mounting operation.
+ * @unmount_mountable: Unmounts a mountable object.
+ * @unmount_mountable_finish: Finishes an unmount operation.
+ * @eject_mountable: Ejects a mountable.
+ * @eject_mountable_finish: Finishes an eject operation.
+ * @mount_enclosing_volume: Mounts a specified location.
+ * @mount_enclosing_volume_finish: Finishes mounting a specified location.
+ * @monitor_dir: Creates a #GFileMonitor for the location.
+ * @monitor_file: Creates a #GFileMonitor for the location.
+ * @open_readwrite: Open file read/write. Since 2.22.
+ * @open_readwrite_async: Asynchronously opens file read/write. Since 2.22.
+ * @open_readwrite_finish: Finishes an asynchronous open read/write. Since 2.22.
+ * @create_readwrite: Creates file read/write. Since 2.22.
+ * @create_readwrite_async: Asynchronously creates file read/write. Since 2.22.
+ * @create_readwrite_finish: Finishes an asynchronous creates read/write. Since 2.22.
+ * @replace_readwrite: Replaces file read/write. Since 2.22.
+ * @replace_readwrite_async: Asynchronously replaces file read/write. Since 2.22.
+ * @replace_readwrite_finish: Finishes an asynchronous replace read/write. Since 2.22.
+ * @start_mountable: Starts a mountable object. Since 2.22.
+ * @start_mountable_finish: Finishes an start operation. Since 2.22.
+ * @stop_mountable: Stops a mountable. Since 2.22.
+ * @stop_mountable_finish: Finishes an stop operation. Since 2.22.
+ * @supports_thread_contexts: a boolean that indicates whether the #GFile implementation supports thread-default contexts. Since 2.22.
+ * @unmount_mountable_with_operation: Unmounts a mountable object using a #GMountOperation. Since 2.22.
+ * @unmount_mountable_with_operation_finish: Finishes an unmount operation using a #GMountOperation. Since 2.22.
+ * @eject_mountable_with_operation: Ejects a mountable object using a #GMountOperation. Since 2.22.
+ * @eject_mountable_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
+ * @poll_mountable: Polls a mountable object for media changes. Since 2.22.
+ * @poll_mountable_finish: Finishes an poll operation for media changes. Since 2.22.
+ *
+ * An interface for writing VFS file handles.
+ **/
+struct _GFileIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GFile *             (* dup)                         (GFile         *file);
+  guint               (* hash)                        (GFile         *file);
+  gboolean            (* equal)                       (GFile         *file1,
+                                                       GFile         *file2);
+  gboolean            (* is_native)                   (GFile         *file);
+  gboolean            (* has_uri_scheme)              (GFile         *file,
+                                                       const char    *uri_scheme);
+  char *              (* get_uri_scheme)              (GFile         *file);
+  char *              (* get_basename)                (GFile         *file);
+  char *              (* get_path)                    (GFile         *file);
+  char *              (* get_uri)                     (GFile         *file);
+  char *              (* get_parse_name)              (GFile         *file);
+  GFile *             (* get_parent)                  (GFile         *file);
+  gboolean            (* prefix_matches)              (GFile         *prefix,
+                                                       GFile         *file);
+  char *              (* get_relative_path)           (GFile         *parent,
+                                                       GFile         *descendant);
+  GFile *             (* resolve_relative_path)       (GFile        *file,
+                                                       const char   *relative_path);
+  GFile *             (* get_child_for_display_name)  (GFile        *file,
+                                                       const char   *display_name,
+                                                       GError      **error);
+
+  GFileEnumerator *   (* enumerate_children)          (GFile                *file,
+                                                       const char           *attributes,
+                                                       GFileQueryInfoFlags   flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* enumerate_children_async)    (GFile                *file,
+                                                       const char           *attributes,
+                                                       GFileQueryInfoFlags   flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileEnumerator *   (* enumerate_children_finish)   (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileInfo *         (* query_info)                  (GFile                *file,
+                                                       const char           *attributes,
+                                                       GFileQueryInfoFlags   flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* query_info_async)            (GFile                *file,
+                                                       const char           *attributes,
+                                                       GFileQueryInfoFlags   flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileInfo *         (* query_info_finish)           (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileInfo *         (* query_filesystem_info)       (GFile                *file,
+                                                       const char           *attributes,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* query_filesystem_info_async) (GFile                *file,
+                                                       const char           *attributes,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileInfo *         (* query_filesystem_info_finish)(GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GMount *            (* find_enclosing_mount)        (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* find_enclosing_mount_async)  (GFile                *file,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GMount *            (* find_enclosing_mount_finish) (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFile *             (* set_display_name)            (GFile                *file,
+                                                       const char           *display_name,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* set_display_name_async)      (GFile                *file,
+                                                       const char           *display_name,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFile *             (* set_display_name_finish)     (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileAttributeInfoList * (* query_settable_attributes)    (GFile          *file,
+                                                             GCancellable   *cancellable,
+                                                             GError        **error);
+  void                (* _query_settable_attributes_async)  (void);
+  void                (* _query_settable_attributes_finish) (void);
+
+  GFileAttributeInfoList * (* query_writable_namespaces)    (GFile          *file,
+                                                             GCancellable   *cancellable,
+                                                             GError        **error);
+  void                (* _query_writable_namespaces_async)  (void);
+  void                (* _query_writable_namespaces_finish) (void);
+
+  gboolean            (* set_attribute)               (GFile                *file,
+                                                       const char           *attribute,
+                                                       GFileAttributeType    type,
+                                                       gpointer              value_p,
+                                                       GFileQueryInfoFlags   flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  gboolean            (* set_attributes_from_info)    (GFile                *file,
+                                                       GFileInfo            *info,
+                                                       GFileQueryInfoFlags   flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* set_attributes_async)        (GFile                *file,
+                                                       GFileInfo            *info,
+                                                       GFileQueryInfoFlags   flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* set_attributes_finish)       (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GFileInfo           **info,
+                                                       GError              **error);
+
+  GFileInputStream *  (* read_fn)                     (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* read_async)                  (GFile                *file,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileInputStream *  (* read_finish)                 (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileOutputStream * (* append_to)                   (GFile                *file,
+                                                       GFileCreateFlags      flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* append_to_async)             (GFile                *file,
+                                                       GFileCreateFlags      flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileOutputStream * (* append_to_finish)            (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileOutputStream * (* create)                      (GFile                *file,
+                                                       GFileCreateFlags      flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* create_async)                (GFile                *file,
+                                                       GFileCreateFlags      flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileOutputStream * (* create_finish)               (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  GFileOutputStream * (* replace)                     (GFile                *file,
+                                                       const char           *etag,
+                                                       gboolean              make_backup,
+                                                       GFileCreateFlags      flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* replace_async)               (GFile                *file,
+                                                       const char           *etag,
+                                                       gboolean              make_backup,
+                                                       GFileCreateFlags      flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileOutputStream * (* replace_finish)              (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  gboolean            (* delete_file)                 (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* delete_file_async)           (GFile                *file,
+						       int                   io_priority,
+						       GCancellable         *cancellable,
+						       GAsyncReadyCallback   callback,
+						       gpointer              user_data);
+  gboolean            (* delete_file_finish)          (GFile                *file,
+						       GAsyncResult         *result,
+						       GError              **error);
+
+  gboolean            (* trash)                       (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* trash_async)                 (GFile                *file,
+						       int                   io_priority,
+						       GCancellable         *cancellable,
+						       GAsyncReadyCallback   callback,
+						       gpointer              user_data);
+  gboolean            (* trash_finish)                (GFile                *file,
+						       GAsyncResult         *result,
+						       GError              **error);
+
+  gboolean            (* make_directory)              (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* make_directory_async)        (GFile                *file,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* make_directory_finish)       (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  gboolean            (* make_symbolic_link)          (GFile                *file,
+                                                       const char           *symlink_value,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* _make_symbolic_link_async)   (void);
+  void                (* _make_symbolic_link_finish)  (void);
+
+  gboolean            (* copy)                        (GFile                *source,
+                                                       GFile                *destination,
+                                                       GFileCopyFlags        flags,
+                                                       GCancellable         *cancellable,
+                                                       GFileProgressCallback progress_callback,
+                                                       gpointer              progress_callback_data,
+                                                       GError              **error);
+  void                (* copy_async)                  (GFile                *source,
+                                                       GFile                *destination,
+                                                       GFileCopyFlags        flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GFileProgressCallback progress_callback,
+                                                       gpointer              progress_callback_data,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* copy_finish)                 (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  gboolean            (* move)                        (GFile                *source,
+                                                       GFile                *destination,
+                                                       GFileCopyFlags        flags,
+                                                       GCancellable         *cancellable,
+                                                       GFileProgressCallback progress_callback,
+                                                       gpointer              progress_callback_data,
+                                                       GError              **error);
+  void                (* _move_async)                 (void);
+  void                (* _move_finish)                (void);
+
+  void                (* mount_mountable)             (GFile                *file,
+                                                       GMountMountFlags      flags,
+                                                       GMountOperation      *mount_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFile *             (* mount_mountable_finish)      (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* unmount_mountable)           (GFile                *file,
+                                                       GMountUnmountFlags    flags,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* unmount_mountable_finish)    (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* eject_mountable)             (GFile                *file,
+                                                       GMountUnmountFlags    flags,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* eject_mountable_finish)      (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* mount_enclosing_volume)      (GFile                *location,
+                                                       GMountMountFlags      flags,
+                                                       GMountOperation      *mount_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean         (* mount_enclosing_volume_finish)  (GFile                *location,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  GFileMonitor *      (* monitor_dir)                 (GFile                *file,
+                                                       GFileMonitorFlags     flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  GFileMonitor *      (* monitor_file)                (GFile                *file,
+                                                       GFileMonitorFlags     flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+
+  GFileIOStream *     (* open_readwrite)              (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* open_readwrite_async)        (GFile                *file,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileIOStream *     (* open_readwrite_finish)       (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+  GFileIOStream *     (* create_readwrite)            (GFile                *file,
+						       GFileCreateFlags      flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* create_readwrite_async)      (GFile                *file,
+						       GFileCreateFlags      flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileIOStream *     (* create_readwrite_finish)      (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+  GFileIOStream *     (* replace_readwrite)           (GFile                *file,
+                                                       const char           *etag,
+                                                       gboolean              make_backup,
+                                                       GFileCreateFlags      flags,
+                                                       GCancellable         *cancellable,
+                                                       GError              **error);
+  void                (* replace_readwrite_async)     (GFile                *file,
+                                                       const char           *etag,
+                                                       gboolean              make_backup,
+                                                       GFileCreateFlags      flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  GFileIOStream *     (* replace_readwrite_finish)    (GFile                *file,
+                                                       GAsyncResult         *res,
+                                                       GError              **error);
+
+  void                (* start_mountable)             (GFile                *file,
+                                                       GDriveStartFlags      flags,
+                                                       GMountOperation      *start_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* start_mountable_finish)      (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* stop_mountable)              (GFile                *file,
+                                                       GMountUnmountFlags    flags,
+                                                       GMountOperation      *mount_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* stop_mountable_finish)       (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  gboolean            supports_thread_contexts;
+
+  void                (* unmount_mountable_with_operation) (GFile           *file,
+                                                       GMountUnmountFlags    flags,
+                                                       GMountOperation      *mount_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* unmount_mountable_with_operation_finish) (GFile    *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* eject_mountable_with_operation) (GFile             *file,
+                                                       GMountUnmountFlags    flags,
+                                                       GMountOperation      *mount_operation,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* eject_mountable_with_operation_finish) (GFile      *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+
+  void                (* poll_mountable)              (GFile                *file,
+                                                       GCancellable         *cancellable,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* poll_mountable_finish)       (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_file_get_type                   (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_new_for_path               (const char                 *path);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_new_for_uri                (const char                 *uri);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_new_for_commandline_arg    (const char                 *arg);
+GLIB_AVAILABLE_IN_2_36
+GFile *                 g_file_new_for_commandline_arg_and_cwd (const gchar           *arg,
+                                                                const gchar           *cwd);
+GLIB_AVAILABLE_IN_2_32
+GFile *                 g_file_new_tmp                    (const char                 *tmpl,
+                                                           GFileIOStream             **iostream,
+                                                           GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_parse_name                 (const char                 *parse_name);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_dup                        (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+guint                   g_file_hash                       (gconstpointer               file);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_equal                      (GFile                      *file1,
+							   GFile                      *file2);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_basename               (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_path                   (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_uri                    (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_parse_name             (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_get_parent                 (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_has_parent                 (GFile                      *file,
+                                                           GFile                      *parent);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_get_child                  (GFile                      *file,
+							   const char                 *name);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_get_child_for_display_name (GFile                      *file,
+							   const char                 *display_name,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_has_prefix                 (GFile                      *file,
+							   GFile                      *prefix);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_relative_path          (GFile                      *parent,
+							   GFile                      *descendant);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_resolve_relative_path      (GFile                      *file,
+							   const char                 *relative_path);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_is_native                  (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_has_uri_scheme             (GFile                      *file,
+							   const char                 *uri_scheme);
+GLIB_AVAILABLE_IN_ALL
+char *                  g_file_get_uri_scheme             (GFile                      *file);
+GLIB_AVAILABLE_IN_ALL
+GFileInputStream *      g_file_read                       (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_read_async                 (GFile                      *file,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInputStream *      g_file_read_finish                (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_append_to                  (GFile                      *file,
+							   GFileCreateFlags             flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_create                     (GFile                      *file,
+							   GFileCreateFlags             flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_replace                    (GFile                      *file,
+							   const char                 *etag,
+							   gboolean                    make_backup,
+							   GFileCreateFlags            flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_append_to_async            (GFile                      *file,
+							   GFileCreateFlags            flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_append_to_finish           (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_create_async               (GFile                      *file,
+							   GFileCreateFlags            flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_create_finish              (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_replace_async              (GFile                      *file,
+							   const char                 *etag,
+							   gboolean                    make_backup,
+							   GFileCreateFlags            flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileOutputStream *     g_file_replace_finish             (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_open_readwrite             (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_open_readwrite_async       (GFile                      *file,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_open_readwrite_finish      (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_create_readwrite           (GFile                      *file,
+							   GFileCreateFlags            flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_create_readwrite_async     (GFile                      *file,
+							   GFileCreateFlags            flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_create_readwrite_finish    (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_replace_readwrite          (GFile                      *file,
+							   const char                 *etag,
+							   gboolean                    make_backup,
+							   GFileCreateFlags            flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_replace_readwrite_async    (GFile                      *file,
+							   const char                 *etag,
+							   gboolean                    make_backup,
+							   GFileCreateFlags            flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileIOStream *         g_file_replace_readwrite_finish   (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_query_exists               (GFile                      *file,
+							   GCancellable               *cancellable);
+GLIB_AVAILABLE_IN_ALL
+GFileType               g_file_query_file_type            (GFile                      *file,
+                                                           GFileQueryInfoFlags         flags,
+                                                           GCancellable               *cancellable);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *             g_file_query_info                 (GFile                      *file,
+							   const char                 *attributes,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_query_info_async           (GFile                      *file,
+							   const char                 *attributes,
+							   GFileQueryInfoFlags         flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *             g_file_query_info_finish          (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *             g_file_query_filesystem_info      (GFile                      *file,
+							   const char                 *attributes,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_query_filesystem_info_async (GFile                      *file,
+							   const char                 *attributes,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *             g_file_query_filesystem_info_finish (GFile                      *file,
+                                                           GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GMount *                g_file_find_enclosing_mount       (GFile                      *file,
+                                                           GCancellable               *cancellable,
+                                                           GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_find_enclosing_mount_async (GFile                      *file,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GMount *                g_file_find_enclosing_mount_finish (GFile                     *file,
+							    GAsyncResult              *res,
+							    GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+GFileEnumerator *       g_file_enumerate_children         (GFile                      *file,
+							   const char                 *attributes,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_enumerate_children_async   (GFile                      *file,
+							   const char                 *attributes,
+							   GFileQueryInfoFlags         flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileEnumerator *       g_file_enumerate_children_finish  (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_set_display_name           (GFile                      *file,
+							   const char                 *display_name,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_set_display_name_async     (GFile                      *file,
+							   const char                 *display_name,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_set_display_name_finish    (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_delete                     (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_2_34
+void                    g_file_delete_async               (GFile                      *file,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+
+GLIB_AVAILABLE_IN_2_34
+gboolean                g_file_delete_finish              (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_trash                      (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_2_38
+void                    g_file_trash_async                (GFile                      *file,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+
+GLIB_AVAILABLE_IN_2_38
+gboolean                g_file_trash_finish               (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_copy                       (GFile                      *source,
+							   GFile                      *destination,
+							   GFileCopyFlags              flags,
+							   GCancellable               *cancellable,
+							   GFileProgressCallback       progress_callback,
+							   gpointer                    progress_callback_data,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_copy_async                 (GFile                      *source,
+							   GFile                      *destination,
+							   GFileCopyFlags              flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GFileProgressCallback       progress_callback,
+							   gpointer                    progress_callback_data,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_copy_finish                (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_move                       (GFile                      *source,
+							   GFile                      *destination,
+							   GFileCopyFlags              flags,
+							   GCancellable               *cancellable,
+							   GFileProgressCallback       progress_callback,
+							   gpointer                    progress_callback_data,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_make_directory             (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_2_38
+void                    g_file_make_directory_async       (GFile                      *file,
+                                                           int                         io_priority,
+                                                           GCancellable               *cancellable,
+                                                           GAsyncReadyCallback         callback,
+                                                           gpointer                    user_data);
+GLIB_AVAILABLE_IN_2_38
+gboolean                g_file_make_directory_finish      (GFile                      *file,
+                                                           GAsyncResult               *result,
+                                                           GError                    **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_make_directory_with_parents (GFile                     *file,
+		                                           GCancellable               *cancellable,
+		                                           GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_make_symbolic_link         (GFile                      *file,
+							   const char                 *symlink_value,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeInfoList *g_file_query_settable_attributes  (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeInfoList *g_file_query_writable_namespaces  (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute              (GFile                      *file,
+							   const char                 *attribute,
+							   GFileAttributeType          type,
+							   gpointer                    value_p,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attributes_from_info   (GFile                      *file,
+							   GFileInfo                  *info,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_set_attributes_async       (GFile                      *file,
+							   GFileInfo                  *info,
+							   GFileQueryInfoFlags         flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attributes_finish      (GFile                      *file,
+							   GAsyncResult               *result,
+							   GFileInfo                 **info,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_string       (GFile                      *file,
+							   const char                 *attribute,
+							   const char                 *value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_byte_string  (GFile                      *file,
+							   const char                 *attribute,
+							   const char                 *value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_uint32       (GFile                      *file,
+							   const char                 *attribute,
+							   guint32                     value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_int32        (GFile                      *file,
+							   const char                 *attribute,
+							   gint32                      value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_uint64       (GFile                      *file,
+							   const char                 *attribute,
+							   guint64                     value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_set_attribute_int64        (GFile                      *file,
+							   const char                 *attribute,
+							   gint64                      value,
+							   GFileQueryInfoFlags         flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_mount_enclosing_volume     (GFile                      *location,
+							   GMountMountFlags            flags,
+							   GMountOperation            *mount_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_mount_enclosing_volume_finish (GFile                      *location,
+							   GAsyncResult               *result,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_mount_mountable            (GFile                      *file,
+							   GMountMountFlags            flags,
+							   GMountOperation            *mount_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+GFile *                 g_file_mount_mountable_finish     (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+GLIB_DEPRECATED_FOR(g_file_unmount_mountable_with_operation)
+void                    g_file_unmount_mountable          (GFile                      *file,
+                                                           GMountUnmountFlags          flags,
+                                                           GCancellable               *cancellable,
+                                                           GAsyncReadyCallback         callback,
+                                                           gpointer                    user_data);
+
+GLIB_DEPRECATED_FOR(g_file_unmount_mountable_with_operation_finish)
+gboolean                g_file_unmount_mountable_finish   (GFile                      *file,
+                                                           GAsyncResult               *result,
+                                                           GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_unmount_mountable_with_operation (GFile                *file,
+							   GMountUnmountFlags          flags,
+							   GMountOperation            *mount_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_unmount_mountable_with_operation_finish (GFile         *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+GLIB_DEPRECATED_FOR(g_file_eject_mountable_with_operation)
+void                    g_file_eject_mountable            (GFile                      *file,
+                                                           GMountUnmountFlags          flags,
+                                                           GCancellable               *cancellable,
+                                                           GAsyncReadyCallback         callback,
+                                                           gpointer                    user_data);
+
+GLIB_DEPRECATED_FOR(g_file_eject_mountable_with_operation_finish)
+gboolean                g_file_eject_mountable_finish     (GFile                      *file,
+                                                           GAsyncResult               *result,
+                                                           GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_eject_mountable_with_operation (GFile                  *file,
+							   GMountUnmountFlags          flags,
+							   GMountOperation            *mount_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_eject_mountable_with_operation_finish (GFile           *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_copy_attributes            (GFile                      *source,
+							   GFile                      *destination,
+							   GFileCopyFlags              flags,
+							   GCancellable               *cancellable,
+							   GError                    **error);
+
+
+GLIB_AVAILABLE_IN_ALL
+GFileMonitor*           g_file_monitor_directory          (GFile                  *file,
+							   GFileMonitorFlags       flags,
+							   GCancellable           *cancellable,
+							   GError                **error);
+GLIB_AVAILABLE_IN_ALL
+GFileMonitor*           g_file_monitor_file               (GFile                  *file,
+							   GFileMonitorFlags       flags,
+							   GCancellable           *cancellable,
+							   GError                **error);
+GLIB_AVAILABLE_IN_ALL
+GFileMonitor*           g_file_monitor                    (GFile                  *file,
+							   GFileMonitorFlags       flags,
+							   GCancellable           *cancellable,
+							   GError                **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_start_mountable            (GFile                      *file,
+							   GDriveStartFlags            flags,
+							   GMountOperation            *start_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_start_mountable_finish     (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_stop_mountable             (GFile                      *file,
+							   GMountUnmountFlags          flags,
+                                                           GMountOperation            *mount_operation,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_stop_mountable_finish      (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_file_poll_mountable             (GFile                      *file,
+							   GCancellable               *cancellable,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_file_poll_mountable_finish      (GFile                      *file,
+							   GAsyncResult               *result,
+							   GError                    **error);
+
+/* Utilities */
+
+GLIB_AVAILABLE_IN_ALL
+GAppInfo *g_file_query_default_handler       (GFile                  *file,
+					      GCancellable           *cancellable,
+					      GError                **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_load_contents                (GFile                  *file,
+					      GCancellable           *cancellable,
+					      char                  **contents,
+					      gsize                  *length,
+					      char                  **etag_out,
+					      GError                **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_file_load_contents_async          (GFile                  *file,
+					      GCancellable           *cancellable,
+					      GAsyncReadyCallback     callback,
+					      gpointer                user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_load_contents_finish         (GFile                  *file,
+					      GAsyncResult           *res,
+					      char                  **contents,
+					      gsize                  *length,
+					      char                  **etag_out,
+					      GError                **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_file_load_partial_contents_async  (GFile                  *file,
+					      GCancellable           *cancellable,
+					      GFileReadMoreCallback   read_more_callback,
+					      GAsyncReadyCallback     callback,
+					      gpointer                user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_load_partial_contents_finish (GFile                  *file,
+					      GAsyncResult           *res,
+					      char                  **contents,
+					      gsize                  *length,
+					      char                  **etag_out,
+					      GError                **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_replace_contents             (GFile                  *file,
+					      const char             *contents,
+					      gsize                   length,
+					      const char             *etag,
+					      gboolean                make_backup,
+					      GFileCreateFlags        flags,
+					      char                  **new_etag,
+					      GCancellable           *cancellable,
+					      GError                **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_file_replace_contents_async       (GFile                  *file,
+					      const char             *contents,
+					      gsize                   length,
+					      const char             *etag,
+					      gboolean                make_backup,
+					      GFileCreateFlags        flags,
+					      GCancellable           *cancellable,
+					      GAsyncReadyCallback     callback,
+					      gpointer                user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_replace_contents_finish      (GFile                  *file,
+					      GAsyncResult           *res,
+					      char                  **new_etag,
+					      GError                **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_supports_thread_contexts     (GFile                  *file);
+
+G_END_DECLS
+
+#endif /* __G_FILE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileattribute.h b/dist/usr/include/glib-2.0/gio/gfileattribute.h
new file mode 100644
index 0000000..8ebdcd4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileattribute.h
@@ -0,0 +1,86 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_ATTRIBUTE_H__
+#define __G_FILE_ATTRIBUTE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GFileAttributeInfo:
+ * @name: the name of the attribute.
+ * @type: the #GFileAttributeType type of the attribute.
+ * @flags: a set of #GFileAttributeInfoFlags.
+ *
+ * Information about a specific attribute.
+ **/
+struct _GFileAttributeInfo
+{
+  char                    *name;
+  GFileAttributeType       type;
+  GFileAttributeInfoFlags  flags;
+};
+
+/**
+ * GFileAttributeInfoList:
+ * @infos: an array of #GFileAttributeInfo<!-- -->s.
+ * @n_infos: the number of values in the array.
+ *
+ * Acts as a lightweight registry for possible valid file attributes.
+ * The registry stores Key-Value pair formats as #GFileAttributeInfo<!-- -->s.
+ **/
+struct _GFileAttributeInfoList
+{
+  GFileAttributeInfo *infos;
+  int                 n_infos;
+};
+
+#define G_TYPE_FILE_ATTRIBUTE_INFO_LIST (g_file_attribute_info_list_get_type ())
+GLIB_AVAILABLE_IN_ALL
+GType g_file_attribute_info_list_get_type (void);
+
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeInfoList *  g_file_attribute_info_list_new    (void);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeInfoList *  g_file_attribute_info_list_ref    (GFileAttributeInfoList *list);
+GLIB_AVAILABLE_IN_ALL
+void                      g_file_attribute_info_list_unref  (GFileAttributeInfoList *list);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeInfoList *  g_file_attribute_info_list_dup    (GFileAttributeInfoList *list);
+GLIB_AVAILABLE_IN_ALL
+const GFileAttributeInfo *g_file_attribute_info_list_lookup (GFileAttributeInfoList *list,
+							     const char             *name);
+GLIB_AVAILABLE_IN_ALL
+void                      g_file_attribute_info_list_add    (GFileAttributeInfoList *list,
+							     const char             *name,
+							     GFileAttributeType      type,
+							     GFileAttributeInfoFlags flags);
+
+G_END_DECLS
+
+#endif /* __G_FILE_INFO_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileenumerator.h b/dist/usr/include/glib-2.0/gio/gfileenumerator.h
new file mode 100644
index 0000000..7607002
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileenumerator.h
@@ -0,0 +1,146 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_ENUMERATOR_H__
+#define __G_FILE_ENUMERATOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_ENUMERATOR         (g_file_enumerator_get_type ())
+#define G_FILE_ENUMERATOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_ENUMERATOR, GFileEnumerator))
+#define G_FILE_ENUMERATOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_ENUMERATOR, GFileEnumeratorClass))
+#define G_IS_FILE_ENUMERATOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_ENUMERATOR))
+#define G_IS_FILE_ENUMERATOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_ENUMERATOR))
+#define G_FILE_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_ENUMERATOR, GFileEnumeratorClass))
+
+/**
+ * GFileEnumerator:
+ *
+ * A per matched file iterator.
+ **/
+typedef struct _GFileEnumeratorClass    GFileEnumeratorClass;
+typedef struct _GFileEnumeratorPrivate  GFileEnumeratorPrivate;
+
+struct _GFileEnumerator
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GFileEnumeratorPrivate *priv;
+};
+
+struct _GFileEnumeratorClass
+{
+  GObjectClass parent_class;
+
+  /* Virtual Table */
+
+  GFileInfo * (* next_file)         (GFileEnumerator      *enumerator,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  gboolean    (* close_fn)          (GFileEnumerator      *enumerator,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+
+  void        (* next_files_async)  (GFileEnumerator      *enumerator,
+                                     int                   num_files,
+                                     int                   io_priority,
+                                     GCancellable         *cancellable,
+                                     GAsyncReadyCallback   callback,
+                                     gpointer              user_data);
+  GList *     (* next_files_finish) (GFileEnumerator      *enumerator,
+                                     GAsyncResult         *result,
+                                     GError              **error);
+  void        (* close_async)       (GFileEnumerator      *enumerator,
+                                     int                   io_priority,
+                                     GCancellable         *cancellable,
+                                     GAsyncReadyCallback   callback,
+                                     gpointer              user_data);
+  gboolean    (* close_finish)      (GFileEnumerator      *enumerator,
+                                     GAsyncResult         *result,
+                                     GError              **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_file_enumerator_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_enumerator_next_file         (GFileEnumerator      *enumerator,
+						GCancellable         *cancellable,
+						GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean   g_file_enumerator_close             (GFileEnumerator      *enumerator,
+						GCancellable         *cancellable,
+						GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_enumerator_next_files_async  (GFileEnumerator      *enumerator,
+						int                   num_files,
+						int                   io_priority,
+						GCancellable         *cancellable,
+						GAsyncReadyCallback   callback,
+						gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GList *    g_file_enumerator_next_files_finish (GFileEnumerator      *enumerator,
+						GAsyncResult         *result,
+						GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_enumerator_close_async       (GFileEnumerator      *enumerator,
+						int                   io_priority,
+						GCancellable         *cancellable,
+						GAsyncReadyCallback   callback,
+						gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean   g_file_enumerator_close_finish      (GFileEnumerator      *enumerator,
+						GAsyncResult         *result,
+						GError              **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean   g_file_enumerator_is_closed         (GFileEnumerator      *enumerator);
+GLIB_AVAILABLE_IN_ALL
+gboolean   g_file_enumerator_has_pending       (GFileEnumerator      *enumerator);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_enumerator_set_pending       (GFileEnumerator      *enumerator,
+						gboolean              pending);
+GLIB_AVAILABLE_IN_ALL
+GFile *    g_file_enumerator_get_container     (GFileEnumerator *enumerator);
+GLIB_AVAILABLE_IN_2_36
+GFile *    g_file_enumerator_get_child         (GFileEnumerator *enumerator,
+                                                GFileInfo       *info);
+
+G_END_DECLS
+
+#endif /* __G_FILE_ENUMERATOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileicon.h b/dist/usr/include/glib-2.0/gio/gfileicon.h
new file mode 100644
index 0000000..2e6f3d5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileicon.h
@@ -0,0 +1,59 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_ICON_H__
+#define __G_FILE_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_ICON         (g_file_icon_get_type ())
+#define G_FILE_ICON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_ICON, GFileIcon))
+#define G_FILE_ICON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_ICON, GFileIconClass))
+#define G_IS_FILE_ICON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_ICON))
+#define G_IS_FILE_ICON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_ICON))
+#define G_FILE_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_ICON, GFileIconClass))
+
+/**
+ * GFileIcon:
+ *
+ * Gets an icon for a #GFile. Implements #GLoadableIcon.
+ **/
+typedef struct _GFileIconClass   GFileIconClass;
+
+GLIB_AVAILABLE_IN_ALL
+GType   g_file_icon_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GIcon * g_file_icon_new      (GFile     *file);
+
+GLIB_AVAILABLE_IN_ALL
+GFile * g_file_icon_get_file (GFileIcon *icon);
+
+G_END_DECLS
+
+#endif /* __G_FILE_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileinfo.h b/dist/usr/include/glib-2.0/gio/gfileinfo.h
new file mode 100644
index 0000000..a001b0d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileinfo.h
@@ -0,0 +1,1057 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_INFO_H__
+#define __G_FILE_INFO_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_INFO         (g_file_info_get_type ())
+#define G_FILE_INFO(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INFO, GFileInfo))
+#define G_FILE_INFO_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INFO, GFileInfoClass))
+#define G_IS_FILE_INFO(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INFO))
+#define G_IS_FILE_INFO_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INFO))
+#define G_FILE_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INFO, GFileInfoClass))
+
+/**
+ * GFileInfo:
+ *
+ * Stores information about a file system object referenced by a #GFile.
+ **/
+typedef struct _GFileInfoClass   GFileInfoClass;
+
+
+/* Common Attributes:  */
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_TYPE:
+ *
+ * A key in the "standard" namespace for storing file types.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ * The value for this key should contain a #GFileType.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type"                     /* uint32 (GFileType) */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN:
+ *
+ * A key in the "standard" namespace for checking if a file is hidden.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "standard::is-hidden"           /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP:
+ *
+ * A key in the "standard" namespace for checking if a file is a backup file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup"           /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK:
+ *
+ * A key in the "standard" namespace for checking if the file is a symlink.
+ * Typically the actual type is something else, if we followed the symlink
+ * to get the type.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink"         /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL:
+ *
+ * A key in the "standard" namespace for checking if a file is virtual.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual"         /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_NAME:
+ *
+ * A key in the "standard" namespace for getting the name of the file.
+ * The name is the on-disk filename which may not be in any known encoding,
+ * and can thus not be generally displayed as is.
+ * Use #G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the
+ * name in a user interface.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name"                     /* byte string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME:
+ *
+ * A key in the "standard" namespace for getting the display name of the file.
+ * A display name is guaranteed to be in UTF8 and can thus be displayed in
+ * the UI.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name"     /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME:
+ *
+ * A key in the "standard" namespace for edit name of the file.
+ * An edit name is similar to the display name, but it is meant to be
+ * used when you want to rename the file in the UI. The display name
+ * might contain information you don't want in the new filename (such as
+ * "(invalid unicode)" if the filename was in an invalid encoding).
+ *
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name"           /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_COPY_NAME:
+ *
+ * A key in the "standard" namespace for getting the copy name of the file.
+ * The copy name is an optional version of the name. If available it's always
+ * in UTF8, and corresponds directly to the original filename (only transcoded to
+ * UTF8). This is useful if you want to copy the file to another filesystem that
+ * might have a different encoding. If the filename is not a valid string in the
+ * encoding selected for the filesystem it is in then the copy name will not be set.
+ *
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name"           /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION:
+ *
+ * A key in the "standard" namespace for getting the description of the file.
+ * The description is a utf8 string that describes the file, generally containing
+ * the filename, but can also contain furter information. Example descriptions
+ * could be "filename (on hostname)" for a remote file or "filename (in trash)"
+ * for a file in the trash. This is useful for instance as the window title
+ * when displaying a directory or for a bookmarks menu.
+ *
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description"        /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_ICON:
+ *
+ * A key in the "standard" namespace for getting the icon for the file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
+ * The value for this key should contain a #GIcon.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon"                     /* object (GIcon) */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON:
+ *
+ * A key in the "standard" namespace for getting the symbolic icon for the file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.
+ * The value for this key should contain a #GIcon.
+ *
+ * Since: 2.34
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON "standard::symbolic-icon"   /* object (GIcon) */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE:
+ *
+ * A key in the "standard" namespace for getting the content type of the file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ * The value for this key should contain a valid content type.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"     /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE:
+ *
+ * A key in the "standard" namespace for getting the fast content type.
+ * The fast content type isn't as reliable as the regular one, as it
+ * only uses the filename to guess it, but it is faster to calculate than the
+ * regular content type.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ *
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_SIZE:
+ *
+ * A key in the "standard" namespace for getting the file's size (in bytes).
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size"                     /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE:
+ *
+ * A key in the "standard" namespace for getting the amount of disk space
+ * that is consumed by the file (in bytes).  This will generally be larger
+ * than the file size (due to block size overhead) but can occasionally be
+ * smaller (for example, for sparse files).
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ *
+ * Since: 2.20
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET:
+ *
+ * A key in the "standard" namespace for getting the symlink target, if the file
+ * is a symlink. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_TARGET_URI:
+ *
+ * A key in the "standard" namespace for getting the target URI for the file, in
+ * the case of %G_FILE_TYPE_SHORTCUT or %G_FILE_TYPE_MOUNTABLE files.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri"         /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER:
+ *
+ * A key in the "standard" namespace for setting the sort order of a file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_INT32.
+ * An example use would be in file managers, which would use this key
+ * to set the order files are displayed. Files with smaller sort order
+ * should be sorted first, and files without sort order as if sort order
+ * was zero.
+ **/
+#define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order"         /* int32  */
+
+/* Entity tags, used to avoid missing updates on save */
+
+/**
+ * G_FILE_ATTRIBUTE_ETAG_VALUE:
+ *
+ * A key in the "etag" namespace for getting the value of the file's
+ * entity tag. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value"                 /* string */
+
+/* File identifier, for e.g. avoiding loops when doing recursive
+ * directory scanning
+ */
+
+/**
+ * G_FILE_ATTRIBUTE_ID_FILE:
+ *
+ * A key in the "id" namespace for getting a file identifier.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ * An example use would be during listing files, to avoid recursive
+ * directory scanning.
+ **/
+#define G_FILE_ATTRIBUTE_ID_FILE "id::file"                     /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_ID_FILESYSTEM:
+ *
+ * A key in the "id" namespace for getting the file system identifier.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ * An example use would be during drag and drop to see if the source
+ * and target are on the same filesystem (default to move) or not (default
+ * to copy).
+ **/
+#define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem"         /* string */
+
+/* Calculated Access Rights for current user */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_READ:
+ *
+ * A key in the "access" namespace for getting read privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to read the file.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read"       /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE:
+ *
+ * A key in the "access" namespace for getting write privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to write to the file.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE:
+ *
+ * A key in the "access" namespace for getting execution privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to execute the file.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE:
+ *
+ * A key in the "access" namespace for checking deletion privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to delete the file.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete"   /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH:
+ *
+ * A key in the "access" namespace for checking trashing privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to move the file to
+ * the trash.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME:
+ *
+ * A key in the "access" namespace for checking renaming privileges.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ * This attribute will be %TRUE if the user is able to rename the file.
+ **/
+#define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename"   /* boolean */
+
+/* TODO: Should we have special version for directories? can_enumerate, etc */
+
+/* Mountable attributes */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) is mountable.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE)  is unmountable.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be ejected.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE:
+ *
+ * A key in the "mountable" namespace for getting the unix device.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE:
+ *
+ * A key in the "mountable" namespace for getting the unix device file.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ *
+ * Since: 2.22
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE "mountable::unix-device-file" /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI:
+ *
+ * A key in the "mountable" namespace for getting the HAL UDI for the mountable
+ * file. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi"         /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be started.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START "mountable::can-start"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be started
+ * degraded.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED "mountable::can-start-degraded"     /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be stopped.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP "mountable::can-stop"      /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE:
+ *
+ * A key in the "mountable" namespace for getting the #GDriveStartStopType.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE "mountable::start-stop-type" /* uint32 (GDriveStartStopType) */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE) can be polled.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL "mountable::can-poll"      /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC:
+ *
+ * A key in the "mountable" namespace for checking if a file (of type G_FILE_TYPE_MOUNTABLE)
+ * is automatically polled for media.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ *
+ * Since: 2.22
+ */
+#define G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC "mountable::is-media-check-automatic"      /* boolean */
+
+/* Time attributes */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_MODIFIED:
+ *
+ * A key in the "time" namespace for getting the time the file was last
+ * modified. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the
+ * file was modified.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified"           /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC:
+ *
+ * A key in the "time" namespace for getting the miliseconds of the time
+ * the file was last modified. This should be used in conjunction with
+ * #G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_ACCESS:
+ *
+ * A key in the "time" namespace for getting the time the file was last
+ * accessed. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the
+ * file was last accessed.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access"               /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_ACCESS_USEC:
+ *
+ * A key in the "time" namespace for getting the microseconds of the time
+ * the file was last accessed. This should be used in conjunction with
+ * #G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec"     /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_CHANGED:
+ *
+ * A key in the "time" namespace for getting the time the file was last
+ * changed. Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
+ * and contains the UNIX time since the file was last changed.
+ *
+ * This corresponds to the traditional UNIX ctime.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed"             /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_CHANGED_USEC:
+ *
+ * A key in the "time" namespace for getting the microseconds of the time
+ * the file was last changed. This should be used in conjunction with
+ * #G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec"   /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_CREATED:
+ *
+ * A key in the "time" namespace for getting the time the file was created.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64,
+ * and contains the UNIX time since the file was created.
+ *
+ * This corresponds to the NTFS ctime.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_CREATED "time::created"             /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_TIME_CREATED_USEC:
+ *
+ * A key in the "time" namespace for getting the microseconds of the time
+ * the file was created. This should be used in conjunction with
+ * #G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec"   /* uint32 */
+
+/* Unix specific attributes */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_DEVICE:
+ *
+ * A key in the "unix" namespace for getting the device id of the device the
+ * file is located on (see stat() documentation). This attribute is only
+ * available for UNIX file systems. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device"               /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_INODE:
+ *
+ * A key in the "unix" namespace for getting the inode of the file.
+ * This attribute is only available for UNIX file systems. Corresponding
+ * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode"                 /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_MODE:
+ *
+ * A key in the "unix" namespace for getting the mode of the file
+ * (e.g. whether the file is a regular file, symlink, etc). See lstat()
+ * documentation. This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_NLINK:
+ *
+ * A key in the "unix" namespace for getting the number of hard links
+ * for a file. See lstat() documentation. This attribute is only available
+ * for UNIX file systems. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink"                 /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_UID:
+ *
+ * A key in the "unix" namespace for getting the user ID for the file.
+ * This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid"                     /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_GID:
+ *
+ * A key in the "unix" namespace for getting the group ID for the file.
+ * This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid"                     /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_RDEV:
+ *
+ * A key in the "unix" namespace for getting the device ID for the file
+ * (if it is a special file). See lstat() documentation. This attribute
+ * is only available for UNIX file systems. Corresponding #GFileAttributeType
+ * is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev"                   /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE:
+ *
+ * A key in the "unix" namespace for getting the block size for the file
+ * system. This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size"       /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_BLOCKS:
+ *
+ * A key in the "unix" namespace for getting the number of blocks allocated
+ * for the file. This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks"               /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT:
+ *
+ * A key in the "unix" namespace for checking if the file represents a
+ * UNIX mount point. This attribute is %TRUE if the file is a UNIX mount
+ * point. This attribute is only available for UNIX file systems.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */
+
+/* DOS specific attributes */
+
+/**
+ * G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE:
+ *
+ * A key in the "dos" namespace for checking if the file's archive flag
+ * is set. This attribute is %TRUE if the archive flag is set. This attribute
+ * is only available for DOS file systems. Corresponding #GFileAttributeType
+ * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive"         /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_DOS_IS_SYSTEM:
+ *
+ * A key in the "dos" namespace for checking if the file's backup flag
+ * is set. This attribute is %TRUE if the backup flag is set. This attribute
+ * is only available for DOS file systems. Corresponding #GFileAttributeType
+ * is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system"           /* boolean */
+
+/* Owner attributes */
+
+/**
+ * G_FILE_ATTRIBUTE_OWNER_USER:
+ *
+ * A key in the "owner" namespace for getting the user name of the
+ * file's owner. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_OWNER_USER "owner::user"                 /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_OWNER_USER_REAL:
+ *
+ * A key in the "owner" namespace for getting the real name of the
+ * user that owns the file. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real"       /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_OWNER_GROUP:
+ *
+ * A key in the "owner" namespace for getting the file owner's group.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group"               /* string */
+
+/* Thumbnails */
+
+/**
+ * G_FILE_ATTRIBUTE_THUMBNAIL_PATH:
+ *
+ * A key in the "thumbnail" namespace for getting the path to the thumbnail
+ * image. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path"         /* bytestring */
+/**
+ * G_FILE_ATTRIBUTE_THUMBNAILING_FAILED:
+ *
+ * A key in the "thumbnail" namespace for checking if thumbnailing failed.
+ * This attribute is %TRUE if thumbnailing failed. Corresponding
+ * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed"         /* boolean */
+
+/* Preview */
+
+/**
+ * G_FILE_ATTRIBUTE_PREVIEW_ICON:
+ *
+ * A key in the "preview" namespace for getting a #GIcon that can be
+ * used to get preview of the file. For example, it may be a low
+ * resolution thumbnail without metadata. Corresponding
+ * #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_OBJECT.  The value
+ * for this key should contain a #GIcon.
+ *
+ * Since: 2.20
+ **/
+#define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon"         /* object (GIcon) */
+
+/* File system info (for g_file_get_filesystem_info) */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_SIZE:
+ *
+ * A key in the "filesystem" namespace for getting the total size (in bytes) of the file system,
+ * used in g_file_query_filesystem_info(). Corresponding #GFileAttributeType
+ * is %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ **/
+#define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size"                       /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_FREE:
+ *
+ * A key in the "filesystem" namespace for getting the number of bytes of free space left on the
+ * file system. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ **/
+#define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free"                       /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_USED:
+ *
+ * A key in the "filesystem" namespace for getting the number of bytes of used on the
+ * file system. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_UINT64.
+ *
+ * Since: 2.32
+ */
+#define G_FILE_ATTRIBUTE_FILESYSTEM_USED "filesystem::used"                       /* uint64 */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_TYPE:
+ *
+ * A key in the "filesystem" namespace for getting the file system's type.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type"                       /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_READONLY:
+ *
+ * A key in the "filesystem" namespace for checking if the file system
+ * is read only. Is set to %TRUE if the file system is read only.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
+ **/
+#define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly"               /* boolean */
+
+/**
+ * G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW:
+ *
+ * A key in the "filesystem" namespace for hinting a file manager
+ * application whether it should preview (e.g. thumbnail) files on the
+ * file system. The value for this key contain a
+ * #GFilesystemPreviewType.
+ **/
+#define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview"        /* uint32 (GFilesystemPreviewType) */
+
+/**
+ * G_FILE_ATTRIBUTE_GVFS_BACKEND:
+ *
+ * A key in the "gvfs" namespace that gets the name of the current
+ * GVFS backend in use. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_STRING.
+ **/
+#define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend"             /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_SELINUX_CONTEXT:
+ *
+ * A key in the "selinux" namespace for getting the file's SELinux
+ * context. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_STRING. Note that this attribute is only
+ * available if GLib has been built with SELinux support.
+ **/
+#define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context"       /* string */
+
+/**
+ * G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT:
+ *
+ * A key in the "trash" namespace.  When requested against
+ * "trash:///" returns the number of (toplevel) items in the trash folder.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_UINT32.
+ **/
+#define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count"     /* uint32 */
+
+/**
+ * G_FILE_ATTRIBUTE_TRASH_ORIG_PATH:
+ *
+ * A key in the "trash" namespace.  When requested against
+ * items in "trash:///", will return the original path to the file before it
+ * was trashed. Corresponding #GFileAttributeType is
+ * %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
+ *
+ * Since: 2.24.
+ **/
+#define G_FILE_ATTRIBUTE_TRASH_ORIG_PATH "trash::orig-path"     /* byte string */
+
+/**
+ * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE:
+ *
+ * A key in the "trash" namespace.  When requested against
+ * items in "trash:///", will return the date and time when the file
+ * was trashed. The format of the returned string is YYYY-MM-DDThh:mm:ss.
+ * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_STRING.
+ *
+ * Since: 2.24.
+ **/
+#define G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "trash::deletion-date"  /* string */
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_file_info_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *        g_file_info_new                       (void);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *        g_file_info_dup                       (GFileInfo  *other);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_copy_into                 (GFileInfo  *src_info,
+							  GFileInfo  *dest_info);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_file_info_has_attribute             (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_file_info_has_namespace             (GFileInfo  *info,
+							  const char *name_space);
+GLIB_AVAILABLE_IN_ALL
+char **            g_file_info_list_attributes           (GFileInfo  *info,
+							  const char *name_space);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_file_info_get_attribute_data        (GFileInfo  *info,
+							  const char *attribute,
+							  GFileAttributeType *type,
+							  gpointer   *value_pp,
+							  GFileAttributeStatus *status);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeType g_file_info_get_attribute_type        (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_remove_attribute          (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeStatus g_file_info_get_attribute_status    (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_file_info_set_attribute_status      (GFileInfo  *info,
+							  const char *attribute,
+							  GFileAttributeStatus status);
+GLIB_AVAILABLE_IN_ALL
+char *             g_file_info_get_attribute_as_string   (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+const char *       g_file_info_get_attribute_string      (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+const char *       g_file_info_get_attribute_byte_string (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+gboolean           g_file_info_get_attribute_boolean     (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+guint32            g_file_info_get_attribute_uint32      (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+gint32             g_file_info_get_attribute_int32       (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+guint64            g_file_info_get_attribute_uint64      (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+gint64             g_file_info_get_attribute_int64       (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+GObject *          g_file_info_get_attribute_object      (GFileInfo  *info,
+							  const char *attribute);
+GLIB_AVAILABLE_IN_ALL
+char **            g_file_info_get_attribute_stringv     (GFileInfo  *info,
+							  const char *attribute);
+
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute             (GFileInfo  *info,
+							  const char *attribute,
+							  GFileAttributeType type,
+							  gpointer    value_p);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_string      (GFileInfo  *info,
+							  const char *attribute,
+							  const char *attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_byte_string (GFileInfo  *info,
+							  const char *attribute,
+							  const char *attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_boolean     (GFileInfo  *info,
+							  const char *attribute,
+							  gboolean    attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_uint32      (GFileInfo  *info,
+							  const char *attribute,
+							  guint32     attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_int32       (GFileInfo  *info,
+							  const char *attribute,
+							  gint32      attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_uint64      (GFileInfo  *info,
+							  const char *attribute,
+							  guint64     attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_int64       (GFileInfo  *info,
+							  const char *attribute,
+							  gint64      attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_object      (GFileInfo  *info,
+							  const char *attribute,
+							  GObject    *attr_value);
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_set_attribute_stringv     (GFileInfo  *info,
+							  const char *attribute,
+							  char      **attr_value);
+
+GLIB_AVAILABLE_IN_ALL
+void               g_file_info_clear_status              (GFileInfo  *info);
+
+/* Helper getters: */
+GLIB_AVAILABLE_IN_2_36
+GDateTime *       g_file_info_get_deletion_date      (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+GFileType         g_file_info_get_file_type          (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+gboolean          g_file_info_get_is_hidden          (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+gboolean          g_file_info_get_is_backup          (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+gboolean          g_file_info_get_is_symlink         (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_name               (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_display_name       (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_edit_name          (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+GIcon *           g_file_info_get_icon               (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+GIcon *           g_file_info_get_symbolic_icon      (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_content_type       (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+goffset           g_file_info_get_size               (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_get_modification_time  (GFileInfo         *info,
+						      GTimeVal          *result);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_symlink_target     (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+const char *      g_file_info_get_etag               (GFileInfo         *info);
+GLIB_AVAILABLE_IN_ALL
+gint32            g_file_info_get_sort_order         (GFileInfo         *info);
+
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_attribute_mask     (GFileInfo         *info,
+						      GFileAttributeMatcher *mask);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_unset_attribute_mask   (GFileInfo         *info);
+
+/* Helper setters: */
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_file_type          (GFileInfo         *info,
+						      GFileType          type);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_is_hidden          (GFileInfo         *info,
+						      gboolean           is_hidden);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_is_symlink         (GFileInfo         *info,
+						      gboolean           is_symlink);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_name               (GFileInfo         *info,
+						      const char        *name);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_display_name       (GFileInfo         *info,
+						      const char        *display_name);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_edit_name          (GFileInfo         *info,
+						      const char        *edit_name);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_icon               (GFileInfo         *info,
+						      GIcon             *icon);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_symbolic_icon      (GFileInfo         *info,
+						      GIcon             *icon);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_content_type       (GFileInfo         *info,
+						      const char        *content_type);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_size               (GFileInfo         *info,
+						      goffset            size);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_modification_time  (GFileInfo         *info,
+						      GTimeVal          *mtime);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_symlink_target     (GFileInfo         *info,
+						      const char        *symlink_target);
+GLIB_AVAILABLE_IN_ALL
+void              g_file_info_set_sort_order         (GFileInfo         *info,
+						      gint32             sort_order);
+
+#define G_TYPE_FILE_ATTRIBUTE_MATCHER (g_file_attribute_matcher_get_type ())
+GLIB_AVAILABLE_IN_ALL
+GType g_file_attribute_matcher_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeMatcher *g_file_attribute_matcher_new            (const char            *attributes);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeMatcher *g_file_attribute_matcher_ref            (GFileAttributeMatcher *matcher);
+GLIB_AVAILABLE_IN_ALL
+void                   g_file_attribute_matcher_unref          (GFileAttributeMatcher *matcher);
+GLIB_AVAILABLE_IN_ALL
+GFileAttributeMatcher *g_file_attribute_matcher_subtract       (GFileAttributeMatcher *matcher,
+                                                                GFileAttributeMatcher *subtract);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_file_attribute_matcher_matches        (GFileAttributeMatcher *matcher,
+								const char            *attribute);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_file_attribute_matcher_matches_only   (GFileAttributeMatcher *matcher,
+								const char            *attribute);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher,
+								     const char            *ns);
+GLIB_AVAILABLE_IN_ALL
+const char *           g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher);
+GLIB_AVAILABLE_IN_2_32
+char *                 g_file_attribute_matcher_to_string      (GFileAttributeMatcher *matcher);
+
+G_END_DECLS
+
+#endif /* __G_FILE_INFO_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileinputstream.h b/dist/usr/include/glib-2.0/gio/gfileinputstream.h
new file mode 100644
index 0000000..338ccae
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileinputstream.h
@@ -0,0 +1,116 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_INPUT_STREAM_H__
+#define __G_FILE_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/ginputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_INPUT_STREAM         (g_file_input_stream_get_type ())
+#define G_FILE_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStream))
+#define G_FILE_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass))
+#define G_IS_FILE_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INPUT_STREAM))
+#define G_IS_FILE_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INPUT_STREAM))
+#define G_FILE_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass))
+
+/**
+ * GFileInputStream:
+ *
+ * A subclass of GInputStream for opened files. This adds
+ * a few file-specific operations and seeking.
+ *
+ * #GFileInputStream implements #GSeekable.
+ **/
+typedef struct _GFileInputStreamClass    GFileInputStreamClass;
+typedef struct _GFileInputStreamPrivate  GFileInputStreamPrivate;
+
+struct _GFileInputStream
+{
+  GInputStream parent_instance;
+
+  /*< private >*/
+  GFileInputStreamPrivate *priv;
+};
+
+struct _GFileInputStreamClass
+{
+  GInputStreamClass parent_class;
+
+  goffset     (* tell)              (GFileInputStream     *stream);
+  gboolean    (* can_seek)          (GFileInputStream     *stream);
+  gboolean    (* seek)	            (GFileInputStream     *stream,
+                                     goffset               offset,
+                                     GSeekType             type,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  GFileInfo * (* query_info)        (GFileInputStream     *stream,
+                                     const char           *attributes,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  void        (* query_info_async)  (GFileInputStream     *stream,
+                                     const char           *attributes,
+                                     int                   io_priority,
+                                     GCancellable         *cancellable,
+                                     GAsyncReadyCallback   callback,
+                                     gpointer              user_data);
+  GFileInfo * (* query_info_finish) (GFileInputStream     *stream,
+                                     GAsyncResult         *result,
+                                     GError              **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_file_input_stream_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_input_stream_query_info        (GFileInputStream     *stream,
+						  const char           *attributes,
+						  GCancellable         *cancellable,
+						  GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_input_stream_query_info_async  (GFileInputStream     *stream,
+						  const char           *attributes,
+						  int                   io_priority,
+						  GCancellable         *cancellable,
+						  GAsyncReadyCallback   callback,
+						  gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_input_stream_query_info_finish (GFileInputStream     *stream,
+						  GAsyncResult         *result,
+						  GError              **error);
+
+G_END_DECLS
+
+#endif /* __G_FILE_FILE_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileiostream.h b/dist/usr/include/glib-2.0/gio/gfileiostream.h
new file mode 100644
index 0000000..89a5536
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileiostream.h
@@ -0,0 +1,123 @@
+/* GIO - GLib Input, Io and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_IO_STREAM_H__
+#define __G_FILE_IO_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giostream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_IO_STREAM         (g_file_io_stream_get_type ())
+#define G_FILE_IO_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_IO_STREAM, GFileIOStream))
+#define G_FILE_IO_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_IO_STREAM, GFileIOStreamClass))
+#define G_IS_FILE_IO_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_IO_STREAM))
+#define G_IS_FILE_IO_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_IO_STREAM))
+#define G_FILE_IO_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_IO_STREAM, GFileIOStreamClass))
+
+/**
+ * GFileIOStream:
+ *
+ * A subclass of GIOStream for opened files. This adds
+ * a few file-specific operations and seeking and truncating.
+ *
+ * #GFileIOStream implements GSeekable.
+ **/
+typedef struct _GFileIOStreamClass    GFileIOStreamClass;
+typedef struct _GFileIOStreamPrivate  GFileIOStreamPrivate;
+
+struct _GFileIOStream
+{
+  GIOStream parent_instance;
+
+  /*< private >*/
+  GFileIOStreamPrivate *priv;
+};
+
+struct _GFileIOStreamClass
+{
+  GIOStreamClass parent_class;
+
+  goffset     (* tell)              (GFileIOStream    *stream);
+  gboolean    (* can_seek)          (GFileIOStream    *stream);
+  gboolean    (* seek)	            (GFileIOStream    *stream,
+                                     goffset               offset,
+                                     GSeekType             type,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  gboolean    (* can_truncate)      (GFileIOStream    *stream);
+  gboolean    (* truncate_fn)       (GFileIOStream    *stream,
+                                     goffset               size,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  GFileInfo * (* query_info)        (GFileIOStream    *stream,
+                                     const char           *attributes,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  void        (* query_info_async)  (GFileIOStream     *stream,
+                                     const char            *attributes,
+                                     int                   io_priority,
+                                     GCancellable         *cancellable,
+                                     GAsyncReadyCallback   callback,
+                                     gpointer              user_data);
+  GFileInfo * (* query_info_finish) (GFileIOStream     *stream,
+                                     GAsyncResult         *result,
+                                     GError              **error);
+  char      * (* get_etag)          (GFileIOStream    *stream);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_file_io_stream_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_io_stream_query_info        (GFileIOStream    *stream,
+					       const char           *attributes,
+					       GCancellable         *cancellable,
+					       GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_io_stream_query_info_async  (GFileIOStream    *stream,
+					       const char           *attributes,
+					       int                   io_priority,
+					       GCancellable         *cancellable,
+					       GAsyncReadyCallback   callback,
+					       gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_io_stream_query_info_finish (GFileIOStream    *stream,
+					       GAsyncResult         *result,
+					       GError              **error);
+GLIB_AVAILABLE_IN_ALL
+char *     g_file_io_stream_get_etag          (GFileIOStream    *stream);
+
+G_END_DECLS
+
+#endif /* __G_FILE_FILE_IO_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfilemonitor.h b/dist/usr/include/glib-2.0/gio/gfilemonitor.h
new file mode 100644
index 0000000..e29ad0a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfilemonitor.h
@@ -0,0 +1,100 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_MONITOR_H__
+#define __G_FILE_MONITOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_MONITOR         (g_file_monitor_get_type ())
+#define G_FILE_MONITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_MONITOR, GFileMonitor))
+#define G_FILE_MONITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_MONITOR, GFileMonitorClass))
+#define G_IS_FILE_MONITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_MONITOR))
+#define G_IS_FILE_MONITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_MONITOR))
+#define G_FILE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_MONITOR, GFileMonitorClass))
+
+typedef struct _GFileMonitorClass       GFileMonitorClass;
+typedef struct _GFileMonitorPrivate	GFileMonitorPrivate;
+
+/**
+ * GFileMonitor:
+ *
+ * Watches for changes to a file.
+ **/
+struct _GFileMonitor
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GFileMonitorPrivate *priv;
+};
+
+struct _GFileMonitorClass
+{
+  GObjectClass parent_class;
+
+  /* Signals */
+  void     (* changed) (GFileMonitor      *monitor,
+                        GFile             *file,
+                        GFile             *other_file,
+                        GFileMonitorEvent  event_type);
+
+  /* Virtual Table */
+  gboolean (* cancel)  (GFileMonitor      *monitor);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_file_monitor_get_type       (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_monitor_cancel         (GFileMonitor      *monitor);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_file_monitor_is_cancelled   (GFileMonitor      *monitor);
+GLIB_AVAILABLE_IN_ALL
+void     g_file_monitor_set_rate_limit (GFileMonitor      *monitor,
+                                        gint               limit_msecs);
+
+
+/* For implementations */
+GLIB_AVAILABLE_IN_ALL
+void     g_file_monitor_emit_event     (GFileMonitor      *monitor,
+                                        GFile             *child,
+                                        GFile             *other_file,
+                                        GFileMonitorEvent  event_type);
+
+G_END_DECLS
+
+#endif /* __G_FILE_MONITOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfilenamecompleter.h b/dist/usr/include/glib-2.0/gio/gfilenamecompleter.h
new file mode 100644
index 0000000..0745bbb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfilenamecompleter.h
@@ -0,0 +1,81 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILENAME_COMPLETER_H__
+#define __G_FILENAME_COMPLETER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILENAME_COMPLETER         (g_filename_completer_get_type ())
+#define G_FILENAME_COMPLETER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILENAME_COMPLETER, GFilenameCompleter))
+#define G_FILENAME_COMPLETER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILENAME_COMPLETER, GFilenameCompleterClass))
+#define G_FILENAME_COMPLETER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILENAME_COMPLETER, GFilenameCompleterClass))
+#define G_IS_FILENAME_COMPLETER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILENAME_COMPLETER))
+#define G_IS_FILENAME_COMPLETER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILENAME_COMPLETER))
+
+/**
+ * GFilenameCompleter:
+ *
+ * Completes filenames based on files that exist within the file system.
+ **/
+typedef struct _GFilenameCompleterClass GFilenameCompleterClass;
+
+struct _GFilenameCompleterClass
+{
+  GObjectClass parent_class;
+
+  /*< public >*/
+  /* signals */
+  void (* got_completion_data) (GFilenameCompleter *filename_completer);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType               g_filename_completer_get_type              (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFilenameCompleter *g_filename_completer_new                   (void);
+
+GLIB_AVAILABLE_IN_ALL
+char *              g_filename_completer_get_completion_suffix (GFilenameCompleter *completer,
+                                                                const char *initial_text);
+GLIB_AVAILABLE_IN_ALL
+char **             g_filename_completer_get_completions       (GFilenameCompleter *completer,
+                                                                const char *initial_text);
+GLIB_AVAILABLE_IN_ALL
+void                g_filename_completer_set_dirs_only         (GFilenameCompleter *completer,
+                                                                gboolean dirs_only);
+
+G_END_DECLS
+
+#endif /* __G_FILENAME_COMPLETER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfileoutputstream.h b/dist/usr/include/glib-2.0/gio/gfileoutputstream.h
new file mode 100644
index 0000000..5e8a5fe
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfileoutputstream.h
@@ -0,0 +1,124 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_FILE_OUTPUT_STREAM_H__
+#define __G_FILE_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/goutputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILE_OUTPUT_STREAM         (g_file_output_stream_get_type ())
+#define G_FILE_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStream))
+#define G_FILE_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass))
+#define G_IS_FILE_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_OUTPUT_STREAM))
+#define G_IS_FILE_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_OUTPUT_STREAM))
+#define G_FILE_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass))
+
+/**
+ * GFileOutputStream:
+ *
+ * A subclass of GOutputStream for opened files. This adds
+ * a few file-specific operations and seeking and truncating.
+ *
+ * #GFileOutputStream implements GSeekable.
+ **/
+typedef struct _GFileOutputStreamClass    GFileOutputStreamClass;
+typedef struct _GFileOutputStreamPrivate  GFileOutputStreamPrivate;
+
+struct _GFileOutputStream
+{
+  GOutputStream parent_instance;
+
+  /*< private >*/
+  GFileOutputStreamPrivate *priv;
+};
+
+struct _GFileOutputStreamClass
+{
+  GOutputStreamClass parent_class;
+
+  goffset     (* tell)              (GFileOutputStream    *stream);
+  gboolean    (* can_seek)          (GFileOutputStream    *stream);
+  gboolean    (* seek)	            (GFileOutputStream    *stream,
+                                     goffset               offset,
+                                     GSeekType             type,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  gboolean    (* can_truncate)      (GFileOutputStream    *stream);
+  gboolean    (* truncate_fn)       (GFileOutputStream    *stream,
+                                     goffset               size,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  GFileInfo * (* query_info)        (GFileOutputStream    *stream,
+                                     const char           *attributes,
+                                     GCancellable         *cancellable,
+                                     GError              **error);
+  void        (* query_info_async)  (GFileOutputStream     *stream,
+                                     const char            *attributes,
+                                     int                   io_priority,
+                                     GCancellable         *cancellable,
+                                     GAsyncReadyCallback   callback,
+                                     gpointer              user_data);
+  GFileInfo * (* query_info_finish) (GFileOutputStream     *stream,
+                                     GAsyncResult         *result,
+                                     GError              **error);
+  char      * (* get_etag)          (GFileOutputStream    *stream);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_file_output_stream_get_type          (void) G_GNUC_CONST;
+
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_output_stream_query_info        (GFileOutputStream    *stream,
+                                                   const char           *attributes,
+                                                   GCancellable         *cancellable,
+                                                   GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_file_output_stream_query_info_async  (GFileOutputStream    *stream,
+						   const char           *attributes,
+						   int                   io_priority,
+						   GCancellable         *cancellable,
+						   GAsyncReadyCallback   callback,
+						   gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GFileInfo *g_file_output_stream_query_info_finish (GFileOutputStream    *stream,
+						   GAsyncResult         *result,
+						   GError              **error);
+GLIB_AVAILABLE_IN_ALL
+char *     g_file_output_stream_get_etag          (GFileOutputStream    *stream);
+
+G_END_DECLS
+
+#endif /* __G_FILE_FILE_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfilterinputstream.h b/dist/usr/include/glib-2.0/gio/gfilterinputstream.h
new file mode 100644
index 0000000..afe15a5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfilterinputstream.h
@@ -0,0 +1,80 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_FILTER_INPUT_STREAM_H__
+#define __G_FILTER_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/ginputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILTER_INPUT_STREAM         (g_filter_input_stream_get_type ())
+#define G_FILTER_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStream))
+#define G_FILTER_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStreamClass))
+#define G_IS_FILTER_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILTER_INPUT_STREAM))
+#define G_IS_FILTER_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILTER_INPUT_STREAM))
+#define G_FILTER_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILTER_INPUT_STREAM, GFilterInputStreamClass))
+
+/**
+ * GFilterInputStream:
+ *
+ * A base class for all input streams that work on an underlying stream.
+ **/
+typedef struct _GFilterInputStreamClass    GFilterInputStreamClass;
+
+struct _GFilterInputStream
+{
+  GInputStream parent_instance;
+
+  /*<protected >*/
+  GInputStream *base_stream;
+};
+
+struct _GFilterInputStreamClass
+{
+  GInputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_filter_input_stream_get_type              (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GInputStream * g_filter_input_stream_get_base_stream       (GFilterInputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_filter_input_stream_get_close_base_stream (GFilterInputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+void           g_filter_input_stream_set_close_base_stream (GFilterInputStream *stream,
+                                                            gboolean            close_base);
+
+G_END_DECLS
+
+#endif /* __G_FILTER_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gfilteroutputstream.h b/dist/usr/include/glib-2.0/gio/gfilteroutputstream.h
new file mode 100644
index 0000000..7e29086
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gfilteroutputstream.h
@@ -0,0 +1,80 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_FILTER_OUTPUT_STREAM_H__
+#define __G_FILTER_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/goutputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_FILTER_OUTPUT_STREAM         (g_filter_output_stream_get_type ())
+#define G_FILTER_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStream))
+#define G_FILTER_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStreamClass))
+#define G_IS_FILTER_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILTER_OUTPUT_STREAM))
+#define G_IS_FILTER_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILTER_OUTPUT_STREAM))
+#define G_FILTER_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILTER_OUTPUT_STREAM, GFilterOutputStreamClass))
+
+/**
+ * GFilterOutputStream:
+ *
+ * A base class for all output streams that work on an underlying stream.
+ **/
+typedef struct _GFilterOutputStreamClass    GFilterOutputStreamClass;
+
+struct _GFilterOutputStream
+{
+  GOutputStream parent_instance;
+
+  /*< protected >*/
+  GOutputStream *base_stream;
+};
+
+struct _GFilterOutputStreamClass
+{
+  GOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_filter_output_stream_get_type              (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GOutputStream * g_filter_output_stream_get_base_stream       (GFilterOutputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_filter_output_stream_get_close_base_stream (GFilterOutputStream *stream);
+GLIB_AVAILABLE_IN_ALL
+void            g_filter_output_stream_set_close_base_stream (GFilterOutputStream *stream,
+                                                              gboolean             close_base);
+
+G_END_DECLS
+
+#endif /* __G_FILTER_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gicon.h b/dist/usr/include/glib-2.0/gio/gicon.h
new file mode 100644
index 0000000..f378146
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gicon.h
@@ -0,0 +1,103 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_ICON_H__
+#define __G_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ICON            (g_icon_get_type ())
+#define G_ICON(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ICON, GIcon))
+#define G_IS_ICON(obj)	       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ICON))
+#define G_ICON_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_ICON, GIconIface))
+
+/**
+ * GIcon:
+ *
+ * An abstract type that specifies an icon.
+ **/
+typedef struct _GIconIface GIconIface;
+
+/**
+ * GIconIface:
+ * @g_iface: The parent interface.
+ * @hash: A hash for a given #GIcon.
+ * @equal: Checks if two #GIcon<!-- -->s are equal.
+ * @to_tokens: Serializes a #GIcon into tokens. The tokens must not
+ * contain any whitespace. Don't implement if the #GIcon can't be
+ * serialized (Since 2.20).
+ * @from_tokens: Constructs a #GIcon from tokens. Set the #GError if
+ * the tokens are malformed. Don't implement if the #GIcon can't be
+ * serialized (Since 2.20).
+ *
+ * GIconIface is used to implement GIcon types for various
+ * different systems. See #GThemedIcon and #GLoadableIcon for
+ * examples of how to implement this interface.
+ */
+struct _GIconIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  guint       (* hash)        (GIcon   *icon);
+  gboolean    (* equal)       (GIcon   *icon1,
+                               GIcon   *icon2);
+  gboolean    (* to_tokens)   (GIcon   *icon,
+			       GPtrArray *tokens,
+                               gint    *out_version);
+  GIcon *     (* from_tokens) (gchar  **tokens,
+                               gint     num_tokens,
+                               gint     version,
+                               GError **error);
+
+  GVariant *  (* serialize)   (GIcon   *icon);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_icon_get_type  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+guint    g_icon_hash            (gconstpointer  icon);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_icon_equal           (GIcon         *icon1,
+                                 GIcon         *icon2);
+GLIB_AVAILABLE_IN_ALL
+gchar   *g_icon_to_string       (GIcon         *icon);
+GLIB_AVAILABLE_IN_ALL
+GIcon   *g_icon_new_for_string  (const gchar   *str,
+                                 GError       **error);
+
+GLIB_AVAILABLE_IN_2_38
+GVariant * g_icon_serialize     (GIcon         *icon);
+GLIB_AVAILABLE_IN_2_38
+GIcon *    g_icon_deserialize   (GVariant      *value);
+
+G_END_DECLS
+
+#endif /* __G_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/ginetaddress.h b/dist/usr/include/glib-2.0/gio/ginetaddress.h
new file mode 100644
index 0000000..940b798
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/ginetaddress.h
@@ -0,0 +1,126 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
+ *
+ * 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ */
+
+#ifndef __G_INET_ADDRESS_H__
+#define __G_INET_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_INET_ADDRESS         (g_inet_address_get_type ())
+#define G_INET_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_ADDRESS, GInetAddress))
+#define G_INET_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_ADDRESS, GInetAddressClass))
+#define G_IS_INET_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_ADDRESS))
+#define G_IS_INET_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_ADDRESS))
+#define G_INET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_ADDRESS, GInetAddressClass))
+
+typedef struct _GInetAddressClass   GInetAddressClass;
+typedef struct _GInetAddressPrivate GInetAddressPrivate;
+
+struct _GInetAddress
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GInetAddressPrivate *priv;
+};
+
+struct _GInetAddressClass
+{
+  GObjectClass parent_class;
+
+  gchar *        (*to_string) (GInetAddress *address);
+  const guint8 * (*to_bytes)  (GInetAddress *address);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_inet_address_get_type             (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GInetAddress *        g_inet_address_new_from_string      (const gchar          *string);
+
+GLIB_AVAILABLE_IN_ALL
+GInetAddress *        g_inet_address_new_from_bytes       (const guint8         *bytes,
+							   GSocketFamily         family);
+
+GLIB_AVAILABLE_IN_ALL
+GInetAddress *        g_inet_address_new_loopback         (GSocketFamily         family);
+
+GLIB_AVAILABLE_IN_ALL
+GInetAddress *        g_inet_address_new_any              (GSocketFamily         family);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_equal                (GInetAddress         *address,
+                                                           GInetAddress         *other_address);
+
+GLIB_AVAILABLE_IN_ALL
+gchar *               g_inet_address_to_string            (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+const guint8 *        g_inet_address_to_bytes             (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gsize                 g_inet_address_get_native_size      (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketFamily         g_inet_address_get_family           (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_any           (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_loopback      (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_link_local    (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_site_local    (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_multicast     (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_mc_global     (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_mc_link_local (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_mc_node_local (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_mc_org_local  (GInetAddress         *address);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_inet_address_get_is_mc_site_local (GInetAddress         *address);
+
+G_END_DECLS
+
+#endif /* __G_INET_ADDRESS_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/ginetaddressmask.h b/dist/usr/include/glib-2.0/gio/ginetaddressmask.h
new file mode 100644
index 0000000..05b0630
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/ginetaddressmask.h
@@ -0,0 +1,87 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2011 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_INET_ADDRESS_MASK_H__
+#define __G_INET_ADDRESS_MASK_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_INET_ADDRESS_MASK         (g_inet_address_mask_get_type ())
+#define G_INET_ADDRESS_MASK(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMask))
+#define G_INET_ADDRESS_MASK_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass))
+#define G_IS_INET_ADDRESS_MASK(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_ADDRESS_MASK))
+#define G_IS_INET_ADDRESS_MASK_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_ADDRESS_MASK))
+#define G_INET_ADDRESS_MASK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_ADDRESS_MASK, GInetAddressMaskClass))
+
+typedef struct _GInetAddressMaskClass   GInetAddressMaskClass;
+typedef struct _GInetAddressMaskPrivate GInetAddressMaskPrivate;
+
+struct _GInetAddressMask
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GInetAddressMaskPrivate *priv;
+};
+
+struct _GInetAddressMaskClass
+{
+  GObjectClass parent_class;
+
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType g_inet_address_mask_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+GInetAddressMask *g_inet_address_mask_new             (GInetAddress      *addr,
+						       guint              length,
+						       GError           **error);
+
+GLIB_AVAILABLE_IN_2_32
+GInetAddressMask *g_inet_address_mask_new_from_string (const gchar       *mask_string,
+						       GError           **error);
+GLIB_AVAILABLE_IN_2_32
+gchar            *g_inet_address_mask_to_string       (GInetAddressMask  *mask);
+
+GLIB_AVAILABLE_IN_2_32
+GSocketFamily     g_inet_address_mask_get_family      (GInetAddressMask  *mask);
+GLIB_AVAILABLE_IN_2_32
+GInetAddress     *g_inet_address_mask_get_address     (GInetAddressMask  *mask);
+GLIB_AVAILABLE_IN_2_32
+guint             g_inet_address_mask_get_length      (GInetAddressMask  *mask);
+
+GLIB_AVAILABLE_IN_2_32
+gboolean          g_inet_address_mask_matches         (GInetAddressMask  *mask,
+						       GInetAddress      *address);
+GLIB_AVAILABLE_IN_2_32
+gboolean          g_inet_address_mask_equal           (GInetAddressMask  *mask,
+						       GInetAddressMask  *mask2);
+
+G_END_DECLS
+
+#endif /* __G_INET_ADDRESS_MASK_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/ginetsocketaddress.h b/dist/usr/include/glib-2.0/gio/ginetsocketaddress.h
new file mode 100644
index 0000000..1865a3b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/ginetsocketaddress.h
@@ -0,0 +1,77 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
+ *
+ * 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ */
+
+#ifndef __G_INET_SOCKET_ADDRESS_H__
+#define __G_INET_SOCKET_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsocketaddress.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_INET_SOCKET_ADDRESS         (g_inet_socket_address_get_type ())
+#define G_INET_SOCKET_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddress))
+#define G_INET_SOCKET_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddressClass))
+#define G_IS_INET_SOCKET_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INET_SOCKET_ADDRESS))
+#define G_IS_INET_SOCKET_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INET_SOCKET_ADDRESS))
+#define G_INET_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INET_SOCKET_ADDRESS, GInetSocketAddressClass))
+
+typedef struct _GInetSocketAddressClass   GInetSocketAddressClass;
+typedef struct _GInetSocketAddressPrivate GInetSocketAddressPrivate;
+
+struct _GInetSocketAddress
+{
+  GSocketAddress parent_instance;
+
+  /*< private >*/
+  GInetSocketAddressPrivate *priv;
+};
+
+struct _GInetSocketAddressClass
+{
+  GSocketAddressClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_inet_socket_address_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_inet_socket_address_new          (GInetAddress       *address,
+						    guint16             port);
+
+GLIB_AVAILABLE_IN_ALL
+GInetAddress *  g_inet_socket_address_get_address  (GInetSocketAddress *address);
+GLIB_AVAILABLE_IN_ALL
+guint16         g_inet_socket_address_get_port     (GInetSocketAddress *address);
+
+GLIB_AVAILABLE_IN_2_32
+guint32         g_inet_socket_address_get_flowinfo (GInetSocketAddress *address);
+GLIB_AVAILABLE_IN_2_32
+guint32         g_inet_socket_address_get_scope_id (GInetSocketAddress *address);
+
+G_END_DECLS
+
+#endif /* __G_INET_SOCKET_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/ginitable.h b/dist/usr/include/glib-2.0/gio/ginitable.h
new file mode 100644
index 0000000..c147013
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/ginitable.h
@@ -0,0 +1,101 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_INITABLE_H__
+#define __G_INITABLE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_INITABLE            (g_initable_get_type ())
+#define G_INITABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_INITABLE, GInitable))
+#define G_IS_INITABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_INITABLE))
+#define G_INITABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_INITABLE, GInitableIface))
+#define G_TYPE_IS_INITABLE(type)   (g_type_is_a ((type), G_TYPE_INITABLE))
+
+/**
+ * GInitable:
+ *
+ * Interface for initializable objects.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GInitableIface GInitableIface;
+
+/**
+ * GInitableIface:
+ * @g_iface: The parent interface.
+ * @init: Initializes the object.
+ *
+ * Provides an interface for initializing object such that initialization
+ * may fail.
+ *
+ * Since: 2.22
+ **/
+struct _GInitableIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  gboolean    (* init) (GInitable    *initable,
+			GCancellable *cancellable,
+			GError      **error);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_initable_get_type   (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_initable_init       (GInitable     *initable,
+				GCancellable  *cancellable,
+				GError       **error);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer g_initable_new        (GType          object_type,
+				GCancellable  *cancellable,
+				GError       **error,
+				const gchar   *first_property_name,
+				...);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_initable_newv       (GType          object_type,
+				guint          n_parameters,
+				GParameter    *parameters,
+				GCancellable  *cancellable,
+				GError       **error);
+GLIB_AVAILABLE_IN_ALL
+GObject* g_initable_new_valist (GType          object_type,
+				const gchar   *first_property_name,
+				va_list        var_args,
+				GCancellable  *cancellable,
+				GError       **error);
+
+G_END_DECLS
+
+
+#endif /* __G_INITABLE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/ginputstream.h b/dist/usr/include/glib-2.0/gio/ginputstream.h
new file mode 100644
index 0000000..bedfba7
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/ginputstream.h
@@ -0,0 +1,203 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_INPUT_STREAM_H__
+#define __G_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_INPUT_STREAM         (g_input_stream_get_type ())
+#define G_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INPUT_STREAM, GInputStream))
+#define G_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_INPUT_STREAM, GInputStreamClass))
+#define G_IS_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INPUT_STREAM))
+#define G_IS_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INPUT_STREAM))
+#define G_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_INPUT_STREAM, GInputStreamClass))
+
+/**
+ * GInputStream:
+ *
+ * Base class for streaming input operations.
+ **/
+typedef struct _GInputStreamClass    GInputStreamClass;
+typedef struct _GInputStreamPrivate  GInputStreamPrivate;
+
+struct _GInputStream
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GInputStreamPrivate *priv;
+};
+
+struct _GInputStreamClass
+{
+  GObjectClass parent_class;
+
+  /* Sync ops: */
+
+  gssize   (* read_fn)      (GInputStream        *stream,
+                             void                *buffer,
+                             gsize                count,
+                             GCancellable        *cancellable,
+                             GError             **error);
+  gssize   (* skip)         (GInputStream        *stream,
+                             gsize                count,
+                             GCancellable        *cancellable,
+                             GError             **error);
+  gboolean (* close_fn)	    (GInputStream        *stream,
+                             GCancellable        *cancellable,
+                             GError             **error);
+
+  /* Async ops: (optional in derived classes) */
+  void     (* read_async)   (GInputStream        *stream,
+                             void                *buffer,
+                             gsize                count,
+                             int                  io_priority,
+                             GCancellable        *cancellable,
+                             GAsyncReadyCallback  callback,
+                             gpointer             user_data);
+  gssize   (* read_finish)  (GInputStream        *stream,
+                             GAsyncResult        *result,
+                             GError             **error);
+  void     (* skip_async)   (GInputStream        *stream,
+                             gsize                count,
+                             int                  io_priority,
+                             GCancellable        *cancellable,
+                             GAsyncReadyCallback  callback,
+                             gpointer             user_data);
+  gssize   (* skip_finish)  (GInputStream        *stream,
+                             GAsyncResult        *result,
+                             GError             **error);
+  void     (* close_async)  (GInputStream        *stream,
+                             int                  io_priority,
+                             GCancellable        *cancellable,
+                             GAsyncReadyCallback  callback,
+                             gpointer             user_data);
+  gboolean (* close_finish) (GInputStream        *stream,
+                             GAsyncResult        *result,
+                             GError             **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_input_stream_get_type      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gssize   g_input_stream_read          (GInputStream          *stream,
+				       void                  *buffer,
+				       gsize                  count,
+				       GCancellable          *cancellable,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_read_all      (GInputStream          *stream,
+				       void                  *buffer,
+				       gsize                  count,
+				       gsize                 *bytes_read,
+				       GCancellable          *cancellable,
+				       GError               **error);
+GLIB_AVAILABLE_IN_2_34
+GBytes  *g_input_stream_read_bytes    (GInputStream          *stream,
+				       gsize                  count,
+				       GCancellable          *cancellable,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_input_stream_skip          (GInputStream          *stream,
+				       gsize                  count,
+				       GCancellable          *cancellable,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_close         (GInputStream          *stream,
+				       GCancellable          *cancellable,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_input_stream_read_async    (GInputStream          *stream,
+				       void                  *buffer,
+				       gsize                  count,
+				       int                    io_priority,
+				       GCancellable          *cancellable,
+				       GAsyncReadyCallback    callback,
+				       gpointer               user_data);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_input_stream_read_finish   (GInputStream          *stream,
+				       GAsyncResult          *result,
+				       GError               **error);
+GLIB_AVAILABLE_IN_2_34
+void     g_input_stream_read_bytes_async  (GInputStream          *stream,
+					   gsize                  count,
+					   int                    io_priority,
+					   GCancellable          *cancellable,
+					   GAsyncReadyCallback    callback,
+					   gpointer               user_data);
+GLIB_AVAILABLE_IN_2_34
+GBytes  *g_input_stream_read_bytes_finish (GInputStream          *stream,
+					   GAsyncResult          *result,
+					   GError               **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_input_stream_skip_async    (GInputStream          *stream,
+				       gsize                  count,
+				       int                    io_priority,
+				       GCancellable          *cancellable,
+				       GAsyncReadyCallback    callback,
+				       gpointer               user_data);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_input_stream_skip_finish   (GInputStream          *stream,
+				       GAsyncResult          *result,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_input_stream_close_async   (GInputStream          *stream,
+				       int                    io_priority,
+				       GCancellable          *cancellable,
+				       GAsyncReadyCallback    callback,
+				       gpointer               user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_close_finish  (GInputStream          *stream,
+				       GAsyncResult          *result,
+				       GError               **error);
+
+/* For implementations: */
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_is_closed     (GInputStream          *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_has_pending   (GInputStream          *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_input_stream_set_pending   (GInputStream          *stream,
+				       GError               **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_input_stream_clear_pending (GInputStream          *stream);
+
+G_END_DECLS
+
+#endif /* __G_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gio.h b/dist/usr/include/glib-2.0/gio/gio.h
new file mode 100644
index 0000000..d27b911
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gio.h
@@ -0,0 +1,165 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_IO_H__
+#define __G_IO_H__
+
+#define __GIO_GIO_H_INSIDE__
+
+#include <gio/giotypes.h>
+
+#include <gio/gaction.h>
+#include <gio/gactiongroup.h>
+#include <gio/gactiongroupexporter.h>
+#include <gio/gactionmap.h>
+#include <gio/gappinfo.h>
+#include <gio/gapplication.h>
+#include <gio/gapplicationcommandline.h>
+#include <gio/gasyncinitable.h>
+#include <gio/gasyncresult.h>
+#include <gio/gbufferedinputstream.h>
+#include <gio/gbufferedoutputstream.h>
+#include <gio/gbytesicon.h>
+#include <gio/gcancellable.h>
+#include <gio/gcharsetconverter.h>
+#include <gio/gcontenttype.h>
+#include <gio/gconverter.h>
+#include <gio/gconverterinputstream.h>
+#include <gio/gconverteroutputstream.h>
+#include <gio/gcredentials.h>
+#include <gio/gdatainputstream.h>
+#include <gio/gdataoutputstream.h>
+#include <gio/gdbusaddress.h>
+#include <gio/gdbusauthobserver.h>
+#include <gio/gdbusconnection.h>
+#include <gio/gdbuserror.h>
+#include <gio/gdbusintrospection.h>
+#include <gio/gdbusmessage.h>
+#include <gio/gdbusmethodinvocation.h>
+#include <gio/gdbusnameowning.h>
+#include <gio/gdbusnamewatching.h>
+#include <gio/gdbusproxy.h>
+#include <gio/gdbusserver.h>
+#include <gio/gdbusutils.h>
+#include <gio/gdrive.h>
+#include <gio/gemblemedicon.h>
+#include <gio/gfileattribute.h>
+#include <gio/gfileenumerator.h>
+#include <gio/gfile.h>
+#include <gio/gfileicon.h>
+#include <gio/gfileinfo.h>
+#include <gio/gfileinputstream.h>
+#include <gio/gfileiostream.h>
+#include <gio/gfilemonitor.h>
+#include <gio/gfilenamecompleter.h>
+#include <gio/gfileoutputstream.h>
+#include <gio/gfilterinputstream.h>
+#include <gio/gfilteroutputstream.h>
+#include <gio/gicon.h>
+#include <gio/ginetaddress.h>
+#include <gio/ginetaddressmask.h>
+#include <gio/ginetsocketaddress.h>
+#include <gio/ginitable.h>
+#include <gio/ginputstream.h>
+#include <gio/gioenums.h>
+#include <gio/gioenumtypes.h>
+#include <gio/gioerror.h>
+#include <gio/giomodule.h>
+#include <gio/gioscheduler.h>
+#include <gio/giostream.h>
+#include <gio/gloadableicon.h>
+#include <gio/gmemoryinputstream.h>
+#include <gio/gmemoryoutputstream.h>
+#include <gio/gmount.h>
+#include <gio/gmountoperation.h>
+#include <gio/gnativevolumemonitor.h>
+#include <gio/gnetworkaddress.h>
+#include <gio/gnetworkmonitor.h>
+#include <gio/gnetworkservice.h>
+#include <gio/goutputstream.h>
+#include <gio/gpermission.h>
+#include <gio/gpollableinputstream.h>
+#include <gio/gpollableoutputstream.h>
+#include <gio/gpollableutils.h>
+#include <gio/gproxy.h>
+#include <gio/gproxyaddress.h>
+#include <gio/gproxyaddressenumerator.h>
+#include <gio/gproxyresolver.h>
+#include <gio/gresolver.h>
+#include <gio/gresource.h>
+#include <gio/gseekable.h>
+#include <gio/gsettingsschema.h>
+#include <gio/gsettings.h>
+#include <gio/gsimpleaction.h>
+#include <gio/gsimpleactiongroup.h>
+#include <gio/gsimpleasyncresult.h>
+#include <gio/gsimplepermission.h>
+#include <gio/gsocketaddressenumerator.h>
+#include <gio/gsocketaddress.h>
+#include <gio/gsocketclient.h>
+#include <gio/gsocketconnectable.h>
+#include <gio/gsocketconnection.h>
+#include <gio/gsocketcontrolmessage.h>
+#include <gio/gsocket.h>
+#include <gio/gsocketlistener.h>
+#include <gio/gsocketservice.h>
+#include <gio/gsrvtarget.h>
+#include <gio/gsimpleproxyresolver.h>
+#include <gio/gtask.h>
+#include <gio/gtcpconnection.h>
+#include <gio/gtcpwrapperconnection.h>
+#include <gio/gtestdbus.h>
+#include <gio/gthemedicon.h>
+#include <gio/gthreadedsocketservice.h>
+#include <gio/gtlsbackend.h>
+#include <gio/gtlscertificate.h>
+#include <gio/gtlsclientconnection.h>
+#include <gio/gtlsconnection.h>
+#include <gio/gtlsdatabase.h>
+#include <gio/gtlsfiledatabase.h>
+#include <gio/gtlsinteraction.h>
+#include <gio/gtlsserverconnection.h>
+#include <gio/gtlspassword.h>
+#include <gio/gvfs.h>
+#include <gio/gvolume.h>
+#include <gio/gvolumemonitor.h>
+#include <gio/gzlibcompressor.h>
+#include <gio/gzlibdecompressor.h>
+#include <gio/gdbusinterface.h>
+#include <gio/gdbusinterfaceskeleton.h>
+#include <gio/gdbusobject.h>
+#include <gio/gdbusobjectskeleton.h>
+#include <gio/gdbusobjectproxy.h>
+#include <gio/gdbusobjectmanager.h>
+#include <gio/gdbusobjectmanagerclient.h>
+#include <gio/gdbusobjectmanagerserver.h>
+#include <gio/gdbusactiongroup.h>
+#include <gio/gremoteactiongroup.h>
+#include <gio/gmenumodel.h>
+#include <gio/gmenu.h>
+#include <gio/gmenuexporter.h>
+#include <gio/gdbusmenumodel.h>
+
+#undef __GIO_GIO_H_INSIDE__
+
+#endif /* __G_IO_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/gioenums.h b/dist/usr/include/glib-2.0/gio/gioenums.h
new file mode 100644
index 0000000..9767226
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gioenums.h
@@ -0,0 +1,1671 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __GIO_ENUMS_H__
+#define __GIO_ENUMS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+
+/**
+ * GAppInfoCreateFlags:
+ * @G_APP_INFO_CREATE_NONE: No flags.
+ * @G_APP_INFO_CREATE_NEEDS_TERMINAL: Application opens in a terminal window.
+ * @G_APP_INFO_CREATE_SUPPORTS_URIS: Application supports URI arguments.
+ * @G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION: Application supports startup notification. Since 2.26
+ *
+ * Flags used when creating a #GAppInfo.
+ */
+typedef enum {
+  G_APP_INFO_CREATE_NONE                           = 0,         /*< nick=none >*/
+  G_APP_INFO_CREATE_NEEDS_TERMINAL                 = (1 << 0),  /*< nick=needs-terminal >*/
+  G_APP_INFO_CREATE_SUPPORTS_URIS                  = (1 << 1),  /*< nick=supports-uris >*/
+  G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION  = (1 << 2)   /*< nick=supports-startup-notification >*/
+} GAppInfoCreateFlags;
+
+/**
+ * GConverterFlags:
+ * @G_CONVERTER_NO_FLAGS: No flags.
+ * @G_CONVERTER_INPUT_AT_END: At end of input data
+ * @G_CONVERTER_FLUSH: Flush data
+ *
+ * Flags used when calling a g_converter_convert().
+ *
+ * Since: 2.24
+ */
+typedef enum {
+  G_CONVERTER_NO_FLAGS     = 0,         /*< nick=none >*/
+  G_CONVERTER_INPUT_AT_END = (1 << 0),  /*< nick=input-at-end >*/
+  G_CONVERTER_FLUSH        = (1 << 1)   /*< nick=flush >*/
+} GConverterFlags;
+
+/**
+ * GConverterResult:
+ * @G_CONVERTER_ERROR: There was an error during conversion.
+ * @G_CONVERTER_CONVERTED: Some data was consumed or produced
+ * @G_CONVERTER_FINISHED: The conversion is finished
+ * @G_CONVERTER_FLUSHED: Flushing is finished
+ *
+ * Results returned from g_converter_convert().
+ *
+ * Since: 2.24
+ */
+typedef enum {
+  G_CONVERTER_ERROR     = 0,  /*< nick=error >*/
+  G_CONVERTER_CONVERTED = 1,  /*< nick=converted >*/
+  G_CONVERTER_FINISHED  = 2,  /*< nick=finished >*/
+  G_CONVERTER_FLUSHED   = 3   /*< nick=flushed >*/
+} GConverterResult;
+
+
+/**
+ * GDataStreamByteOrder:
+ * @G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN: Selects Big Endian byte order.
+ * @G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN: Selects Little Endian byte order.
+ * @G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN: Selects endianness based on host machine's architecture.
+ *
+ * #GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
+ * across various machine architectures.
+ *
+ **/
+typedef enum {
+  G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN,
+  G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN,
+  G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN
+} GDataStreamByteOrder;
+
+
+/**
+ * GDataStreamNewlineType:
+ * @G_DATA_STREAM_NEWLINE_TYPE_LF: Selects "LF" line endings, common on most modern UNIX platforms.
+ * @G_DATA_STREAM_NEWLINE_TYPE_CR: Selects "CR" line endings.
+ * @G_DATA_STREAM_NEWLINE_TYPE_CR_LF: Selects "CR, LF" line ending, common on Microsoft Windows.
+ * @G_DATA_STREAM_NEWLINE_TYPE_ANY: Automatically try to handle any line ending type.
+ *
+ * #GDataStreamNewlineType is used when checking for or setting the line endings for a given file.
+ **/
+typedef enum {
+  G_DATA_STREAM_NEWLINE_TYPE_LF,
+  G_DATA_STREAM_NEWLINE_TYPE_CR,
+  G_DATA_STREAM_NEWLINE_TYPE_CR_LF,
+  G_DATA_STREAM_NEWLINE_TYPE_ANY
+} GDataStreamNewlineType;
+
+
+/**
+ * GFileAttributeType:
+ * @G_FILE_ATTRIBUTE_TYPE_INVALID: indicates an invalid or uninitalized type.
+ * @G_FILE_ATTRIBUTE_TYPE_STRING: a null terminated UTF8 string.
+ * @G_FILE_ATTRIBUTE_TYPE_BYTE_STRING: a zero terminated string of non-zero bytes.
+ * @G_FILE_ATTRIBUTE_TYPE_BOOLEAN: a boolean value.
+ * @G_FILE_ATTRIBUTE_TYPE_UINT32: an unsigned 4-byte/32-bit integer.
+ * @G_FILE_ATTRIBUTE_TYPE_INT32: a signed 4-byte/32-bit integer.
+ * @G_FILE_ATTRIBUTE_TYPE_UINT64: an unsigned 8-byte/64-bit integer.
+ * @G_FILE_ATTRIBUTE_TYPE_INT64: a signed 8-byte/64-bit integer.
+ * @G_FILE_ATTRIBUTE_TYPE_OBJECT: a #GObject.
+ * @G_FILE_ATTRIBUTE_TYPE_STRINGV: a %NULL terminated char **. Since 2.22
+ *
+ * The data types for file attributes.
+ **/
+typedef enum {
+  G_FILE_ATTRIBUTE_TYPE_INVALID = 0,
+  G_FILE_ATTRIBUTE_TYPE_STRING,
+  G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, /* zero terminated string of non-zero bytes */
+  G_FILE_ATTRIBUTE_TYPE_BOOLEAN,
+  G_FILE_ATTRIBUTE_TYPE_UINT32,
+  G_FILE_ATTRIBUTE_TYPE_INT32,
+  G_FILE_ATTRIBUTE_TYPE_UINT64,
+  G_FILE_ATTRIBUTE_TYPE_INT64,
+  G_FILE_ATTRIBUTE_TYPE_OBJECT,
+  G_FILE_ATTRIBUTE_TYPE_STRINGV
+} GFileAttributeType;
+
+
+/**
+ * GFileAttributeInfoFlags:
+ * @G_FILE_ATTRIBUTE_INFO_NONE: no flags set.
+ * @G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE: copy the attribute values when the file is copied.
+ * @G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED: copy the attribute values when the file is moved.
+ *
+ * Flags specifying the behaviour of an attribute.
+ **/
+typedef enum {
+  G_FILE_ATTRIBUTE_INFO_NONE            = 0,
+  G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE  = (1 << 0),
+  G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED = (1 << 1)
+} GFileAttributeInfoFlags;
+
+
+/**
+ * GFileAttributeStatus:
+ * @G_FILE_ATTRIBUTE_STATUS_UNSET: Attribute value is unset (empty).
+ * @G_FILE_ATTRIBUTE_STATUS_SET: Attribute value is set.
+ * @G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING: Indicates an error in setting the value.
+ *
+ * Used by g_file_set_attributes_from_info() when setting file attributes.
+ **/
+typedef enum {
+  G_FILE_ATTRIBUTE_STATUS_UNSET = 0,
+  G_FILE_ATTRIBUTE_STATUS_SET,
+  G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING
+} GFileAttributeStatus;
+
+
+/**
+ * GFileQueryInfoFlags:
+ * @G_FILE_QUERY_INFO_NONE: No flags set.
+ * @G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS: Don't follow symlinks.
+ *
+ * Flags used when querying a #GFileInfo.
+ */
+typedef enum {
+  G_FILE_QUERY_INFO_NONE              = 0,
+  G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS = (1 << 0)   /*< nick=nofollow-symlinks >*/
+} GFileQueryInfoFlags;
+
+
+/**
+ * GFileCreateFlags:
+ * @G_FILE_CREATE_NONE: No flags set.
+ * @G_FILE_CREATE_PRIVATE: Create a file that can only be
+ *    accessed by the current user.
+ * @G_FILE_CREATE_REPLACE_DESTINATION: Replace the destination
+ *    as if it didn't exist before. Don't try to keep any old
+ *    permissions, replace instead of following links. This
+ *    is generally useful if you're doing a "copy over"
+ *    rather than a "save new version of" replace operation.
+ *    You can think of it as "unlink destination" before
+ *    writing to it, although the implementation may not
+ *    be exactly like that. Since 2.20
+ *
+ * Flags used when an operation may create a file.
+ */
+typedef enum {
+  G_FILE_CREATE_NONE    = 0,
+  G_FILE_CREATE_PRIVATE = (1 << 0),
+  G_FILE_CREATE_REPLACE_DESTINATION = (1 << 1)
+} GFileCreateFlags;
+
+
+/**
+ * GMountMountFlags:
+ * @G_MOUNT_MOUNT_NONE: No flags set.
+ *
+ * Flags used when mounting a mount.
+ */
+typedef enum /*< flags >*/ {
+  G_MOUNT_MOUNT_NONE = 0
+} GMountMountFlags;
+
+
+/**
+ * GMountUnmountFlags:
+ * @G_MOUNT_UNMOUNT_NONE: No flags set.
+ * @G_MOUNT_UNMOUNT_FORCE: Unmount even if there are outstanding
+ *  file operations on the mount.
+ *
+ * Flags used when an unmounting a mount.
+ */
+typedef enum {
+  G_MOUNT_UNMOUNT_NONE  = 0,
+  G_MOUNT_UNMOUNT_FORCE = (1 << 0)
+} GMountUnmountFlags;
+
+/**
+ * GDriveStartFlags:
+ * @G_DRIVE_START_NONE: No flags set.
+ *
+ * Flags used when starting a drive.
+ *
+ * Since: 2.22
+ */
+typedef enum /*< flags >*/ {
+  G_DRIVE_START_NONE = 0
+} GDriveStartFlags;
+
+/**
+ * GDriveStartStopType:
+ * @G_DRIVE_START_STOP_TYPE_UNKNOWN: Unknown or drive doesn't support
+ *    start/stop.
+ * @G_DRIVE_START_STOP_TYPE_SHUTDOWN: The stop method will physically
+ *    shut down the drive and e.g. power down the port the drive is
+ *    attached to.
+ * @G_DRIVE_START_STOP_TYPE_NETWORK: The start/stop methods are used
+ *    for connecting/disconnect to the drive over the network.
+ * @G_DRIVE_START_STOP_TYPE_MULTIDISK: The start/stop methods will
+ *    assemble/disassemble a virtual drive from several physical
+ *    drives.
+ * @G_DRIVE_START_STOP_TYPE_PASSWORD: The start/stop methods will
+ *    unlock/lock the disk (for example using the ATA <quote>SECURITY
+ *    UNLOCK DEVICE</quote> command)
+ *
+ * Enumeration describing how a drive can be started/stopped.
+ *
+ * Since: 2.22
+ */
+typedef enum {
+  G_DRIVE_START_STOP_TYPE_UNKNOWN,
+  G_DRIVE_START_STOP_TYPE_SHUTDOWN,
+  G_DRIVE_START_STOP_TYPE_NETWORK,
+  G_DRIVE_START_STOP_TYPE_MULTIDISK,
+  G_DRIVE_START_STOP_TYPE_PASSWORD
+} GDriveStartStopType;
+
+/**
+ * GFileCopyFlags:
+ * @G_FILE_COPY_NONE: No flags set.
+ * @G_FILE_COPY_OVERWRITE: Overwrite any existing files
+ * @G_FILE_COPY_BACKUP: Make a backup of any existing files.
+ * @G_FILE_COPY_NOFOLLOW_SYMLINKS: Don't follow symlinks.
+ * @G_FILE_COPY_ALL_METADATA: Copy all file metadata instead of just default set used for copy (see #GFileInfo).
+ * @G_FILE_COPY_NO_FALLBACK_FOR_MOVE: Don't use copy and delete fallback if native move not supported.
+ * @G_FILE_COPY_TARGET_DEFAULT_PERMS: Leaves target file with default perms, instead of setting the source file perms.
+ *
+ * Flags used when copying or moving files.
+ */
+typedef enum {
+  G_FILE_COPY_NONE                 = 0,          /*< nick=none >*/
+  G_FILE_COPY_OVERWRITE            = (1 << 0),
+  G_FILE_COPY_BACKUP               = (1 << 1),
+  G_FILE_COPY_NOFOLLOW_SYMLINKS    = (1 << 2),
+  G_FILE_COPY_ALL_METADATA         = (1 << 3),
+  G_FILE_COPY_NO_FALLBACK_FOR_MOVE = (1 << 4),
+  G_FILE_COPY_TARGET_DEFAULT_PERMS = (1 << 5)
+} GFileCopyFlags;
+
+
+/**
+ * GFileMonitorFlags:
+ * @G_FILE_MONITOR_NONE: No flags set.
+ * @G_FILE_MONITOR_WATCH_MOUNTS: Watch for mount events.
+ * @G_FILE_MONITOR_SEND_MOVED: Pair DELETED and CREATED events caused
+ *   by file renames (moves) and send a single G_FILE_MONITOR_EVENT_MOVED
+ *   event instead (NB: not supported on all backends; the default
+ *   behaviour -without specifying this flag- is to send single DELETED
+ *   and CREATED events).
+ * @G_FILE_MONITOR_WATCH_HARD_LINKS: Watch for changes to the file made
+ *   via another hard link. Since 2.36.
+ *
+ * Flags used to set what a #GFileMonitor will watch for.
+ */
+typedef enum {
+  G_FILE_MONITOR_NONE             = 0,
+  G_FILE_MONITOR_WATCH_MOUNTS     = (1 << 0),
+  G_FILE_MONITOR_SEND_MOVED       = (1 << 1),
+  G_FILE_MONITOR_WATCH_HARD_LINKS = (1 << 2)
+} GFileMonitorFlags;
+
+
+/**
+ * GFileType:
+ * @G_FILE_TYPE_UNKNOWN: File's type is unknown.
+ * @G_FILE_TYPE_REGULAR: File handle represents a regular file.
+ * @G_FILE_TYPE_DIRECTORY: File handle represents a directory.
+ * @G_FILE_TYPE_SYMBOLIC_LINK: File handle represents a symbolic link
+ *    (Unix systems).
+ * @G_FILE_TYPE_SPECIAL: File is a "special" file, such as a socket, fifo,
+ *    block device, or character device.
+ * @G_FILE_TYPE_SHORTCUT: File is a shortcut (Windows systems).
+ * @G_FILE_TYPE_MOUNTABLE: File is a mountable location.
+ *
+ * Indicates the file's on-disk type.
+ **/
+typedef enum {
+  G_FILE_TYPE_UNKNOWN = 0,
+  G_FILE_TYPE_REGULAR,
+  G_FILE_TYPE_DIRECTORY,
+  G_FILE_TYPE_SYMBOLIC_LINK,
+  G_FILE_TYPE_SPECIAL, /* socket, fifo, blockdev, chardev */
+  G_FILE_TYPE_SHORTCUT,
+  G_FILE_TYPE_MOUNTABLE
+} GFileType;
+
+
+/**
+ * GFilesystemPreviewType:
+ * @G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS: Only preview files if user has explicitly requested it.
+ * @G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL: Preview files if user has requested preview of "local" files.
+ * @G_FILESYSTEM_PREVIEW_TYPE_NEVER: Never preview files.
+ *
+ * Indicates a hint from the file system whether files should be
+ * previewed in a file manager. Returned as the value of the key
+ * #G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.
+ **/
+typedef enum {
+  G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS = 0,
+  G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL,
+  G_FILESYSTEM_PREVIEW_TYPE_NEVER
+} GFilesystemPreviewType;
+
+
+/**
+ * GFileMonitorEvent:
+ * @G_FILE_MONITOR_EVENT_CHANGED: a file changed.
+ * @G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: a hint that this was probably the last change in a set of changes.
+ * @G_FILE_MONITOR_EVENT_DELETED: a file was deleted.
+ * @G_FILE_MONITOR_EVENT_CREATED: a file was created.
+ * @G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: a file attribute was changed.
+ * @G_FILE_MONITOR_EVENT_PRE_UNMOUNT: the file location will soon be unmounted.
+ * @G_FILE_MONITOR_EVENT_UNMOUNTED: the file location was unmounted.
+ * @G_FILE_MONITOR_EVENT_MOVED: the file was moved.
+ *
+ * Specifies what type of event a monitor event is.
+ **/
+typedef enum {
+  G_FILE_MONITOR_EVENT_CHANGED,
+  G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT,
+  G_FILE_MONITOR_EVENT_DELETED,
+  G_FILE_MONITOR_EVENT_CREATED,
+  G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED,
+  G_FILE_MONITOR_EVENT_PRE_UNMOUNT,
+  G_FILE_MONITOR_EVENT_UNMOUNTED,
+  G_FILE_MONITOR_EVENT_MOVED
+} GFileMonitorEvent;
+
+
+/* This enumeration conflicts with GIOError in giochannel.h. However,
+ * that is only used as a return value in some deprecated functions.
+ * So, we reuse the same prefix for the enumeration values, but call
+ * the actual enumeration (which is rarely used) GIOErrorEnum.
+ */
+/**
+ * GIOErrorEnum:
+ * @G_IO_ERROR_FAILED: Generic error condition for when any operation fails.
+ * @G_IO_ERROR_NOT_FOUND: File not found.
+ * @G_IO_ERROR_EXISTS: File already exists.
+ * @G_IO_ERROR_IS_DIRECTORY: File is a directory.
+ * @G_IO_ERROR_NOT_DIRECTORY: File is not a directory.
+ * @G_IO_ERROR_NOT_EMPTY: File is a directory that isn't empty.
+ * @G_IO_ERROR_NOT_REGULAR_FILE: File is not a regular file.
+ * @G_IO_ERROR_NOT_SYMBOLIC_LINK: File is not a symbolic link.
+ * @G_IO_ERROR_NOT_MOUNTABLE_FILE: File cannot be mounted.
+ * @G_IO_ERROR_FILENAME_TOO_LONG: Filename is too many characters.
+ * @G_IO_ERROR_INVALID_FILENAME: Filename is invalid or contains invalid characters.
+ * @G_IO_ERROR_TOO_MANY_LINKS: File contains too many symbolic links.
+ * @G_IO_ERROR_NO_SPACE: No space left on drive.
+ * @G_IO_ERROR_INVALID_ARGUMENT: Invalid argument.
+ * @G_IO_ERROR_PERMISSION_DENIED: Permission denied.
+ * @G_IO_ERROR_NOT_SUPPORTED: Operation not supported for the current backend.
+ * @G_IO_ERROR_NOT_MOUNTED: File isn't mounted.
+ * @G_IO_ERROR_ALREADY_MOUNTED: File is already mounted.
+ * @G_IO_ERROR_CLOSED: File was closed.
+ * @G_IO_ERROR_CANCELLED: Operation was cancelled. See #GCancellable.
+ * @G_IO_ERROR_PENDING: Operations are still pending.
+ * @G_IO_ERROR_READ_ONLY: File is read only.
+ * @G_IO_ERROR_CANT_CREATE_BACKUP: Backup couldn't be created.
+ * @G_IO_ERROR_WRONG_ETAG: File's Entity Tag was incorrect.
+ * @G_IO_ERROR_TIMED_OUT: Operation timed out.
+ * @G_IO_ERROR_WOULD_RECURSE: Operation would be recursive.
+ * @G_IO_ERROR_BUSY: File is busy.
+ * @G_IO_ERROR_WOULD_BLOCK: Operation would block.
+ * @G_IO_ERROR_HOST_NOT_FOUND: Host couldn't be found (remote operations).
+ * @G_IO_ERROR_WOULD_MERGE: Operation would merge files.
+ * @G_IO_ERROR_FAILED_HANDLED: Operation failed and a helper program has
+ *     already interacted with the user. Do not display any error dialog.
+ * @G_IO_ERROR_TOO_MANY_OPEN_FILES: The current process has too many files
+ *     open and can't open any more. Duplicate descriptors do count toward
+ *     this limit. Since 2.20
+ * @G_IO_ERROR_NOT_INITIALIZED: The object has not been initialized. Since 2.22
+ * @G_IO_ERROR_ADDRESS_IN_USE: The requested address is already in use. Since 2.22
+ * @G_IO_ERROR_PARTIAL_INPUT: Need more input to finish operation. Since 2.24
+ * @G_IO_ERROR_INVALID_DATA: The input data was invalid. Since 2.24
+ * @G_IO_ERROR_DBUS_ERROR: A remote object generated an error that
+ *     doesn't correspond to a locally registered #GError error
+ *     domain. Use g_dbus_error_get_remote_error() to extract the D-Bus
+ *     error name and g_dbus_error_strip_remote_error() to fix up the
+ *     message so it matches what was received on the wire. Since 2.26.
+ * @G_IO_ERROR_HOST_UNREACHABLE: Host unreachable. Since 2.26
+ * @G_IO_ERROR_NETWORK_UNREACHABLE: Network unreachable. Since 2.26
+ * @G_IO_ERROR_CONNECTION_REFUSED: Connection refused. Since 2.26
+ * @G_IO_ERROR_PROXY_FAILED: Connection to proxy server failed. Since 2.26
+ * @G_IO_ERROR_PROXY_AUTH_FAILED: Proxy authentication failed. Since 2.26
+ * @G_IO_ERROR_PROXY_NEED_AUTH: Proxy server needs authentication. Since 2.26
+ * @G_IO_ERROR_PROXY_NOT_ALLOWED: Proxy connection is not allowed by ruleset.
+ *     Since 2.26
+ * @G_IO_ERROR_BROKEN_PIPE: Broken pipe. Since 2.36
+ *
+ * Error codes returned by GIO functions.
+ *
+ **/
+typedef enum {
+  G_IO_ERROR_FAILED,
+  G_IO_ERROR_NOT_FOUND,
+  G_IO_ERROR_EXISTS,
+  G_IO_ERROR_IS_DIRECTORY,
+  G_IO_ERROR_NOT_DIRECTORY,
+  G_IO_ERROR_NOT_EMPTY,
+  G_IO_ERROR_NOT_REGULAR_FILE,
+  G_IO_ERROR_NOT_SYMBOLIC_LINK,
+  G_IO_ERROR_NOT_MOUNTABLE_FILE,
+  G_IO_ERROR_FILENAME_TOO_LONG,
+  G_IO_ERROR_INVALID_FILENAME,
+  G_IO_ERROR_TOO_MANY_LINKS,
+  G_IO_ERROR_NO_SPACE,
+  G_IO_ERROR_INVALID_ARGUMENT,
+  G_IO_ERROR_PERMISSION_DENIED,
+  G_IO_ERROR_NOT_SUPPORTED,
+  G_IO_ERROR_NOT_MOUNTED,
+  G_IO_ERROR_ALREADY_MOUNTED,
+  G_IO_ERROR_CLOSED,
+  G_IO_ERROR_CANCELLED,
+  G_IO_ERROR_PENDING,
+  G_IO_ERROR_READ_ONLY,
+  G_IO_ERROR_CANT_CREATE_BACKUP,
+  G_IO_ERROR_WRONG_ETAG,
+  G_IO_ERROR_TIMED_OUT,
+  G_IO_ERROR_WOULD_RECURSE,
+  G_IO_ERROR_BUSY,
+  G_IO_ERROR_WOULD_BLOCK,
+  G_IO_ERROR_HOST_NOT_FOUND,
+  G_IO_ERROR_WOULD_MERGE,
+  G_IO_ERROR_FAILED_HANDLED,
+  G_IO_ERROR_TOO_MANY_OPEN_FILES,
+  G_IO_ERROR_NOT_INITIALIZED,
+  G_IO_ERROR_ADDRESS_IN_USE,
+  G_IO_ERROR_PARTIAL_INPUT,
+  G_IO_ERROR_INVALID_DATA,
+  G_IO_ERROR_DBUS_ERROR,
+  G_IO_ERROR_HOST_UNREACHABLE,
+  G_IO_ERROR_NETWORK_UNREACHABLE,
+  G_IO_ERROR_CONNECTION_REFUSED,
+  G_IO_ERROR_PROXY_FAILED,
+  G_IO_ERROR_PROXY_AUTH_FAILED,
+  G_IO_ERROR_PROXY_NEED_AUTH,
+  G_IO_ERROR_PROXY_NOT_ALLOWED,
+  G_IO_ERROR_BROKEN_PIPE
+} GIOErrorEnum;
+
+
+/**
+ * GAskPasswordFlags:
+ * @G_ASK_PASSWORD_NEED_PASSWORD: operation requires a password.
+ * @G_ASK_PASSWORD_NEED_USERNAME: operation requires a username.
+ * @G_ASK_PASSWORD_NEED_DOMAIN: operation requires a domain.
+ * @G_ASK_PASSWORD_SAVING_SUPPORTED: operation supports saving settings.
+ * @G_ASK_PASSWORD_ANONYMOUS_SUPPORTED: operation supports anonymous users.
+ *
+ * #GAskPasswordFlags are used to request specific information from the
+ * user, or to notify the user of their choices in an authentication
+ * situation.
+ **/
+typedef enum {
+  G_ASK_PASSWORD_NEED_PASSWORD       = (1 << 0),
+  G_ASK_PASSWORD_NEED_USERNAME       = (1 << 1),
+  G_ASK_PASSWORD_NEED_DOMAIN         = (1 << 2),
+  G_ASK_PASSWORD_SAVING_SUPPORTED    = (1 << 3),
+  G_ASK_PASSWORD_ANONYMOUS_SUPPORTED = (1 << 4)
+} GAskPasswordFlags;
+
+
+/**
+ * GPasswordSave:
+ * @G_PASSWORD_SAVE_NEVER: never save a password.
+ * @G_PASSWORD_SAVE_FOR_SESSION: save a password for the session.
+ * @G_PASSWORD_SAVE_PERMANENTLY: save a password permanently.
+ *
+ * #GPasswordSave is used to indicate the lifespan of a saved password.
+ *
+ * #Gvfs stores passwords in the Gnome keyring when this flag allows it
+ * to, and later retrieves it again from there.
+ **/
+typedef enum {
+  G_PASSWORD_SAVE_NEVER,
+  G_PASSWORD_SAVE_FOR_SESSION,
+  G_PASSWORD_SAVE_PERMANENTLY
+} GPasswordSave;
+
+
+/**
+ * GMountOperationResult:
+ * @G_MOUNT_OPERATION_HANDLED: The request was fulfilled and the
+ *     user specified data is now available
+ * @G_MOUNT_OPERATION_ABORTED: The user requested the mount operation
+ *     to be aborted
+ * @G_MOUNT_OPERATION_UNHANDLED: The request was unhandled (i.e. not
+ *     implemented)
+ *
+ * #GMountOperationResult is returned as a result when a request for
+ * information is send by the mounting operation.
+ **/
+typedef enum {
+  G_MOUNT_OPERATION_HANDLED,
+  G_MOUNT_OPERATION_ABORTED,
+  G_MOUNT_OPERATION_UNHANDLED
+} GMountOperationResult;
+
+
+/**
+ * GOutputStreamSpliceFlags:
+ * @G_OUTPUT_STREAM_SPLICE_NONE: Do not close either stream.
+ * @G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE: Close the source stream after
+ *     the splice.
+ * @G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET: Close the target stream after
+ *     the splice.
+ *
+ * GOutputStreamSpliceFlags determine how streams should be spliced.
+ **/
+typedef enum {
+  G_OUTPUT_STREAM_SPLICE_NONE         = 0,
+  G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE = (1 << 0),
+  G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET = (1 << 1)
+} GOutputStreamSpliceFlags;
+
+
+/**
+ * GIOStreamSpliceFlags:
+ * @G_IO_STREAM_SPLICE_NONE: Do not close either stream.
+ * @G_IO_STREAM_SPLICE_CLOSE_STREAM1: Close the first stream after
+ *     the splice.
+ * @G_IO_STREAM_SPLICE_CLOSE_STREAM2: Close the second stream after
+ *     the splice.
+ * @G_IO_STREAM_SPLICE_WAIT_FOR_BOTH: Wait for both splice operations to finish
+ *     before calling the callback.
+ *
+ * GIOStreamSpliceFlags determine how streams should be spliced.
+ *
+ * Since: 2.28
+ **/
+typedef enum {
+  G_IO_STREAM_SPLICE_NONE          = 0,
+  G_IO_STREAM_SPLICE_CLOSE_STREAM1 = (1 << 0),
+  G_IO_STREAM_SPLICE_CLOSE_STREAM2 = (1 << 1),
+  G_IO_STREAM_SPLICE_WAIT_FOR_BOTH = (1 << 2)
+} GIOStreamSpliceFlags;
+
+/**
+ * GEmblemOrigin:
+ * @G_EMBLEM_ORIGIN_UNKNOWN: Emblem of unknown origin
+ * @G_EMBLEM_ORIGIN_DEVICE: Emblem adds device-specific information
+ * @G_EMBLEM_ORIGIN_LIVEMETADATA: Emblem depicts live metadata, such as "readonly"
+ * @G_EMBLEM_ORIGIN_TAG: Emblem comes from a user-defined tag, e.g. set by nautilus (in the future)
+ *
+ * GEmblemOrigin is used to add information about the origin of the emblem
+ * to #GEmblem.
+ *
+ * Since: 2.18
+ */
+typedef enum  {
+  G_EMBLEM_ORIGIN_UNKNOWN,
+  G_EMBLEM_ORIGIN_DEVICE,
+  G_EMBLEM_ORIGIN_LIVEMETADATA,
+  G_EMBLEM_ORIGIN_TAG
+} GEmblemOrigin;
+
+/**
+ * GResolverError:
+ * @G_RESOLVER_ERROR_NOT_FOUND: the requested name/address/service was not
+ *     found
+ * @G_RESOLVER_ERROR_TEMPORARY_FAILURE: the requested information could not
+ *     be looked up due to a network error or similar problem
+ * @G_RESOLVER_ERROR_INTERNAL: unknown error
+ *
+ * An error code used with %G_RESOLVER_ERROR in a #GError returned
+ * from a #GResolver routine.
+ *
+ * Since: 2.22
+ */
+typedef enum {
+  G_RESOLVER_ERROR_NOT_FOUND,
+  G_RESOLVER_ERROR_TEMPORARY_FAILURE,
+  G_RESOLVER_ERROR_INTERNAL
+} GResolverError;
+
+/**
+ * GResolverRecordType:
+ * @G_RESOLVER_RECORD_SRV: lookup DNS SRV records for a domain
+ * @G_RESOLVER_RECORD_MX: lookup DNS MX records for a domain
+ * @G_RESOLVER_RECORD_TXT: lookup DNS TXT records for a name
+ * @G_RESOLVER_RECORD_SOA: lookup DNS SOA records for a zone
+ * @G_RESOLVER_RECORD_NS: lookup DNS NS records for a domain
+ *
+ * The type of record that g_resolver_lookup_records() or
+ * g_resolver_lookup_records_async() should retrieve. The records are returned
+ * as lists of #GVariant tuples. Each record type has different values in
+ * the variant tuples returned.
+ *
+ * %G_RESOLVER_RECORD_SRV records are returned as variants with the signature
+ * '(qqqs)', containing a guint16 with the priority, a guint16 with the
+ * weight, a guint16 with the port, and a string of the hostname.
+ *
+ * %G_RESOLVER_RECORD_MX records are returned as variants with the signature
+ * '(qs)', representing a guint16 with the preference, and a string containing
+ * the mail exchanger hostname.
+ *
+ * %G_RESOLVER_RECORD_TXT records are returned as variants with the signature
+ * '(as)', representing an array of the strings in the text record.
+ *
+ * %G_RESOLVER_RECORD_SOA records are returned as variants with the signature
+ * '(ssuuuuu)', representing a string containing the primary name server, a
+ * string containing the administrator, the serial as a guint32, the refresh
+ * interval as guint32, the retry interval as a guint32, the expire timeout
+ * as a guint32, and the ttl as a guint32.
+ *
+ * %G_RESOLVER_RECORD_NS records are returned as variants with the signature
+ * '(s)', representing a string of the hostname of the name server.
+ *
+ * Since: 2.34
+ */
+typedef enum {
+  G_RESOLVER_RECORD_SRV = 1,
+  G_RESOLVER_RECORD_MX,
+  G_RESOLVER_RECORD_TXT,
+  G_RESOLVER_RECORD_SOA,
+  G_RESOLVER_RECORD_NS
+} GResolverRecordType;
+
+/**
+ * GResourceError:
+ * @G_RESOURCE_ERROR_NOT_FOUND: no file was found at the requested path
+ * @G_RESOURCE_ERROR_INTERNAL: unknown error
+ *
+ * An error code used with %G_RESOURCE_ERROR in a #GError returned
+ * from a #GResource routine.
+ *
+ * Since: 2.32
+ */
+typedef enum {
+  G_RESOURCE_ERROR_NOT_FOUND,
+  G_RESOURCE_ERROR_INTERNAL
+} GResourceError;
+
+/**
+ * GResourceFlags:
+ * @G_RESOURCE_FLAGS_NONE: No flags set.
+ * @G_RESOURCE_FLAGS_COMPRESSED: The file is compressed.
+ *
+ * GResourceFlags give information about a particular file inside a resource
+ * bundle.
+ * 
+ * Since: 2.32
+ **/
+typedef enum {
+  G_RESOURCE_FLAGS_NONE       = 0,
+  G_RESOURCE_FLAGS_COMPRESSED = (1<<0)
+} GResourceFlags;
+
+/**
+ * GResourceLookupFlags:
+ * @G_RESOURCE_LOOKUP_FLAGS_NONE: No flags set.
+ *
+ * GResourceLookupFlags determine how resource path lookups are handled.
+ * 
+ * Since: 2.32
+ **/
+typedef enum /*< flags >*/ {
+  G_RESOURCE_LOOKUP_FLAGS_NONE       = 0
+} GResourceLookupFlags;
+
+/**
+ * GSocketFamily:
+ * @G_SOCKET_FAMILY_INVALID: no address family
+ * @G_SOCKET_FAMILY_IPV4: the IPv4 family
+ * @G_SOCKET_FAMILY_IPV6: the IPv6 family
+ * @G_SOCKET_FAMILY_UNIX: the UNIX domain family
+ *
+ * The protocol family of a #GSocketAddress. (These values are
+ * identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX,
+ * if available.)
+ *
+ * Since: 2.22
+ */
+typedef enum {
+  G_SOCKET_FAMILY_INVALID,
+  G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX,
+  G_SOCKET_FAMILY_IPV4 = GLIB_SYSDEF_AF_INET,
+  G_SOCKET_FAMILY_IPV6 = GLIB_SYSDEF_AF_INET6
+} GSocketFamily;
+
+/**
+ * GSocketType:
+ * @G_SOCKET_TYPE_INVALID: Type unknown or wrong
+ * @G_SOCKET_TYPE_STREAM: Reliable connection-based byte streams (e.g. TCP).
+ * @G_SOCKET_TYPE_DATAGRAM: Connectionless, unreliable datagram passing.
+ *     (e.g. UDP)
+ * @G_SOCKET_TYPE_SEQPACKET: Reliable connection-based passing of datagrams
+ *     of fixed maximum length (e.g. SCTP).
+ *
+ * Flags used when creating a #GSocket. Some protocols may not implement
+ * all the socket types.
+ *
+ * Since: 2.22
+ */
+typedef enum
+{
+  G_SOCKET_TYPE_INVALID,
+  G_SOCKET_TYPE_STREAM,
+  G_SOCKET_TYPE_DATAGRAM,
+  G_SOCKET_TYPE_SEQPACKET
+} GSocketType;
+
+/**
+ * GSocketMsgFlags:
+ * @G_SOCKET_MSG_NONE: No flags.
+ * @G_SOCKET_MSG_OOB: Request to send/receive out of band data.
+ * @G_SOCKET_MSG_PEEK: Read data from the socket without removing it from
+ *     the queue.
+ * @G_SOCKET_MSG_DONTROUTE: Don't use a gateway to send out the packet,
+ *     only send to hosts on directly connected networks.
+ *
+ * Flags used in g_socket_receive_message() and g_socket_send_message().
+ * The flags listed in the enum are some commonly available flags, but the
+ * values used for them are the same as on the platform, and any other flags
+ * are passed in/out as is. So to use a platform specific flag, just include
+ * the right system header and pass in the flag.
+ *
+ * Since: 2.22
+ */
+typedef enum /*< flags >*/
+{
+  G_SOCKET_MSG_NONE,
+  G_SOCKET_MSG_OOB = GLIB_SYSDEF_MSG_OOB,
+  G_SOCKET_MSG_PEEK = GLIB_SYSDEF_MSG_PEEK,
+  G_SOCKET_MSG_DONTROUTE = GLIB_SYSDEF_MSG_DONTROUTE
+} GSocketMsgFlags;
+
+/**
+ * GSocketProtocol:
+ * @G_SOCKET_PROTOCOL_UNKNOWN: The protocol type is unknown
+ * @G_SOCKET_PROTOCOL_DEFAULT: The default protocol for the family/type
+ * @G_SOCKET_PROTOCOL_TCP: TCP over IP
+ * @G_SOCKET_PROTOCOL_UDP: UDP over IP
+ * @G_SOCKET_PROTOCOL_SCTP: SCTP over IP
+ *
+ * A protocol identifier is specified when creating a #GSocket, which is a
+ * family/type specific identifier, where 0 means the default protocol for
+ * the particular family/type.
+ *
+ * This enum contains a set of commonly available and used protocols. You
+ * can also pass any other identifiers handled by the platform in order to
+ * use protocols not listed here.
+ *
+ * Since: 2.22
+ */
+typedef enum {
+  G_SOCKET_PROTOCOL_UNKNOWN = -1,
+  G_SOCKET_PROTOCOL_DEFAULT = 0,
+  G_SOCKET_PROTOCOL_TCP     = 6,
+  G_SOCKET_PROTOCOL_UDP     = 17,
+  G_SOCKET_PROTOCOL_SCTP    = 132
+} GSocketProtocol;
+
+/**
+ * GZlibCompressorFormat:
+ * @G_ZLIB_COMPRESSOR_FORMAT_ZLIB: deflate compression with zlib header
+ * @G_ZLIB_COMPRESSOR_FORMAT_GZIP: gzip file format
+ * @G_ZLIB_COMPRESSOR_FORMAT_RAW: deflate compression with no header
+ *
+ * Used to select the type of data format to use for #GZlibDecompressor
+ * and #GZlibCompressor.
+ *
+ * Since: 2.24
+ */
+typedef enum {
+  G_ZLIB_COMPRESSOR_FORMAT_ZLIB,
+  G_ZLIB_COMPRESSOR_FORMAT_GZIP,
+  G_ZLIB_COMPRESSOR_FORMAT_RAW
+} GZlibCompressorFormat;
+
+/**
+ * GUnixSocketAddressType:
+ * @G_UNIX_SOCKET_ADDRESS_INVALID: invalid
+ * @G_UNIX_SOCKET_ADDRESS_ANONYMOUS: anonymous
+ * @G_UNIX_SOCKET_ADDRESS_PATH: a filesystem path
+ * @G_UNIX_SOCKET_ADDRESS_ABSTRACT: an abstract name
+ * @G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED: an abstract name, 0-padded
+ *   to the full length of a unix socket name
+ *
+ * The type of name used by a #GUnixSocketAddress.
+ * %G_UNIX_SOCKET_ADDRESS_PATH indicates a traditional unix domain
+ * socket bound to a filesystem path. %G_UNIX_SOCKET_ADDRESS_ANONYMOUS
+ * indicates a socket not bound to any name (eg, a client-side socket,
+ * or a socket created with socketpair()).
+ *
+ * For abstract sockets, there are two incompatible ways of naming
+ * them; the man pages suggest using the entire <literal>struct
+ * sockaddr_un</literal> as the name, padding the unused parts of the
+ * %sun_path field with zeroes; this corresponds to
+ * %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED. However, many programs
+ * instead just use a portion of %sun_path, and pass an appropriate
+ * smaller length to bind() or connect(). This is
+ * %G_UNIX_SOCKET_ADDRESS_ABSTRACT.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_UNIX_SOCKET_ADDRESS_INVALID,
+  G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
+  G_UNIX_SOCKET_ADDRESS_PATH,
+  G_UNIX_SOCKET_ADDRESS_ABSTRACT,
+  G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
+} GUnixSocketAddressType;
+
+/**
+ * GBusType:
+ * @G_BUS_TYPE_STARTER: An alias for the message bus that activated the process, if any.
+ * @G_BUS_TYPE_NONE: Not a message bus.
+ * @G_BUS_TYPE_SYSTEM: The system-wide message bus.
+ * @G_BUS_TYPE_SESSION: The login session message bus.
+ *
+ * An enumeration for well-known message buses.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_BUS_TYPE_STARTER = -1,
+  G_BUS_TYPE_NONE = 0,
+  G_BUS_TYPE_SYSTEM  = 1,
+  G_BUS_TYPE_SESSION = 2
+} GBusType;
+
+/**
+ * GBusNameOwnerFlags:
+ * @G_BUS_NAME_OWNER_FLAGS_NONE: No flags set.
+ * @G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT: Allow another message bus connection to claim the name.
+ * @G_BUS_NAME_OWNER_FLAGS_REPLACE: If another message bus connection owns the name and have
+ * specified #G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, then take the name from the other connection.
+ *
+ * Flags used in g_bus_own_name().
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_BUS_NAME_OWNER_FLAGS_NONE = 0,                    /*< nick=none >*/
+  G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT = (1<<0),  /*< nick=allow-replacement >*/
+  G_BUS_NAME_OWNER_FLAGS_REPLACE = (1<<1)            /*< nick=replace >*/
+} GBusNameOwnerFlags;
+
+/**
+ * GBusNameWatcherFlags:
+ * @G_BUS_NAME_WATCHER_FLAGS_NONE: No flags set.
+ * @G_BUS_NAME_WATCHER_FLAGS_AUTO_START: If no-one owns the name when
+ * beginning to watch the name, ask the bus to launch an owner for the
+ * name.
+ *
+ * Flags used in g_bus_watch_name().
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_BUS_NAME_WATCHER_FLAGS_NONE = 0,
+  G_BUS_NAME_WATCHER_FLAGS_AUTO_START = (1<<0)
+} GBusNameWatcherFlags;
+
+/**
+ * GDBusProxyFlags:
+ * @G_DBUS_PROXY_FLAGS_NONE: No flags set.
+ * @G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES: Don't load properties.
+ * @G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS: Don't connect to signals on the remote object.
+ * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START: If not set and the proxy if for a well-known name,
+ * then request the bus to launch an owner for the name if no-one owns the name. This flag can
+ * only be used in proxies for well-known names.
+ * @G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES: If set, the property value for any <emphasis>invalidated property</emphasis> will be (asynchronously) retrieved upon receiving the <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties">PropertiesChanged</ulink> D-Bus signal and the property will not cause emission of the #GDBusProxy::g-properties-changed signal. When the value is received the #GDBusProxy::g-properties-changed signal is emitted for the property along with the retrieved value. Since 2.32.
+ *
+ * Flags used when constructing an instance of a #GDBusProxy derived class.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_PROXY_FLAGS_NONE = 0,
+  G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = (1<<0),
+  G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1),
+  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2),
+  G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3)
+} GDBusProxyFlags;
+
+/**
+ * GDBusError:
+ * @G_DBUS_ERROR_FAILED:
+ * A generic error; "something went wrong" - see the error message for
+ * more.
+ * @G_DBUS_ERROR_NO_MEMORY:
+ * There was not enough memory to complete an operation.
+ * @G_DBUS_ERROR_SERVICE_UNKNOWN:
+ * The bus doesn't know how to launch a service to supply the bus name
+ * you wanted.
+ * @G_DBUS_ERROR_NAME_HAS_NO_OWNER:
+ * The bus name you referenced doesn't exist (i.e. no application owns
+ * it).
+ * @G_DBUS_ERROR_NO_REPLY:
+ * No reply to a message expecting one, usually means a timeout occurred.
+ * @G_DBUS_ERROR_IO_ERROR:
+ * Something went wrong reading or writing to a socket, for example.
+ * @G_DBUS_ERROR_BAD_ADDRESS:
+ * A D-Bus bus address was malformed.
+ * @G_DBUS_ERROR_NOT_SUPPORTED:
+ * Requested operation isn't supported (like ENOSYS on UNIX).
+ * @G_DBUS_ERROR_LIMITS_EXCEEDED:
+ * Some limited resource is exhausted.
+ * @G_DBUS_ERROR_ACCESS_DENIED:
+ * Security restrictions don't allow doing what you're trying to do.
+ * @G_DBUS_ERROR_AUTH_FAILED:
+ * Authentication didn't work.
+ * @G_DBUS_ERROR_NO_SERVER:
+ * Unable to connect to server (probably caused by ECONNREFUSED on a
+ * socket).
+ * @G_DBUS_ERROR_TIMEOUT:
+ * Certain timeout errors, possibly ETIMEDOUT on a socket.  Note that
+ * %G_DBUS_ERROR_NO_REPLY is used for message reply timeouts. Warning:
+ * this is confusingly-named given that %G_DBUS_ERROR_TIMED_OUT also
+ * exists. We can't fix it for compatibility reasons so just be
+ * careful.
+ * @G_DBUS_ERROR_NO_NETWORK:
+ * No network access (probably ENETUNREACH on a socket).
+ * @G_DBUS_ERROR_ADDRESS_IN_USE:
+ * Can't bind a socket since its address is in use (i.e. EADDRINUSE).
+ * @G_DBUS_ERROR_DISCONNECTED:
+ * The connection is disconnected and you're trying to use it.
+ * @G_DBUS_ERROR_INVALID_ARGS:
+ * Invalid arguments passed to a method call.
+ * @G_DBUS_ERROR_FILE_NOT_FOUND:
+ * Missing file.
+ * @G_DBUS_ERROR_FILE_EXISTS:
+ * Existing file and the operation you're using does not silently overwrite.
+ * @G_DBUS_ERROR_UNKNOWN_METHOD:
+ * Method name you invoked isn't known by the object you invoked it on.
+ * @G_DBUS_ERROR_TIMED_OUT:
+ * Certain timeout errors, e.g. while starting a service. Warning: this is
+ * confusingly-named given that %G_DBUS_ERROR_TIMEOUT also exists. We
+ * can't fix it for compatibility reasons so just be careful.
+ * @G_DBUS_ERROR_MATCH_RULE_NOT_FOUND:
+ * Tried to remove or modify a match rule that didn't exist.
+ * @G_DBUS_ERROR_MATCH_RULE_INVALID:
+ * The match rule isn't syntactically valid.
+ * @G_DBUS_ERROR_SPAWN_EXEC_FAILED:
+ * While starting a new process, the exec() call failed.
+ * @G_DBUS_ERROR_SPAWN_FORK_FAILED:
+ * While starting a new process, the fork() call failed.
+ * @G_DBUS_ERROR_SPAWN_CHILD_EXITED:
+ * While starting a new process, the child exited with a status code.
+ * @G_DBUS_ERROR_SPAWN_CHILD_SIGNALED:
+ * While starting a new process, the child exited on a signal.
+ * @G_DBUS_ERROR_SPAWN_FAILED:
+ * While starting a new process, something went wrong.
+ * @G_DBUS_ERROR_SPAWN_SETUP_FAILED:
+ * We failed to setup the environment correctly.
+ * @G_DBUS_ERROR_SPAWN_CONFIG_INVALID:
+ * We failed to setup the config parser correctly.
+ * @G_DBUS_ERROR_SPAWN_SERVICE_INVALID:
+ * Bus name was not valid.
+ * @G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND:
+ * Service file not found in system-services directory.
+ * @G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID:
+ * Permissions are incorrect on the setuid helper.
+ * @G_DBUS_ERROR_SPAWN_FILE_INVALID:
+ * Service file invalid (Name, User or Exec missing).
+ * @G_DBUS_ERROR_SPAWN_NO_MEMORY:
+ * Tried to get a UNIX process ID and it wasn't available.
+ * @G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN:
+ * Tried to get a UNIX process ID and it wasn't available.
+ * @G_DBUS_ERROR_INVALID_SIGNATURE:
+ * A type signature is not valid.
+ * @G_DBUS_ERROR_INVALID_FILE_CONTENT:
+ * A file contains invalid syntax or is otherwise broken.
+ * @G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
+ * Asked for SELinux security context and it wasn't available.
+ * @G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN:
+ * Asked for ADT audit data and it wasn't available.
+ * @G_DBUS_ERROR_OBJECT_PATH_IN_USE:
+ * There's already an object with the requested object path.
+ *
+ * Error codes for the %G_DBUS_ERROR error domain.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  /* Well-known errors in the org.freedesktop.DBus.Error namespace */
+  G_DBUS_ERROR_FAILED,                           /* org.freedesktop.DBus.Error.Failed */
+  G_DBUS_ERROR_NO_MEMORY,                        /* org.freedesktop.DBus.Error.NoMemory */
+  G_DBUS_ERROR_SERVICE_UNKNOWN,                  /* org.freedesktop.DBus.Error.ServiceUnknown */
+  G_DBUS_ERROR_NAME_HAS_NO_OWNER,                /* org.freedesktop.DBus.Error.NameHasNoOwner */
+  G_DBUS_ERROR_NO_REPLY,                         /* org.freedesktop.DBus.Error.NoReply */
+  G_DBUS_ERROR_IO_ERROR,                         /* org.freedesktop.DBus.Error.IOError */
+  G_DBUS_ERROR_BAD_ADDRESS,                      /* org.freedesktop.DBus.Error.BadAddress */
+  G_DBUS_ERROR_NOT_SUPPORTED,                    /* org.freedesktop.DBus.Error.NotSupported */
+  G_DBUS_ERROR_LIMITS_EXCEEDED,                  /* org.freedesktop.DBus.Error.LimitsExceeded */
+  G_DBUS_ERROR_ACCESS_DENIED,                    /* org.freedesktop.DBus.Error.AccessDenied */
+  G_DBUS_ERROR_AUTH_FAILED,                      /* org.freedesktop.DBus.Error.AuthFailed */
+  G_DBUS_ERROR_NO_SERVER,                        /* org.freedesktop.DBus.Error.NoServer */
+  G_DBUS_ERROR_TIMEOUT,                          /* org.freedesktop.DBus.Error.Timeout */
+  G_DBUS_ERROR_NO_NETWORK,                       /* org.freedesktop.DBus.Error.NoNetwork */
+  G_DBUS_ERROR_ADDRESS_IN_USE,                   /* org.freedesktop.DBus.Error.AddressInUse */
+  G_DBUS_ERROR_DISCONNECTED,                     /* org.freedesktop.DBus.Error.Disconnected */
+  G_DBUS_ERROR_INVALID_ARGS,                     /* org.freedesktop.DBus.Error.InvalidArgs */
+  G_DBUS_ERROR_FILE_NOT_FOUND,                   /* org.freedesktop.DBus.Error.FileNotFound */
+  G_DBUS_ERROR_FILE_EXISTS,                      /* org.freedesktop.DBus.Error.FileExists */
+  G_DBUS_ERROR_UNKNOWN_METHOD,                   /* org.freedesktop.DBus.Error.UnknownMethod */
+  G_DBUS_ERROR_TIMED_OUT,                        /* org.freedesktop.DBus.Error.TimedOut */
+  G_DBUS_ERROR_MATCH_RULE_NOT_FOUND,             /* org.freedesktop.DBus.Error.MatchRuleNotFound */
+  G_DBUS_ERROR_MATCH_RULE_INVALID,               /* org.freedesktop.DBus.Error.MatchRuleInvalid */
+  G_DBUS_ERROR_SPAWN_EXEC_FAILED,                /* org.freedesktop.DBus.Error.Spawn.ExecFailed */
+  G_DBUS_ERROR_SPAWN_FORK_FAILED,                /* org.freedesktop.DBus.Error.Spawn.ForkFailed */
+  G_DBUS_ERROR_SPAWN_CHILD_EXITED,               /* org.freedesktop.DBus.Error.Spawn.ChildExited */
+  G_DBUS_ERROR_SPAWN_CHILD_SIGNALED,             /* org.freedesktop.DBus.Error.Spawn.ChildSignaled */
+  G_DBUS_ERROR_SPAWN_FAILED,                     /* org.freedesktop.DBus.Error.Spawn.Failed */
+  G_DBUS_ERROR_SPAWN_SETUP_FAILED,               /* org.freedesktop.DBus.Error.Spawn.FailedToSetup */
+  G_DBUS_ERROR_SPAWN_CONFIG_INVALID,             /* org.freedesktop.DBus.Error.Spawn.ConfigInvalid */
+  G_DBUS_ERROR_SPAWN_SERVICE_INVALID,            /* org.freedesktop.DBus.Error.Spawn.ServiceNotValid */
+  G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND,          /* org.freedesktop.DBus.Error.Spawn.ServiceNotFound */
+  G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID,        /* org.freedesktop.DBus.Error.Spawn.PermissionsInvalid */
+  G_DBUS_ERROR_SPAWN_FILE_INVALID,               /* org.freedesktop.DBus.Error.Spawn.FileInvalid */
+  G_DBUS_ERROR_SPAWN_NO_MEMORY,                  /* org.freedesktop.DBus.Error.Spawn.NoMemory */
+  G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN,          /* org.freedesktop.DBus.Error.UnixProcessIdUnknown */
+  G_DBUS_ERROR_INVALID_SIGNATURE,                /* org.freedesktop.DBus.Error.InvalidSignature */
+  G_DBUS_ERROR_INVALID_FILE_CONTENT,             /* org.freedesktop.DBus.Error.InvalidFileContent */
+  G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN, /* org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown */
+  G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN,           /* org.freedesktop.DBus.Error.AdtAuditDataUnknown */
+  G_DBUS_ERROR_OBJECT_PATH_IN_USE                /* org.freedesktop.DBus.Error.ObjectPathInUse */
+} GDBusError;
+/* Remember to update g_dbus_error_quark() in gdbuserror.c if you extend this enumeration */
+
+/**
+ * GDBusConnectionFlags:
+ * @G_DBUS_CONNECTION_FLAGS_NONE: No flags set.
+ * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT: Perform authentication against server.
+ * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER: Perform authentication against client.
+ * @G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: When
+ * authenticating as a server, allow the anonymous authentication
+ * method.
+ * @G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION: Pass this flag if connecting to a peer that is a
+ * message bus. This means that the Hello() method will be invoked as part of the connection setup.
+ * @G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING: If set, processing of D-Bus messages is
+ * delayed until g_dbus_connection_start_message_processing() is called.
+ *
+ * Flags used when creating a new #GDBusConnection.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_CONNECTION_FLAGS_NONE = 0,
+  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT = (1<<0),
+  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER = (1<<1),
+  G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<2),
+  G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1<<3),
+  G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1<<4)
+} GDBusConnectionFlags;
+
+/**
+ * GDBusCapabilityFlags:
+ * @G_DBUS_CAPABILITY_FLAGS_NONE: No flags set.
+ * @G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING: The connection
+ * supports exchanging UNIX file descriptors with the remote peer.
+ *
+ * Capabilities negotiated with the remote peer.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_CAPABILITY_FLAGS_NONE = 0,
+  G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING = (1<<0)
+} GDBusCapabilityFlags;
+
+/**
+ * GDBusCallFlags:
+ * @G_DBUS_CALL_FLAGS_NONE: No flags set.
+ * @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch
+ * an owner for the destination name in response to this method
+ * invocation.
+ *
+ * Flags used in g_dbus_connection_call() and similar APIs.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_CALL_FLAGS_NONE = 0,
+  G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0)
+} GDBusCallFlags;
+/* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */
+
+/**
+ * GDBusMessageType:
+ * @G_DBUS_MESSAGE_TYPE_INVALID: Message is of invalid type.
+ * @G_DBUS_MESSAGE_TYPE_METHOD_CALL: Method call.
+ * @G_DBUS_MESSAGE_TYPE_METHOD_RETURN: Method reply.
+ * @G_DBUS_MESSAGE_TYPE_ERROR: Error reply.
+ * @G_DBUS_MESSAGE_TYPE_SIGNAL: Signal emission.
+ *
+ * Message types used in #GDBusMessage.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_MESSAGE_TYPE_INVALID,
+  G_DBUS_MESSAGE_TYPE_METHOD_CALL,
+  G_DBUS_MESSAGE_TYPE_METHOD_RETURN,
+  G_DBUS_MESSAGE_TYPE_ERROR,
+  G_DBUS_MESSAGE_TYPE_SIGNAL
+} GDBusMessageType;
+
+/**
+ * GDBusMessageFlags:
+ * @G_DBUS_MESSAGE_FLAGS_NONE: No flags set.
+ * @G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED: A reply is not expected.
+ * @G_DBUS_MESSAGE_FLAGS_NO_AUTO_START: The bus must not launch an
+ * owner for the destination name in response to this message.
+ *
+ * Message flags used in #GDBusMessage.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_MESSAGE_FLAGS_NONE = 0,
+  G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED = (1<<0),
+  G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1)
+} GDBusMessageFlags;
+
+/**
+ * GDBusMessageHeaderField:
+ * @G_DBUS_MESSAGE_HEADER_FIELD_INVALID: Not a valid header field.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_PATH: The object path.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE: The interface name.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_MEMBER: The method or signal name.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME: The name of the error that occurred.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL: The serial number the message is a reply to.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION: The name the message is intended for.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_SENDER: Unique name of the sender of the message (filled in by the bus).
+ * @G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE: The signature of the message body.
+ * @G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS: The number of UNIX file descriptors that accompany the message.
+ *
+ * Header fields used in #GDBusMessage.
+ *
+ * Since: 2.26
+ */
+typedef enum {
+  G_DBUS_MESSAGE_HEADER_FIELD_INVALID,
+  G_DBUS_MESSAGE_HEADER_FIELD_PATH,
+  G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE,
+  G_DBUS_MESSAGE_HEADER_FIELD_MEMBER,
+  G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME,
+  G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL,
+  G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION,
+  G_DBUS_MESSAGE_HEADER_FIELD_SENDER,
+  G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE,
+  G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS
+} GDBusMessageHeaderField;
+
+/**
+ * GDBusPropertyInfoFlags:
+ * @G_DBUS_PROPERTY_INFO_FLAGS_NONE: No flags set.
+ * @G_DBUS_PROPERTY_INFO_FLAGS_READABLE: Property is readable.
+ * @G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE: Property is writable.
+ *
+ * Flags describing the access control of a D-Bus property.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_PROPERTY_INFO_FLAGS_NONE = 0,
+  G_DBUS_PROPERTY_INFO_FLAGS_READABLE = (1<<0),
+  G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE = (1<<1)
+} GDBusPropertyInfoFlags;
+
+/**
+ * GDBusSubtreeFlags:
+ * @G_DBUS_SUBTREE_FLAGS_NONE: No flags set.
+ * @G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES: Method calls to objects not in the enumerated range
+ *                                                       will still be dispatched. This is useful if you want
+ *                                                       to dynamically spawn objects in the subtree.
+ *
+ * Flags passed to g_dbus_connection_register_subtree().
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_SUBTREE_FLAGS_NONE = 0,
+  G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES = (1<<0)
+} GDBusSubtreeFlags;
+
+/**
+ * GDBusServerFlags:
+ * @G_DBUS_SERVER_FLAGS_NONE: No flags set.
+ * @G_DBUS_SERVER_FLAGS_RUN_IN_THREAD: All #GDBusServer::new-connection
+ * signals will run in separated dedicated threads (see signal for
+ * details).
+ * @G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS: Allow the anonymous
+ * authentication method.
+ *
+ * Flags used when creating a #GDBusServer.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_SERVER_FLAGS_NONE = 0,
+  G_DBUS_SERVER_FLAGS_RUN_IN_THREAD = (1<<0),
+  G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<1)
+} GDBusServerFlags;
+
+/**
+ * GDBusSignalFlags:
+ * @G_DBUS_SIGNAL_FLAGS_NONE: No flags set.
+ * @G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch
+ * D-Bus call for this signal subscription.  This gives you more control
+ * over which match rules you add (but you must add them manually).
+ * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE: Match first arguments that
+ * contain a bus or interface name with the given namespace.
+ * @G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH: Match first arguments that
+ * contain an object path that is either equivalent to the given path,
+ * or one of the paths is a subpath of the other.
+ *
+ * Flags used when subscribing to signals via g_dbus_connection_signal_subscribe().
+ *
+ * Since: 2.26
+ */
+typedef enum /*< flags >*/
+{
+  G_DBUS_SIGNAL_FLAGS_NONE = 0,
+  G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE = (1<<0),
+  G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE = (1<<1),
+  G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH = (1<<2)
+} GDBusSignalFlags;
+
+/**
+ * GDBusSendMessageFlags:
+ * @G_DBUS_SEND_MESSAGE_FLAGS_NONE: No flags set.
+ * @G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL: Do not automatically
+ * assign a serial number from the #GDBusConnection object when
+ * sending a message.
+ *
+ * Flags used when sending #GDBusMessage<!-- -->s on a #GDBusConnection.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_SEND_MESSAGE_FLAGS_NONE = 0,
+  G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL = (1<<0)
+} GDBusSendMessageFlags;
+/* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */
+
+/**
+ * GCredentialsType:
+ * @G_CREDENTIALS_TYPE_INVALID: Indicates an invalid native credential type.
+ * @G_CREDENTIALS_TYPE_LINUX_UCRED: The native credentials type is a <type>struct ucred</type>.
+ * @G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED: The native credentials type is a <type>struct cmsgcred</type>.
+ * @G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED: The native credentials type is a <type>struct sockpeercred</type>. Added in 2.30.
+ *
+ * Enumeration describing different kinds of native credential types.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_CREDENTIALS_TYPE_INVALID,
+  G_CREDENTIALS_TYPE_LINUX_UCRED,
+  G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED,
+  G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED
+} GCredentialsType;
+
+/**
+ * GDBusMessageByteOrder:
+ * @G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN: The byte order is big endian.
+ * @G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN: The byte order is little endian.
+ *
+ * Enumeration used to describe the byte order of a D-Bus message.
+ *
+ * Since: 2.26
+ */
+typedef enum
+{
+  G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN    = 'B',
+  G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN = 'l'
+} GDBusMessageByteOrder;
+
+/**
+ * GApplicationFlags:
+ * @G_APPLICATION_FLAGS_NONE: Default
+ * @G_APPLICATION_IS_SERVICE: Run as a service. In this mode, registration
+ *      fails if the service is already running, and the application
+ *      will initially wait up to 10 seconds for an initial activation
+ *      message to arrive.
+ * @G_APPLICATION_IS_LAUNCHER: Don't try to become the primary instance.
+ * @G_APPLICATION_HANDLES_OPEN: This application handles opening files (in
+ *     the primary instance). Note that this flag only affects the default
+ *     implementation of local_command_line(), and has no effect if
+ *     %G_APPLICATION_HANDLES_COMMAND_LINE is given.
+ *     See g_application_run() for details.
+ * @G_APPLICATION_HANDLES_COMMAND_LINE: This application handles command line
+ *     arguments (in the primary instance). Note that this flag only affect
+ *     the default implementation of local_command_line().
+ *     See g_application_run() for details.
+ * @G_APPLICATION_SEND_ENVIRONMENT: Send the environment of the
+ *     launching process to the primary instance. Set this flag if your
+ *     application is expected to behave differently depending on certain
+ *     environment variables. For instance, an editor might be expected
+ *     to use the <envar>GIT_COMMITTER_NAME</envar> environment variable
+ *     when editing a git commit message. The environment is available
+ *     to the #GApplication::command-line signal handler, via
+ *     g_application_command_line_getenv().
+ * @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical
+ *     single-instance application negotiation, even if the application
+ *     ID is given.  The application neither attempts to become the
+ *     owner of the application ID nor does it check if an existing
+ *     owner already exists.  Everything occurs in the local process.
+ *     Since: 2.30.
+ *
+ * Flags used to define the behaviour of a #GApplication.
+ *
+ * Since: 2.28
+ **/
+typedef enum
+{
+  G_APPLICATION_FLAGS_NONE,
+  G_APPLICATION_IS_SERVICE  =          (1 << 0),
+  G_APPLICATION_IS_LAUNCHER =          (1 << 1),
+
+  G_APPLICATION_HANDLES_OPEN =         (1 << 2),
+  G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3),
+  G_APPLICATION_SEND_ENVIRONMENT    =  (1 << 4),
+
+  G_APPLICATION_NON_UNIQUE =           (1 << 5)
+} GApplicationFlags;
+
+/**
+ * GTlsError:
+ * @G_TLS_ERROR_UNAVAILABLE: No TLS provider is available
+ * @G_TLS_ERROR_MISC: Miscellaneous TLS error
+ * @G_TLS_ERROR_BAD_CERTIFICATE: A certificate could not be parsed
+ * @G_TLS_ERROR_NOT_TLS: The TLS handshake failed because the
+ *   peer does not seem to be a TLS server.
+ * @G_TLS_ERROR_HANDSHAKE: The TLS handshake failed because the
+ *   peer's certificate was not acceptable.
+ * @G_TLS_ERROR_CERTIFICATE_REQUIRED: The TLS handshake failed because
+ *   the server requested a client-side certificate, but none was
+ *   provided. See g_tls_connection_set_certificate().
+ * @G_TLS_ERROR_EOF: The TLS connection was closed without proper
+ *   notice, which may indicate an attack. See
+ *   g_tls_connection_set_require_close_notify().
+ *
+ * An error code used with %G_TLS_ERROR in a #GError returned from a
+ * TLS-related routine.
+ *
+ * Since: 2.28
+ */
+typedef enum {
+  G_TLS_ERROR_UNAVAILABLE,
+  G_TLS_ERROR_MISC,
+  G_TLS_ERROR_BAD_CERTIFICATE,
+  G_TLS_ERROR_NOT_TLS,
+  G_TLS_ERROR_HANDSHAKE,
+  G_TLS_ERROR_CERTIFICATE_REQUIRED,
+  G_TLS_ERROR_EOF
+} GTlsError;
+
+/**
+ * GTlsCertificateFlags:
+ * @G_TLS_CERTIFICATE_UNKNOWN_CA: The signing certificate authority is
+ *   not known.
+ * @G_TLS_CERTIFICATE_BAD_IDENTITY: The certificate does not match the
+ *   expected identity of the site that it was retrieved from.
+ * @G_TLS_CERTIFICATE_NOT_ACTIVATED: The certificate's activation time
+ *   is still in the future
+ * @G_TLS_CERTIFICATE_EXPIRED: The certificate has expired
+ * @G_TLS_CERTIFICATE_REVOKED: The certificate has been revoked
+ *   according to the #GTlsConnection's certificate revocation list.
+ * @G_TLS_CERTIFICATE_INSECURE: The certificate's algorithm is
+ *   considered insecure.
+ * @G_TLS_CERTIFICATE_GENERIC_ERROR: Some other error occurred validating
+ *   the certificate
+ * @G_TLS_CERTIFICATE_VALIDATE_ALL: the combination of all of the above
+ *   flags
+ *
+ * A set of flags describing TLS certification validation. This can be
+ * used to set which validation steps to perform (eg, with
+ * g_tls_client_connection_set_validation_flags()), or to describe why
+ * a particular certificate was rejected (eg, in
+ * #GTlsConnection::accept-certificate).
+ *
+ * Since: 2.28
+ */
+typedef enum {
+  G_TLS_CERTIFICATE_UNKNOWN_CA    = (1 << 0),
+  G_TLS_CERTIFICATE_BAD_IDENTITY  = (1 << 1),
+  G_TLS_CERTIFICATE_NOT_ACTIVATED = (1 << 2),
+  G_TLS_CERTIFICATE_EXPIRED       = (1 << 3),
+  G_TLS_CERTIFICATE_REVOKED       = (1 << 4),
+  G_TLS_CERTIFICATE_INSECURE      = (1 << 5),
+  G_TLS_CERTIFICATE_GENERIC_ERROR = (1 << 6),
+
+  G_TLS_CERTIFICATE_VALIDATE_ALL  = 0x007f
+} GTlsCertificateFlags;
+
+/**
+ * GTlsAuthenticationMode:
+ * @G_TLS_AUTHENTICATION_NONE: client authentication not required
+ * @G_TLS_AUTHENTICATION_REQUESTED: client authentication is requested
+ * @G_TLS_AUTHENTICATION_REQUIRED: client authentication is required
+ *
+ * The client authentication mode for a #GTlsServerConnection.
+ *
+ * Since: 2.28
+ */
+typedef enum {
+  G_TLS_AUTHENTICATION_NONE,
+  G_TLS_AUTHENTICATION_REQUESTED,
+  G_TLS_AUTHENTICATION_REQUIRED
+} GTlsAuthenticationMode;
+
+/**
+ * GTlsRehandshakeMode:
+ * @G_TLS_REHANDSHAKE_NEVER: Never allow rehandshaking
+ * @G_TLS_REHANDSHAKE_SAFELY: Allow safe rehandshaking only
+ * @G_TLS_REHANDSHAKE_UNSAFELY: Allow unsafe rehandshaking
+ *
+ * When to allow rehandshaking. See
+ * g_tls_connection_set_rehandshake_mode().
+ *
+ * Since: 2.28
+ */
+typedef enum {
+  G_TLS_REHANDSHAKE_NEVER,
+  G_TLS_REHANDSHAKE_SAFELY,
+  G_TLS_REHANDSHAKE_UNSAFELY
+} GTlsRehandshakeMode;
+
+/**
+ * GTlsPasswordFlags:
+ * @G_TLS_PASSWORD_NONE: No flags
+ * @G_TLS_PASSWORD_RETRY: The password was wrong, and the user should retry.
+ * @G_TLS_PASSWORD_MANY_TRIES: Hint to the user that the password has been
+ *    wrong many times, and the user may not have many chances left.
+ * @G_TLS_PASSWORD_FINAL_TRY: Hint to the user that this is the last try to get
+ *    this password right.
+ *
+ * Various flags for the password.
+ *
+ * Since: 2.30
+ */
+
+typedef enum _GTlsPasswordFlags
+{
+  G_TLS_PASSWORD_NONE = 0,
+  G_TLS_PASSWORD_RETRY = 1 << 1,
+  G_TLS_PASSWORD_MANY_TRIES = 1 << 2,
+  G_TLS_PASSWORD_FINAL_TRY = 1 << 3
+} GTlsPasswordFlags;
+
+/**
+ * GTlsInteractionResult:
+ * @G_TLS_INTERACTION_UNHANDLED: The interaction was unhandled (i.e. not
+ *     implemented).
+ * @G_TLS_INTERACTION_HANDLED: The interaction completed, and resulting data
+ *     is available.
+ * @G_TLS_INTERACTION_FAILED: The interaction has failed, or was cancelled.
+ *     and the operation should be aborted.
+ *
+ * #GTlsInteractionResult is returned by various functions in #GTlsInteraction
+ * when finishing an interaction request.
+ *
+ * Since: 2.30
+ */
+typedef enum {
+  G_TLS_INTERACTION_UNHANDLED,
+  G_TLS_INTERACTION_HANDLED,
+  G_TLS_INTERACTION_FAILED
+} GTlsInteractionResult;
+
+/**
+ * GDBusInterfaceSkeletonFlags:
+ * @G_DBUS_INTERFACE_SKELETON_FLAGS_NONE: No flags set.
+ * @G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD: Each method invocation is handled in
+ *   a thread dedicated to the invocation. This means that the method implementation can use blocking IO
+ *   without blocking any other part of the process. It also means that the method implementation must
+ *   use locking to access data structures used by other threads.
+ *
+ * Flags describing the behavior of a #GDBusInterfaceSkeleton instance.
+ *
+ * Since: 2.30
+ */
+typedef enum
+{
+  G_DBUS_INTERFACE_SKELETON_FLAGS_NONE = 0,
+  G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD = (1<<0)
+} GDBusInterfaceSkeletonFlags;
+
+/**
+ * GDBusObjectManagerClientFlags:
+ * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE: No flags set.
+ * @G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START: If not set and the
+ *   manager is for a well-known name, then request the bus to launch
+ *   an owner for the name if no-one owns the name. This flag can only
+ *   be used in managers for well-known names.
+ *
+ * Flags used when constructing a #GDBusObjectManagerClient.
+ *
+ * Since: 2.30
+ */
+typedef enum
+{
+  G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE = 0,
+  G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START = (1<<0)
+} GDBusObjectManagerClientFlags;
+
+/**
+ * GTlsDatabaseVerifyFlags:
+ * @G_TLS_DATABASE_VERIFY_NONE: No verification flags
+ *
+ * Flags for g_tls_database_verify_chain().
+ *
+ * Since: 2.30
+ */
+typedef enum /*< flags >*/ {
+  G_TLS_DATABASE_VERIFY_NONE = 0
+} GTlsDatabaseVerifyFlags;
+
+/**
+ * GTlsDatabaseLookupFlags:
+ * @G_TLS_DATABASE_LOOKUP_NONE: No lookup flags
+ * @G_TLS_DATABASE_LOOKUP_KEYPAIR: Restrict lookup to certificates that have
+ *     a private key.
+ *
+ * Flags for g_tls_database_lookup_certificate_handle(),
+ * g_tls_database_lookup_certificate_issuer(),
+ * and g_tls_database_lookup_certificates_issued_by().
+ *
+ * Since: 2.30
+ */
+typedef enum {
+  G_TLS_DATABASE_LOOKUP_NONE = 0,
+  G_TLS_DATABASE_LOOKUP_KEYPAIR = 1
+} GTlsDatabaseLookupFlags;
+
+/**
+ * GIOModuleScopeFlags:
+ * @G_IO_MODULE_SCOPE_NONE: No module scan flags
+ * @G_IO_MODULE_SCOPE_BLOCK_DUPLICATES: When using this scope to load or
+ *     scan modules, automatically block a modules which has the same base
+ *     basename as previously loaded module.
+ *
+ * Flags for use with g_io_module_scope_new().
+ *
+ * Since: 2.30
+ */
+typedef enum {
+  G_IO_MODULE_SCOPE_NONE,
+  G_IO_MODULE_SCOPE_BLOCK_DUPLICATES
+} GIOModuleScopeFlags;
+
+/**
+ * GSocketClientEvent:
+ * @G_SOCKET_CLIENT_RESOLVING: The client is doing a DNS lookup.
+ * @G_SOCKET_CLIENT_RESOLVED: The client has completed a DNS lookup.
+ * @G_SOCKET_CLIENT_CONNECTING: The client is connecting to a remote
+ *   host (either a proxy or the destination server).
+ * @G_SOCKET_CLIENT_CONNECTED: The client has connected to a remote
+ *   host.
+ * @G_SOCKET_CLIENT_PROXY_NEGOTIATING: The client is negotiating
+ *   with a proxy to connect to the destination server.
+ * @G_SOCKET_CLIENT_PROXY_NEGOTIATED: The client has negotiated
+ *   with the proxy server.
+ * @G_SOCKET_CLIENT_TLS_HANDSHAKING: The client is performing a
+ *   TLS handshake.
+ * @G_SOCKET_CLIENT_TLS_HANDSHAKED: The client has performed a
+ *   TLS handshake.
+ * @G_SOCKET_CLIENT_COMPLETE: The client is done with a particular
+ *   #GSocketConnectable.
+ *
+ * Describes an event occurring on a #GSocketClient. See the
+ * #GSocketClient::event signal for more details.
+ *
+ * Additional values may be added to this type in the future.
+ *
+ * Since: 2.32
+ */
+typedef enum {
+  G_SOCKET_CLIENT_RESOLVING,
+  G_SOCKET_CLIENT_RESOLVED,
+  G_SOCKET_CLIENT_CONNECTING,
+  G_SOCKET_CLIENT_CONNECTED,
+  G_SOCKET_CLIENT_PROXY_NEGOTIATING,
+  G_SOCKET_CLIENT_PROXY_NEGOTIATED,
+  G_SOCKET_CLIENT_TLS_HANDSHAKING,
+  G_SOCKET_CLIENT_TLS_HANDSHAKED,
+  G_SOCKET_CLIENT_COMPLETE
+} GSocketClientEvent;
+
+/**
+ * GTestDBusFlags:
+ * @G_TEST_DBUS_NONE: No flags.
+ *
+ * Flags to define future #GTestDBus behaviour.
+ *
+ * Since: 2.34
+ */
+typedef enum /*< flags >*/ {
+  G_TEST_DBUS_NONE = 0
+} GTestDBusFlags;
+
+G_END_DECLS
+
+#endif /* __GIO_ENUMS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gioenumtypes.h b/dist/usr/include/glib-2.0/gio/gioenumtypes.h
new file mode 100644
index 0000000..f36bdba
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gioenumtypes.h
@@ -0,0 +1,159 @@
+
+/* Generated data (by glib-mkenums) */
+
+#ifndef __GIO_ENUM_TYPES_H__
+#define __GIO_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* enumerations from "gioenums.h" */
+GLIB_AVAILABLE_IN_ALL GType g_app_info_create_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_APP_INFO_CREATE_FLAGS (g_app_info_create_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_converter_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_CONVERTER_FLAGS (g_converter_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_converter_result_get_type (void) G_GNUC_CONST;
+#define G_TYPE_CONVERTER_RESULT (g_converter_result_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_data_stream_byte_order_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DATA_STREAM_BYTE_ORDER (g_data_stream_byte_order_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_data_stream_newline_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DATA_STREAM_NEWLINE_TYPE (g_data_stream_newline_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_attribute_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_ATTRIBUTE_TYPE (g_file_attribute_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_attribute_info_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_ATTRIBUTE_INFO_FLAGS (g_file_attribute_info_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_attribute_status_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_ATTRIBUTE_STATUS (g_file_attribute_status_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_query_info_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_QUERY_INFO_FLAGS (g_file_query_info_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_create_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_CREATE_FLAGS (g_file_create_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_mount_mount_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_MOUNT_MOUNT_FLAGS (g_mount_mount_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_mount_unmount_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_MOUNT_UNMOUNT_FLAGS (g_mount_unmount_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_drive_start_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DRIVE_START_FLAGS (g_drive_start_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_drive_start_stop_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DRIVE_START_STOP_TYPE (g_drive_start_stop_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_copy_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_COPY_FLAGS (g_file_copy_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_monitor_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_MONITOR_FLAGS (g_file_monitor_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_TYPE (g_file_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_filesystem_preview_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILESYSTEM_PREVIEW_TYPE (g_filesystem_preview_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_file_monitor_event_get_type (void) G_GNUC_CONST;
+#define G_TYPE_FILE_MONITOR_EVENT (g_file_monitor_event_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_io_error_enum_get_type (void) G_GNUC_CONST;
+#define G_TYPE_IO_ERROR_ENUM (g_io_error_enum_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_ask_password_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_ASK_PASSWORD_FLAGS (g_ask_password_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_password_save_get_type (void) G_GNUC_CONST;
+#define G_TYPE_PASSWORD_SAVE (g_password_save_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_mount_operation_result_get_type (void) G_GNUC_CONST;
+#define G_TYPE_MOUNT_OPERATION_RESULT (g_mount_operation_result_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_output_stream_splice_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_OUTPUT_STREAM_SPLICE_FLAGS (g_output_stream_splice_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_io_stream_splice_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_IO_STREAM_SPLICE_FLAGS (g_io_stream_splice_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_emblem_origin_get_type (void) G_GNUC_CONST;
+#define G_TYPE_EMBLEM_ORIGIN (g_emblem_origin_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_resolver_error_get_type (void) G_GNUC_CONST;
+#define G_TYPE_RESOLVER_ERROR (g_resolver_error_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_resolver_record_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_RESOLVER_RECORD_TYPE (g_resolver_record_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_resource_error_get_type (void) G_GNUC_CONST;
+#define G_TYPE_RESOURCE_ERROR (g_resource_error_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_resource_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_RESOURCE_FLAGS (g_resource_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_resource_lookup_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_RESOURCE_LOOKUP_FLAGS (g_resource_lookup_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_socket_family_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SOCKET_FAMILY (g_socket_family_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_socket_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SOCKET_TYPE (g_socket_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_socket_msg_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SOCKET_MSG_FLAGS (g_socket_msg_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_socket_protocol_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SOCKET_PROTOCOL (g_socket_protocol_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_zlib_compressor_format_get_type (void) G_GNUC_CONST;
+#define G_TYPE_ZLIB_COMPRESSOR_FORMAT (g_zlib_compressor_format_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_unix_socket_address_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_UNIX_SOCKET_ADDRESS_TYPE (g_unix_socket_address_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_bus_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_BUS_TYPE (g_bus_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_bus_name_owner_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_BUS_NAME_OWNER_FLAGS (g_bus_name_owner_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_bus_name_watcher_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_BUS_NAME_WATCHER_FLAGS (g_bus_name_watcher_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_proxy_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_PROXY_FLAGS (g_dbus_proxy_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_error_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_ERROR (g_dbus_error_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_connection_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_CONNECTION_FLAGS (g_dbus_connection_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_capability_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_CAPABILITY_FLAGS (g_dbus_capability_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_call_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_CALL_FLAGS (g_dbus_call_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_message_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_MESSAGE_TYPE (g_dbus_message_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_message_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_MESSAGE_FLAGS (g_dbus_message_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_message_header_field_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_MESSAGE_HEADER_FIELD (g_dbus_message_header_field_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_property_info_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_PROPERTY_INFO_FLAGS (g_dbus_property_info_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_subtree_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_SUBTREE_FLAGS (g_dbus_subtree_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_server_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_SERVER_FLAGS (g_dbus_server_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_signal_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_SIGNAL_FLAGS (g_dbus_signal_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_send_message_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_SEND_MESSAGE_FLAGS (g_dbus_send_message_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_credentials_type_get_type (void) G_GNUC_CONST;
+#define G_TYPE_CREDENTIALS_TYPE (g_credentials_type_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_message_byte_order_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_MESSAGE_BYTE_ORDER (g_dbus_message_byte_order_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_application_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_APPLICATION_FLAGS (g_application_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_error_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_ERROR (g_tls_error_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_certificate_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_CERTIFICATE_FLAGS (g_tls_certificate_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_authentication_mode_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_AUTHENTICATION_MODE (g_tls_authentication_mode_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_rehandshake_mode_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_REHANDSHAKE_MODE (g_tls_rehandshake_mode_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_password_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_PASSWORD_FLAGS (g_tls_password_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_interaction_result_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_INTERACTION_RESULT (g_tls_interaction_result_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_interface_skeleton_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_INTERFACE_SKELETON_FLAGS (g_dbus_interface_skeleton_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_dbus_object_manager_client_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_DBUS_OBJECT_MANAGER_CLIENT_FLAGS (g_dbus_object_manager_client_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_database_verify_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_DATABASE_VERIFY_FLAGS (g_tls_database_verify_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_tls_database_lookup_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TLS_DATABASE_LOOKUP_FLAGS (g_tls_database_lookup_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_io_module_scope_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_IO_MODULE_SCOPE_FLAGS (g_io_module_scope_flags_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_socket_client_event_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SOCKET_CLIENT_EVENT (g_socket_client_event_get_type ())
+GLIB_AVAILABLE_IN_ALL GType g_test_dbus_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_TEST_DBUS_FLAGS (g_test_dbus_flags_get_type ())
+
+/* enumerations from "gsettings.h" */
+GLIB_AVAILABLE_IN_ALL GType g_settings_bind_flags_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SETTINGS_BIND_FLAGS (g_settings_bind_flags_get_type ())
+G_END_DECLS
+
+#endif /* __GIO_ENUM_TYPES_H__ */
+
+/* Generated data ends here */
+
diff --git a/dist/usr/include/glib-2.0/gio/gioerror.h b/dist/usr/include/glib-2.0/gio/gioerror.h
new file mode 100644
index 0000000..ed23df4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gioerror.h
@@ -0,0 +1,55 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_IO_ERROR_H__
+#define __G_IO_ERROR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <glib.h>
+#include <gio/gioenums.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_IO_ERROR:
+ *
+ * Error domain for GIO. Errors in this domain will be from the #GIOErrorEnum enumeration.
+ * See #GError for more information on error domains.
+ **/
+#define G_IO_ERROR g_io_error_quark()
+
+GLIB_AVAILABLE_IN_ALL
+GQuark       g_io_error_quark      (void);
+GLIB_AVAILABLE_IN_ALL
+GIOErrorEnum g_io_error_from_errno (gint err_no);
+
+#ifdef G_OS_WIN32
+GLIB_AVAILABLE_IN_ALL
+GIOErrorEnum g_io_error_from_win32_error (gint error_code);
+#endif
+
+G_END_DECLS
+
+#endif /* __G_IO_ERROR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/giomodule.h b/dist/usr/include/glib-2.0/gio/giomodule.h
new file mode 100644
index 0000000..b0aedeb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/giomodule.h
@@ -0,0 +1,167 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_IO_MODULE_H__
+#define __G_IO_MODULE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+#include <gmodule.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GIOModuleScope GIOModuleScope;
+
+GLIB_AVAILABLE_IN_2_30
+GIOModuleScope *   g_io_module_scope_new     (GIOModuleScopeFlags  flags);
+GLIB_AVAILABLE_IN_2_30
+void               g_io_module_scope_free    (GIOModuleScope      *scope);
+GLIB_AVAILABLE_IN_2_30
+void               g_io_module_scope_block   (GIOModuleScope      *scope,
+                                              const gchar         *basename);
+
+#define G_IO_TYPE_MODULE         (g_io_module_get_type ())
+#define G_IO_MODULE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_IO_TYPE_MODULE, GIOModule))
+#define G_IO_MODULE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_IO_TYPE_MODULE, GIOModuleClass))
+#define G_IO_IS_MODULE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_IO_TYPE_MODULE))
+#define G_IO_IS_MODULE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_IO_TYPE_MODULE))
+#define G_IO_MODULE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_IO_TYPE_MODULE, GIOModuleClass))
+
+/**
+ * GIOModule:
+ *
+ * Opaque module base class for extending GIO.
+ **/
+typedef struct _GIOModuleClass GIOModuleClass;
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_io_module_get_type                       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GIOModule         *g_io_module_new                            (const gchar       *filename);
+
+GLIB_AVAILABLE_IN_ALL
+void               g_io_modules_scan_all_in_directory         (const char        *dirname);
+GLIB_AVAILABLE_IN_ALL
+GList             *g_io_modules_load_all_in_directory         (const gchar       *dirname);
+
+GLIB_AVAILABLE_IN_2_30
+void               g_io_modules_scan_all_in_directory_with_scope   (const gchar       *dirname,
+                                                                    GIOModuleScope    *scope);
+GLIB_AVAILABLE_IN_2_30
+GList             *g_io_modules_load_all_in_directory_with_scope   (const gchar       *dirname,
+                                                                    GIOModuleScope    *scope);
+
+GLIB_AVAILABLE_IN_ALL
+GIOExtensionPoint *g_io_extension_point_register              (const char        *name);
+GLIB_AVAILABLE_IN_ALL
+GIOExtensionPoint *g_io_extension_point_lookup                (const char        *name);
+GLIB_AVAILABLE_IN_ALL
+void               g_io_extension_point_set_required_type     (GIOExtensionPoint *extension_point,
+							       GType              type);
+GLIB_AVAILABLE_IN_ALL
+GType              g_io_extension_point_get_required_type     (GIOExtensionPoint *extension_point);
+GLIB_AVAILABLE_IN_ALL
+GList             *g_io_extension_point_get_extensions        (GIOExtensionPoint *extension_point);
+GLIB_AVAILABLE_IN_ALL
+GIOExtension *     g_io_extension_point_get_extension_by_name (GIOExtensionPoint *extension_point,
+							       const char        *name);
+GLIB_AVAILABLE_IN_ALL
+GIOExtension *     g_io_extension_point_implement             (const char        *extension_point_name,
+							       GType              type,
+							       const char        *extension_name,
+							       gint               priority);
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_io_extension_get_type                    (GIOExtension      *extension);
+GLIB_AVAILABLE_IN_ALL
+const char *       g_io_extension_get_name                    (GIOExtension      *extension);
+GLIB_AVAILABLE_IN_ALL
+gint               g_io_extension_get_priority                (GIOExtension      *extension);
+GLIB_AVAILABLE_IN_ALL
+GTypeClass*        g_io_extension_ref_class                   (GIOExtension      *extension);
+
+
+/* API for the modules to implement */
+
+/**
+ * g_io_module_load:
+ * @module: a #GIOModule.
+ *
+ * Required API for GIO modules to implement.
+ * This function is ran after the module has been loaded into GIO,
+ * to initialize the module.
+ **/
+GLIB_AVAILABLE_IN_ALL
+void   g_io_module_load   (GIOModule *module);
+
+/**
+ * g_io_module_unload:
+ * @module: a #GIOModule.
+ *
+ * Required API for GIO modules to implement.
+ * This function is ran when the module is being unloaded from GIO,
+ * to finalize the module.
+ **/
+GLIB_AVAILABLE_IN_ALL
+void   g_io_module_unload (GIOModule *module);
+
+/**
+ * g_io_module_query:
+ *
+ * Optional API for GIO modules to implement.
+ *
+ * Should return a list of all the extension points that may be
+ * implemented in this module.
+ *
+ * This method will not be called in normal use, however it may be
+ * called when probing existing modules and recording which extension
+ * points that this model is used for. This means we won't have to
+ * load and initialze this module unless its needed.
+ *
+ * If this function is not implemented by the module the module will
+ * always be loaded, initialized and then unloaded on application startup
+ * so that it can register its extension points during init.
+ *
+ * Note that a module need not actually implement all the extension points
+ * that g_io_module_query returns, since the exact list of extension may
+ * depend on runtime issues. However all extension points actually implemented
+ * must be returned by g_io_module_query() (if defined).
+ *
+ * When installing a module that implements g_io_module_query you must
+ * run gio-querymodules in order to build the cache files required for
+ * lazy loading.
+ *
+ * Returns: (transfer full): A %NULL-terminated array of strings, listing the supported
+ *     extension points of the module. The array must be suitable for
+ *     freeing with g_strfreev().
+ *
+ * Since: 2.24
+ **/
+GLIB_AVAILABLE_IN_ALL
+char **g_io_module_query (void);
+
+G_END_DECLS
+
+#endif /* __G_IO_MODULE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gioscheduler.h b/dist/usr/include/glib-2.0/gio/gioscheduler.h
new file mode 100644
index 0000000..c044b82
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gioscheduler.h
@@ -0,0 +1,56 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_IO_SCHEDULER_H__
+#define __G_IO_SCHEDULER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+
+GLIB_DEPRECATED_IN_2_36_FOR ("GThreadPool or g_task_run_in_thread")
+void     g_io_scheduler_push_job                   (GIOSchedulerJobFunc  job_func,
+						    gpointer             user_data,
+						    GDestroyNotify       notify,
+						    gint                 io_priority,
+						    GCancellable        *cancellable);
+GLIB_DEPRECATED_IN_2_36
+void     g_io_scheduler_cancel_all_jobs            (void);
+GLIB_DEPRECATED_IN_2_36_FOR (g_main_context_invoke)
+gboolean g_io_scheduler_job_send_to_mainloop       (GIOSchedulerJob     *job,
+						    GSourceFunc          func,
+						    gpointer             user_data,
+						    GDestroyNotify       notify);
+GLIB_DEPRECATED_IN_2_36_FOR (g_main_context_invoke)
+void     g_io_scheduler_job_send_to_mainloop_async (GIOSchedulerJob     *job,
+						    GSourceFunc          func,
+						    gpointer             user_data,
+						    GDestroyNotify       notify);
+
+G_END_DECLS
+
+#endif /* __G_IO_SCHEDULER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/giostream.h b/dist/usr/include/glib-2.0/gio/giostream.h
new file mode 100644
index 0000000..561b0e9
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/giostream.h
@@ -0,0 +1,135 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2008, 2009 Codethink Limited
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * This program 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 licence or (at
+ * your option) any later version.
+ *
+ * See the included COPYING file for more information.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_IO_STREAM_H__
+#define __G_IO_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/ginputstream.h>
+#include <gio/goutputstream.h>
+#include <gio/gcancellable.h>
+#include <gio/gioerror.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_IO_STREAM         (g_io_stream_get_type ())
+#define G_IO_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_IO_STREAM, GIOStream))
+#define G_IO_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_IO_STREAM, GIOStreamClass))
+#define G_IS_IO_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_IO_STREAM))
+#define G_IS_IO_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_IO_STREAM))
+#define G_IO_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_IO_STREAM, GIOStreamClass))
+
+typedef struct _GIOStreamPrivate                            GIOStreamPrivate;
+typedef struct _GIOStreamClass                              GIOStreamClass;
+
+/**
+ * GIOStream:
+ *
+ * Base class for read-write streams.
+ **/
+struct _GIOStream
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GIOStreamPrivate *priv;
+};
+
+struct _GIOStreamClass
+{
+  GObjectClass parent_class;
+
+  GInputStream *  (*get_input_stream)  (GIOStream *stream);
+  GOutputStream * (*get_output_stream) (GIOStream *stream);
+
+  gboolean (* close_fn)	    (GIOStream           *stream,
+                             GCancellable        *cancellable,
+                             GError             **error);
+  void     (* close_async)  (GIOStream           *stream,
+                             int                  io_priority,
+                             GCancellable        *cancellable,
+                             GAsyncReadyCallback  callback,
+                             gpointer             user_data);
+  gboolean (* close_finish) (GIOStream           *stream,
+                             GAsyncResult        *result,
+                             GError             **error);
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+  void (*_g_reserved8) (void);
+  void (*_g_reserved9) (void);
+  void (*_g_reserved10) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_io_stream_get_type          (void)  G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GInputStream * g_io_stream_get_input_stream  (GIOStream            *stream);
+GLIB_AVAILABLE_IN_ALL
+GOutputStream *g_io_stream_get_output_stream (GIOStream            *stream);
+
+GLIB_AVAILABLE_IN_ALL
+void           g_io_stream_splice_async      (GIOStream            *stream1,
+					      GIOStream            *stream2,
+					      GIOStreamSpliceFlags  flags,
+					      int                   io_priority,
+					      GCancellable         *cancellable,
+					      GAsyncReadyCallback   callback,
+					      gpointer              user_data);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_splice_finish     (GAsyncResult         *result,
+                                              GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_close             (GIOStream            *stream,
+					      GCancellable         *cancellable,
+					      GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void           g_io_stream_close_async       (GIOStream            *stream,
+					      int                   io_priority,
+					      GCancellable         *cancellable,
+					      GAsyncReadyCallback   callback,
+					      gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_close_finish      (GIOStream            *stream,
+					      GAsyncResult         *result,
+					      GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_is_closed         (GIOStream            *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_has_pending       (GIOStream            *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_io_stream_set_pending       (GIOStream            *stream,
+					      GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void           g_io_stream_clear_pending     (GIOStream            *stream);
+
+G_END_DECLS
+
+#endif /* __G_IO_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/giotypes.h b/dist/usr/include/glib-2.0/gio/giotypes.h
new file mode 100644
index 0000000..d09bfae
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/giotypes.h
@@ -0,0 +1,474 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __GIO_TYPES_H__
+#define __GIO_TYPES_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gioenums.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GAppLaunchContext             GAppLaunchContext;
+typedef struct _GAppInfo                      GAppInfo; /* Dummy typedef */
+typedef struct _GAsyncResult                  GAsyncResult; /* Dummy typedef */
+typedef struct _GAsyncInitable                GAsyncInitable;
+typedef struct _GBufferedInputStream          GBufferedInputStream;
+typedef struct _GBufferedOutputStream         GBufferedOutputStream;
+typedef struct _GCancellable                  GCancellable;
+typedef struct _GCharsetConverter             GCharsetConverter;
+typedef struct _GConverter                    GConverter;
+typedef struct _GConverterInputStream         GConverterInputStream;
+typedef struct _GConverterOutputStream        GConverterOutputStream;
+typedef struct _GDataInputStream              GDataInputStream;
+typedef struct _GSimplePermission             GSimplePermission;
+typedef struct _GZlibCompressor               GZlibCompressor;
+typedef struct _GZlibDecompressor             GZlibDecompressor;
+
+typedef struct _GSimpleActionGroup            GSimpleActionGroup;
+typedef struct _GRemoteActionGroup            GRemoteActionGroup;
+typedef struct _GDBusActionGroup              GDBusActionGroup;
+typedef struct _GActionMap                    GActionMap;
+typedef struct _GActionGroup                  GActionGroup;
+typedef struct _GSimpleAction                 GSimpleAction;
+typedef struct _GAction                       GAction;
+typedef struct _GApplication                  GApplication;
+typedef struct _GApplicationCommandLine       GApplicationCommandLine;
+typedef struct _GSettingsBackend              GSettingsBackend;
+typedef struct _GSettings                     GSettings;
+typedef struct _GPermission                   GPermission;
+
+typedef struct _GMenuModel                    GMenuModel;
+
+/**
+ * GDrive:
+ *
+ * Opaque drive object.
+ **/
+typedef struct _GDrive                        GDrive; /* Dummy typedef */
+typedef struct _GFileEnumerator               GFileEnumerator;
+typedef struct _GFileMonitor                  GFileMonitor;
+typedef struct _GFilterInputStream            GFilterInputStream;
+typedef struct _GFilterOutputStream           GFilterOutputStream;
+
+/**
+ * GFile:
+ *
+ * A handle to an object implementing the #GFileIface interface.
+ * Generally stores a location within the file system. Handles do not
+ * necessarily represent files or directories that currently exist.
+ **/
+typedef struct _GFile                         GFile; /* Dummy typedef */
+typedef struct _GFileInfo                     GFileInfo;
+
+/**
+ * GFileAttributeMatcher:
+ *
+ * Determines if a string matches a file attribute.
+ **/
+typedef struct _GFileAttributeMatcher         GFileAttributeMatcher;
+typedef struct _GFileAttributeInfo            GFileAttributeInfo;
+typedef struct _GFileAttributeInfoList        GFileAttributeInfoList;
+typedef struct _GFileDescriptorBased          GFileDescriptorBased;
+typedef struct _GFileInputStream              GFileInputStream;
+typedef struct _GFileOutputStream             GFileOutputStream;
+typedef struct _GFileIOStream                 GFileIOStream;
+typedef struct _GFileIcon                     GFileIcon;
+typedef struct _GFilenameCompleter            GFilenameCompleter;
+
+
+typedef struct _GIcon                         GIcon; /* Dummy typedef */
+typedef struct _GInetAddress                  GInetAddress;
+typedef struct _GInetAddressMask              GInetAddressMask;
+typedef struct _GInetSocketAddress            GInetSocketAddress;
+typedef struct _GInputStream                  GInputStream;
+typedef struct _GInitable                     GInitable;
+typedef struct _GIOModule                     GIOModule;
+typedef struct _GIOExtensionPoint             GIOExtensionPoint;
+typedef struct _GIOExtension                  GIOExtension;
+
+/**
+ * GIOSchedulerJob:
+ *
+ * Opaque class for defining and scheduling IO jobs.
+ **/
+typedef struct _GIOSchedulerJob               GIOSchedulerJob;
+typedef struct _GIOStreamAdapter              GIOStreamAdapter;
+typedef struct _GLoadableIcon                 GLoadableIcon; /* Dummy typedef */
+typedef struct _GBytesIcon                    GBytesIcon;
+typedef struct _GMemoryInputStream            GMemoryInputStream;
+typedef struct _GMemoryOutputStream           GMemoryOutputStream;
+
+/**
+ * GMount:
+ *
+ * A handle to an object implementing the #GMountIface interface.
+ **/
+typedef struct _GMount                        GMount; /* Dummy typedef */
+typedef struct _GMountOperation               GMountOperation;
+typedef struct _GNetworkAddress               GNetworkAddress;
+typedef struct _GNetworkMonitor               GNetworkMonitor;
+typedef struct _GNetworkService               GNetworkService;
+typedef struct _GOutputStream                 GOutputStream;
+typedef struct _GIOStream                     GIOStream;
+typedef struct _GPollableInputStream          GPollableInputStream; /* Dummy typedef */
+typedef struct _GPollableOutputStream         GPollableOutputStream; /* Dummy typedef */
+typedef struct _GResolver                     GResolver;
+/**
+ * GResource:
+ *
+ * A resource bundle.
+ *
+ * Since: 2.32
+ */
+typedef struct _GResource                     GResource;
+typedef struct _GSeekable                     GSeekable;
+typedef struct _GSimpleAsyncResult            GSimpleAsyncResult;
+
+/**
+ * GSocket:
+ *
+ * A lowlevel network socket object.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GSocket                       GSocket;
+
+/**
+ * GSocketControlMessage:
+ *
+ * Base class for socket-type specific control messages that can be sent and
+ * received over #GSocket.
+ **/
+typedef struct _GSocketControlMessage         GSocketControlMessage;
+/**
+ * GSocketClient:
+ *
+ * A helper class for network clients to make connections.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GSocketClient                               GSocketClient;
+/**
+ * GSocketConnection:
+ *
+ * A socket connection GIOStream object for connection-oriented sockets.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GSocketConnection                           GSocketConnection;
+/**
+ * GSocketListener:
+ *
+ * A helper class for network servers to listen for and accept connections.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GSocketListener                             GSocketListener;
+/**
+ * GSocketService:
+ *
+ * A helper class for handling accepting incomming connections in the
+ * glib mainloop.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GSocketService                              GSocketService;
+typedef struct _GSocketAddress                GSocketAddress;
+typedef struct _GSocketAddressEnumerator      GSocketAddressEnumerator;
+typedef struct _GSocketConnectable            GSocketConnectable;
+typedef struct _GSrvTarget                    GSrvTarget;
+typedef struct _GTask                         GTask;
+/**
+ * GTcpConnection:
+ *
+ * A #GSocketConnection for TCP/IP connections.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GTcpConnection                              GTcpConnection;
+typedef struct _GTcpWrapperConnection                       GTcpWrapperConnection;
+/**
+ * GThreadedSocketService:
+ *
+ * A helper class for handling accepting incoming connections in the
+ * glib mainloop and handling them in a thread.
+ *
+ * Since: 2.22
+ **/
+typedef struct _GThreadedSocketService                      GThreadedSocketService;
+typedef struct _GThemedIcon                   GThemedIcon;
+typedef struct _GTlsCertificate               GTlsCertificate;
+typedef struct _GTlsClientConnection          GTlsClientConnection; /* Dummy typedef */
+typedef struct _GTlsConnection                GTlsConnection;
+typedef struct _GTlsDatabase                  GTlsDatabase;
+typedef struct _GTlsFileDatabase              GTlsFileDatabase;
+typedef struct _GTlsInteraction               GTlsInteraction;
+typedef struct _GTlsPassword                  GTlsPassword;
+typedef struct _GTlsServerConnection          GTlsServerConnection; /* Dummy typedef */
+typedef struct _GVfs                          GVfs; /* Dummy typedef */
+
+/**
+ * GProxyResolver:
+ *
+ * A helper class to enumerate proxies base on URI.
+ *
+ * Since: 2.26
+ **/
+typedef struct _GProxyResolver                GProxyResolver;
+typedef struct _GProxy			      GProxy;
+typedef struct _GProxyAddress		      GProxyAddress;
+typedef struct _GProxyAddressEnumerator	      GProxyAddressEnumerator;
+
+/**
+ * GVolume:
+ *
+ * Opaque mountable volume object.
+ **/
+typedef struct _GVolume                       GVolume; /* Dummy typedef */
+typedef struct _GVolumeMonitor                GVolumeMonitor;
+
+/**
+ * GAsyncReadyCallback:
+ * @source_object: the object the asynchronous operation was started with.
+ * @res: a #GAsyncResult.
+ * @user_data: user data passed to the callback.
+ *
+ * Type definition for a function that will be called back when an asynchronous
+ * operation within GIO has been completed.
+ **/
+typedef void (*GAsyncReadyCallback) (GObject *source_object,
+				     GAsyncResult *res,
+				     gpointer user_data);
+
+/**
+ * GFileProgressCallback:
+ * @current_num_bytes: the current number of bytes in the operation.
+ * @total_num_bytes: the total number of bytes in the operation.
+ * @user_data: user data passed to the callback.
+ *
+ * When doing file operations that may take a while, such as moving
+ * a file or copying a file, a progress callback is used to pass how
+ * far along that operation is to the application.
+ **/
+typedef void (*GFileProgressCallback) (goffset current_num_bytes,
+                                       goffset total_num_bytes,
+                                       gpointer user_data);
+
+/**
+ * GFileReadMoreCallback:
+ * @file_contents: the data as currently read.
+ * @file_size: the size of the data currently read.
+ * @callback_data: data passed to the callback.
+ *
+ * When loading the partial contents of a file with g_file_load_partial_contents_async(),
+ * it may become necessary to determine if any more data from the file should be loaded.
+ * A #GFileReadMoreCallback function facilitates this by returning %TRUE if more data
+ * should be read, or %FALSE otherwise.
+ *
+ * Returns: %TRUE if more data should be read back. %FALSE otherwise.
+ **/
+typedef gboolean (* GFileReadMoreCallback) (const char *file_contents,
+                                            goffset file_size,
+                                            gpointer callback_data);
+
+
+/**
+ * GIOSchedulerJobFunc:
+ * @job: a #GIOSchedulerJob.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @user_data: the data to pass to callback function
+ *
+ * I/O Job function.
+ *
+ * Long-running jobs should periodically check the @cancellable
+ * to see if they have been cancelled.
+ *
+ * Returns: %TRUE if this function should be called again to
+ *    complete the job, %FALSE if the job is complete (or cancelled)
+ **/
+typedef gboolean (*GIOSchedulerJobFunc) (GIOSchedulerJob *job,
+					 GCancellable    *cancellable,
+					 gpointer         user_data);
+
+/**
+ * GSimpleAsyncThreadFunc:
+ * @res: a #GSimpleAsyncResult.
+ * @object: a #GObject.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ *
+ * Simple thread function that runs an asynchronous operation and
+ * checks for cancellation.
+ **/
+typedef void (*GSimpleAsyncThreadFunc) (GSimpleAsyncResult *res,
+                                        GObject *object,
+                                        GCancellable *cancellable);
+
+/**
+ * GSocketSourceFunc:
+ * @socket: the #GSocket
+ * @condition: the current condition at the source fired.
+ * @user_data: data passed in by the user.
+ *
+ * This is the function type of the callback used for the #GSource
+ * returned by g_socket_create_source().
+ *
+ * Returns: it should return %FALSE if the source should be removed.
+ *
+ * Since: 2.22
+ */
+typedef gboolean (*GSocketSourceFunc) (GSocket *socket,
+				       GIOCondition condition,
+				       gpointer user_data);
+
+/**
+ * GInputVector:
+ * @buffer: Pointer to a buffer where data will be written.
+ * @size: the available size in @buffer.
+ *
+ * Structure used for scatter/gather data input.
+ * You generally pass in an array of #GInputVector<!-- -->s
+ * and the operation will store the read data starting in the
+ * first buffer, switching to the next as needed.
+ *
+ * Since: 2.22
+ */
+typedef struct _GInputVector GInputVector;
+
+struct _GInputVector {
+  gpointer buffer;
+  gsize size;
+};
+
+/**
+ * GOutputVector:
+ * @buffer: Pointer to a buffer of data to read.
+ * @size: the size of @buffer.
+ *
+ * Structure used for scatter/gather data output.
+ * You generally pass in an array of #GOutputVector<!-- -->s
+ * and the operation will use all the buffers as if they were
+ * one buffer.
+ *
+ * Since: 2.22
+ */
+typedef struct _GOutputVector GOutputVector;
+
+struct _GOutputVector {
+  gconstpointer buffer;
+  gsize size;
+};
+
+typedef struct _GCredentials                  GCredentials;
+typedef struct _GUnixCredentialsMessage       GUnixCredentialsMessage;
+typedef struct _GUnixFDList                   GUnixFDList;
+typedef struct _GDBusMessage                  GDBusMessage;
+typedef struct _GDBusConnection               GDBusConnection;
+typedef struct _GDBusProxy                    GDBusProxy;
+typedef struct _GDBusMethodInvocation         GDBusMethodInvocation;
+typedef struct _GDBusServer                   GDBusServer;
+typedef struct _GDBusAuthObserver             GDBusAuthObserver;
+typedef struct _GDBusErrorEntry               GDBusErrorEntry;
+typedef struct _GDBusInterfaceVTable          GDBusInterfaceVTable;
+typedef struct _GDBusSubtreeVTable            GDBusSubtreeVTable;
+typedef struct _GDBusAnnotationInfo           GDBusAnnotationInfo;
+typedef struct _GDBusArgInfo                  GDBusArgInfo;
+typedef struct _GDBusMethodInfo               GDBusMethodInfo;
+typedef struct _GDBusSignalInfo               GDBusSignalInfo;
+typedef struct _GDBusPropertyInfo             GDBusPropertyInfo;
+typedef struct _GDBusInterfaceInfo            GDBusInterfaceInfo;
+typedef struct _GDBusNodeInfo                 GDBusNodeInfo;
+
+/**
+ * GCancellableSourceFunc:
+ * @cancellable: the #GCancellable
+ * @user_data: data passed in by the user.
+ *
+ * This is the function type of the callback used for the #GSource
+ * returned by g_cancellable_source_new().
+ *
+ * Returns: it should return %FALSE if the source should be removed.
+ *
+ * Since: 2.28
+ */
+typedef gboolean (*GCancellableSourceFunc) (GCancellable *cancellable,
+					    gpointer      user_data);
+
+/**
+ * GPollableSourceFunc:
+ * @pollable_stream: the #GPollableInputStream or #GPollableOutputStream
+ * @user_data: data passed in by the user.
+ *
+ * This is the function type of the callback used for the #GSource
+ * returned by g_pollable_input_stream_create_source() and
+ * g_pollable_output_stream_create_source().
+ *
+ * Returns: it should return %FALSE if the source should be removed.
+ *
+ * Since: 2.28
+ */
+typedef gboolean (*GPollableSourceFunc) (GObject  *pollable_stream,
+					 gpointer  user_data);
+
+typedef struct _GDBusInterface              GDBusInterface; /* Dummy typedef */
+typedef struct _GDBusInterfaceSkeleton      GDBusInterfaceSkeleton;
+typedef struct _GDBusObject                 GDBusObject;  /* Dummy typedef */
+typedef struct _GDBusObjectSkeleton         GDBusObjectSkeleton;
+typedef struct _GDBusObjectProxy            GDBusObjectProxy;
+typedef struct _GDBusObjectManager          GDBusObjectManager;  /* Dummy typedef */
+typedef struct _GDBusObjectManagerClient    GDBusObjectManagerClient;
+typedef struct _GDBusObjectManagerServer    GDBusObjectManagerServer;
+
+/**
+ * GDBusProxyTypeFunc:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object.
+ * @interface_name: (allow-none): The interface name of the remote object or %NULL if a #GDBusObjectProxy #GType is requested.
+ * @user_data: User data.
+ *
+ * Function signature for a function used to determine the #GType to
+ * use for an interface proxy (if @interface_name is not %NULL) or
+ * object proxy (if @interface_name is %NULL).
+ *
+ * This function is called in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * that @manager was constructed in.
+ *
+ * Returns: A #GType to use for the remote object. The returned type
+ *   must be a #GDBusProxy<!-- -->- or #GDBusObjectProxy<!-- -->-derived
+ *   type.
+ *
+ * Since: 2.30
+ */
+typedef GType (*GDBusProxyTypeFunc) (GDBusObjectManagerClient   *manager,
+                                     const gchar                *object_path,
+                                     const gchar                *interface_name,
+                                     gpointer                    user_data);
+
+typedef struct _GTestDBus GTestDBus;
+
+G_END_DECLS
+
+#endif /* __GIO_TYPES_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gloadableicon.h b/dist/usr/include/glib-2.0/gio/gloadableicon.h
new file mode 100644
index 0000000..5bdece8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gloadableicon.h
@@ -0,0 +1,101 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_LOADABLE_ICON_H__
+#define __G_LOADABLE_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_LOADABLE_ICON            (g_loadable_icon_get_type ())
+#define G_LOADABLE_ICON(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_LOADABLE_ICON, GLoadableIcon))
+#define G_IS_LOADABLE_ICON(obj)	        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_LOADABLE_ICON))
+#define G_LOADABLE_ICON_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_LOADABLE_ICON, GLoadableIconIface))
+
+/**
+ * GLoadableIcon:
+ *
+ * Generic type for all kinds of icons that can be loaded
+ * as a stream.
+ **/
+typedef struct _GLoadableIconIface    		GLoadableIconIface;
+
+/**
+ * GLoadableIconIface:
+ * @g_iface: The parent interface.
+ * @load: Loads an icon.
+ * @load_async: Loads an icon asynchronously.
+ * @load_finish: Finishes an asynchronous icon load.
+ *
+ * Interface for icons that can be loaded as a stream.
+ **/
+struct _GLoadableIconIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GInputStream * (* load)        (GLoadableIcon       *icon,
+                                  int                  size,
+                                  char               **type,
+                                  GCancellable        *cancellable,
+                                  GError             **error);
+  void           (* load_async)  (GLoadableIcon       *icon,
+                                  int                  size,
+                                  GCancellable        *cancellable,
+                                  GAsyncReadyCallback  callback,
+                                  gpointer             user_data);
+  GInputStream * (* load_finish) (GLoadableIcon       *icon,
+                                  GAsyncResult        *res,
+                                  char               **type,
+                                  GError             **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType         g_loadable_icon_get_type    (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GInputStream *g_loadable_icon_load        (GLoadableIcon        *icon,
+					   int                   size,
+					   char                **type,
+					   GCancellable         *cancellable,
+					   GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void          g_loadable_icon_load_async  (GLoadableIcon        *icon,
+					   int                   size,
+					   GCancellable         *cancellable,
+					   GAsyncReadyCallback   callback,
+					   gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GInputStream *g_loadable_icon_load_finish (GLoadableIcon        *icon,
+					   GAsyncResult         *res,
+					   char                **type,
+					   GError              **error);
+
+G_END_DECLS
+
+#endif /* __G_LOADABLE_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmemoryinputstream.h b/dist/usr/include/glib-2.0/gio/gmemoryinputstream.h
new file mode 100644
index 0000000..607c4bb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmemoryinputstream.h
@@ -0,0 +1,92 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_MEMORY_INPUT_STREAM_H__
+#define __G_MEMORY_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/ginputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MEMORY_INPUT_STREAM         (g_memory_input_stream_get_type ())
+#define G_MEMORY_INPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStream))
+#define G_MEMORY_INPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStreamClass))
+#define G_IS_MEMORY_INPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_INPUT_STREAM))
+#define G_IS_MEMORY_INPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MEMORY_INPUT_STREAM))
+#define G_MEMORY_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MEMORY_INPUT_STREAM, GMemoryInputStreamClass))
+
+/**
+ * GMemoryInputStream:
+ *
+ * Implements #GInputStream for arbitrary memory chunks.
+ **/
+typedef struct _GMemoryInputStreamClass    GMemoryInputStreamClass;
+typedef struct _GMemoryInputStreamPrivate  GMemoryInputStreamPrivate;
+
+struct _GMemoryInputStream
+{
+  GInputStream parent_instance;
+
+  /*< private >*/
+  GMemoryInputStreamPrivate *priv;
+};
+
+struct _GMemoryInputStreamClass
+{
+  GInputStreamClass parent_class;
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_memory_input_stream_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GInputStream * g_memory_input_stream_new           (void);
+GLIB_AVAILABLE_IN_ALL
+GInputStream * g_memory_input_stream_new_from_data (const void         *data,
+                                                    gssize              len,
+                                                    GDestroyNotify      destroy);
+GLIB_AVAILABLE_IN_2_34
+GInputStream * g_memory_input_stream_new_from_bytes (GBytes            *bytes);
+
+GLIB_AVAILABLE_IN_ALL
+void           g_memory_input_stream_add_data      (GMemoryInputStream *stream,
+                                                    const void         *data,
+                                                    gssize              len,
+                                                    GDestroyNotify      destroy);
+GLIB_AVAILABLE_IN_2_34
+void           g_memory_input_stream_add_bytes     (GMemoryInputStream     *stream,
+						    GBytes                 *bytes);
+
+G_END_DECLS
+
+#endif /* __G_MEMORY_INPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmemoryoutputstream.h b/dist/usr/include/glib-2.0/gio/gmemoryoutputstream.h
new file mode 100644
index 0000000..b95d101
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmemoryoutputstream.h
@@ -0,0 +1,109 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Christian Kellner <gicmo@gnome.org>
+ */
+
+#ifndef __G_MEMORY_OUTPUT_STREAM_H__
+#define __G_MEMORY_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/goutputstream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MEMORY_OUTPUT_STREAM         (g_memory_output_stream_get_type ())
+#define G_MEMORY_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStream))
+#define G_MEMORY_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStreamClass))
+#define G_IS_MEMORY_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MEMORY_OUTPUT_STREAM))
+#define G_IS_MEMORY_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MEMORY_OUTPUT_STREAM))
+#define G_MEMORY_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MEMORY_OUTPUT_STREAM, GMemoryOutputStreamClass))
+
+/**
+ * GMemoryOutputStream:
+ *
+ * Implements #GOutputStream for arbitrary memory chunks.
+ **/
+typedef struct _GMemoryOutputStreamClass    GMemoryOutputStreamClass;
+typedef struct _GMemoryOutputStreamPrivate  GMemoryOutputStreamPrivate;
+
+struct _GMemoryOutputStream
+{
+  GOutputStream parent_instance;
+
+  /*< private >*/
+  GMemoryOutputStreamPrivate *priv;
+};
+
+struct _GMemoryOutputStreamClass
+{
+  GOutputStreamClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+/**
+ * GReallocFunc:
+ * @data: memory block to reallocate
+ * @size: size to reallocate @data to
+ *
+ * Changes the size of the memory block pointed to by @data to
+ * @size bytes.
+ *
+ * The function should have the same semantics as realloc().
+ *
+ * Returns: a pointer to the reallocated memory
+ */
+typedef gpointer (* GReallocFunc) (gpointer data,
+                                   gsize    size);
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_memory_output_stream_get_type      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GOutputStream *g_memory_output_stream_new           (gpointer             data,
+                                                     gsize                size,
+                                                     GReallocFunc         realloc_function,
+                                                     GDestroyNotify       destroy_function);
+GLIB_AVAILABLE_IN_2_36
+GOutputStream *g_memory_output_stream_new_resizable (void);
+GLIB_AVAILABLE_IN_ALL
+gpointer       g_memory_output_stream_get_data      (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gsize          g_memory_output_stream_get_size      (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gsize          g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gpointer       g_memory_output_stream_steal_data    (GMemoryOutputStream *ostream);
+
+GLIB_AVAILABLE_IN_2_34
+GBytes *       g_memory_output_stream_steal_as_bytes (GMemoryOutputStream *ostream);
+
+G_END_DECLS
+
+#endif /* __G_MEMORY_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmenu.h b/dist/usr/include/glib-2.0/gio/gmenu.h
new file mode 100644
index 0000000..68a974f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmenu.h
@@ -0,0 +1,184 @@
+/*
+ * Copyright © 2011 Canonical Ltd.
+ *
+ * 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
+ * licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_MENU_H__
+#define __G_MENU_H__
+
+#include <gio/gmenumodel.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MENU          (g_menu_get_type ())
+#define G_MENU(inst)         (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
+                              G_TYPE_MENU, GMenu))
+#define G_IS_MENU(inst)      (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \
+                              G_TYPE_MENU))
+
+#define G_TYPE_MENU_ITEM     (g_menu_item_get_type ())
+#define G_MENU_ITEM(inst)    (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
+                              G_TYPE_MENU_ITEM, GMenuItem))
+#define G_IS_MENU_ITEM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \
+                              G_TYPE_MENU_ITEM))
+
+typedef struct _GMenuItem GMenuItem;
+typedef struct _GMenu     GMenu;
+
+GLIB_AVAILABLE_IN_2_32
+GType       g_menu_get_type                         (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_32
+GMenu *     g_menu_new                              (void);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_freeze                           (GMenu       *menu);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_insert_item                      (GMenu       *menu,
+                                                     gint         position,
+                                                     GMenuItem   *item);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_prepend_item                     (GMenu       *menu,
+                                                     GMenuItem   *item);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_append_item                      (GMenu       *menu,
+                                                     GMenuItem   *item);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_remove                           (GMenu       *menu,
+                                                     gint         position);
+
+GLIB_AVAILABLE_IN_2_38
+void        g_menu_remove_all                       (GMenu       *menu);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_insert                           (GMenu       *menu,
+                                                     gint         position,
+                                                     const gchar *label,
+                                                     const gchar *detailed_action);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_prepend                          (GMenu       *menu,
+                                                     const gchar *label,
+                                                     const gchar *detailed_action);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_append                           (GMenu       *menu,
+                                                     const gchar *label,
+                                                     const gchar *detailed_action);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_insert_section                   (GMenu       *menu,
+                                                     gint         position,
+                                                     const gchar *label,
+                                                     GMenuModel  *section);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_prepend_section                  (GMenu       *menu,
+                                                     const gchar *label,
+                                                     GMenuModel  *section);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_append_section                   (GMenu       *menu,
+                                                     const gchar *label,
+                                                     GMenuModel  *section);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_insert_submenu                   (GMenu       *menu,
+                                                     gint        position,
+                                                     const gchar *label,
+                                                     GMenuModel  *submenu);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_prepend_submenu                  (GMenu       *menu,
+                                                     const gchar *label,
+                                                     GMenuModel  *submenu);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_append_submenu                   (GMenu       *menu,
+                                                     const gchar *label,
+                                                     GMenuModel  *submenu);
+
+
+GLIB_AVAILABLE_IN_2_32
+GType       g_menu_item_get_type                    (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_32
+GMenuItem * g_menu_item_new                         (const gchar *label,
+                                                     const gchar *detailed_action);
+
+GLIB_AVAILABLE_IN_2_34
+GMenuItem * g_menu_item_new_from_model              (GMenuModel  *model,
+                                                     gint         item_index);
+
+GLIB_AVAILABLE_IN_2_32
+GMenuItem * g_menu_item_new_submenu                 (const gchar *label,
+                                                     GMenuModel  *submenu);
+
+GLIB_AVAILABLE_IN_2_32
+GMenuItem * g_menu_item_new_section                 (const gchar *label,
+                                                     GMenuModel  *section);
+
+GLIB_AVAILABLE_IN_2_34
+GVariant *  g_menu_item_get_attribute_value         (GMenuItem   *menu_item,
+                                                     const gchar *attribute,
+                                                     const GVariantType *expected_type);
+GLIB_AVAILABLE_IN_2_34
+gboolean    g_menu_item_get_attribute               (GMenuItem   *menu_item,
+                                                     const gchar *attribute,
+                                                     const gchar *format_string,
+                                                     ...);
+GLIB_AVAILABLE_IN_2_34
+GMenuModel *g_menu_item_get_link                    (GMenuItem   *menu_item,
+                                                     const gchar *link);
+
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_attribute_value         (GMenuItem   *menu_item,
+                                                     const gchar *attribute,
+                                                     GVariant    *value);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_attribute               (GMenuItem   *menu_item,
+                                                     const gchar *attribute,
+                                                     const gchar *format_string,
+                                                     ...);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_link                    (GMenuItem   *menu_item,
+                                                     const gchar *link,
+                                                     GMenuModel  *model);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_label                   (GMenuItem   *menu_item,
+                                                     const gchar *label);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_submenu                 (GMenuItem   *menu_item,
+                                                     GMenuModel  *submenu);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_section                 (GMenuItem   *menu_item,
+                                                     GMenuModel  *section);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_action_and_target_value (GMenuItem   *menu_item,
+                                                     const gchar *action,
+                                                     GVariant    *target_value);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_action_and_target       (GMenuItem   *menu_item,
+                                                     const gchar *action,
+                                                     const gchar *format_string,
+                                                     ...);
+GLIB_AVAILABLE_IN_2_32
+void        g_menu_item_set_detailed_action         (GMenuItem   *menu_item,
+                                                     const gchar *detailed_action);
+
+GLIB_AVAILABLE_IN_2_38
+void        g_menu_item_set_icon                    (GMenuItem   *menu_item,
+                                                     GIcon       *icon);
+
+G_END_DECLS
+
+#endif /* __G_MENU_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmenuexporter.h b/dist/usr/include/glib-2.0/gio/gmenuexporter.h
new file mode 100644
index 0000000..1673b22
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmenuexporter.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright © 2011 Canonical Ltd.
+ *
+ *  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
+ *  licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_MENU_EXPORTER_H__
+#define __G_MENU_EXPORTER_H__
+
+#include <gio/gdbusconnection.h>
+#include <gio/gmenumodel.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_2_32
+guint                   g_dbus_connection_export_menu_model             (GDBusConnection  *connection,
+                                                                         const gchar      *object_path,
+                                                                         GMenuModel       *menu,
+                                                                         GError          **error);
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_dbus_connection_unexport_menu_model           (GDBusConnection  *connection,
+                                                                         guint             export_id);
+
+G_END_DECLS
+
+#endif /* __G_MENU_EXPORTER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmenumodel.h b/dist/usr/include/glib-2.0/gio/gmenumodel.h
new file mode 100644
index 0000000..46c4bad
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmenumodel.h
@@ -0,0 +1,291 @@
+/*
+ * Copyright © 2011 Canonical Ltd.
+ *
+ * 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
+ * licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_MENU_MODEL_H__
+#define __G_MENU_MODEL_H__
+
+#include <glib-object.h>
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_MENU_ATTRIBUTE_ACTION:
+ *
+ * The menu item attribute which holds the action name of the item.  Action
+ * names are namespaced with an identifier for the action group in which the
+ * action resides. For example, "win." for window-specific actions and "app."
+ * for application-wide actions.
+ *
+ * See also g_menu_model_get_item_attribute() and g_menu_item_set_attribute().
+ *
+ * Since: 2.32
+ **/
+#define G_MENU_ATTRIBUTE_ACTION "action"
+
+/**
+ * G_MENU_ATTRIBUTE_ACTION_NAMESPACE:
+ *
+ * The menu item attribute that holds the namespace for all action names in
+ * menus that are linked from this item.
+ *
+ * Since: 2.36
+ **/
+#define G_MENU_ATTRIBUTE_ACTION_NAMESPACE "action-namespace"
+
+/**
+ * G_MENU_ATTRIBUTE_TARGET:
+ *
+ * The menu item attribute which holds the target with which the item's action
+ * will be activated.
+ *
+ * See also g_menu_item_set_action_and_target()
+ *
+ * Since: 2.32
+ **/
+#define G_MENU_ATTRIBUTE_TARGET "target"
+
+/**
+ * G_MENU_ATTRIBUTE_LABEL:
+ *
+ * The menu item attribute which holds the label of the item.
+ *
+ * Since: 2.32
+ **/
+#define G_MENU_ATTRIBUTE_LABEL "label"
+
+/**
+ * G_MENU_ATTRIBUTE_ICON:
+ *
+ * The menu item attribute which holds the icon of the item.
+ *
+ * The icon is stored in the format returned by g_icon_serialize().
+ *
+ * This attribute is intended only to represent 'noun' icons such as
+ * favicons for a webpage, or application icons.  It should not be used
+ * for 'verbs' (ie: stock icons).
+ *
+ * Since: 2.38
+ **/
+#define G_MENU_ATTRIBUTE_ICON "icon"
+
+/**
+ * G_MENU_LINK_SUBMENU:
+ *
+ * The name of the link that associates a menu item with a submenu.
+ *
+ * See also g_menu_item_set_link().
+ *
+ * Since: 2.32
+ **/
+#define G_MENU_LINK_SUBMENU "submenu"
+
+/**
+ * G_MENU_LINK_SECTION:
+ *
+ * The name of the link that associates a menu item with a section.  The linked
+ * menu will usually be shown in place of the menu item, using the item's label
+ * as a header.
+ *
+ * See also g_menu_item_set_link().
+ *
+ * Since: 2.32
+ **/
+#define G_MENU_LINK_SECTION "section"
+
+#define G_TYPE_MENU_MODEL                                   (g_menu_model_get_type ())
+#define G_MENU_MODEL(inst)                                  (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_MENU_MODEL, GMenuModel))
+#define G_MENU_MODEL_CLASS(class)                           (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_MENU_MODEL, GMenuModelClass))
+#define G_IS_MENU_MODEL(inst)                               (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_MENU_MODEL))
+#define G_IS_MENU_MODEL_CLASS(class)                        (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_MENU_MODEL))
+#define G_MENU_MODEL_GET_CLASS(inst)                        (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_MENU_MODEL, GMenuModelClass))
+
+typedef struct _GMenuModelPrivate                           GMenuModelPrivate;
+typedef struct _GMenuModelClass                             GMenuModelClass;
+
+typedef struct _GMenuAttributeIterPrivate                   GMenuAttributeIterPrivate;
+typedef struct _GMenuAttributeIterClass                     GMenuAttributeIterClass;
+typedef struct _GMenuAttributeIter                          GMenuAttributeIter;
+
+typedef struct _GMenuLinkIterPrivate                        GMenuLinkIterPrivate;
+typedef struct _GMenuLinkIterClass                          GMenuLinkIterClass;
+typedef struct _GMenuLinkIter                               GMenuLinkIter;
+
+struct _GMenuModel
+{
+  GObject            parent_instance;
+  GMenuModelPrivate *priv;
+};
+
+struct _GMenuModelClass
+{
+  GObjectClass parent_class;
+
+  gboolean              (*is_mutable)                       (GMenuModel          *model);
+  gint                  (*get_n_items)                      (GMenuModel          *model);
+  void                  (*get_item_attributes)              (GMenuModel          *model,
+                                                             gint                 item_index,
+                                                             GHashTable         **attributes);
+  GMenuAttributeIter *  (*iterate_item_attributes)          (GMenuModel          *model,
+                                                             gint                 item_index);
+  GVariant *            (*get_item_attribute_value)         (GMenuModel          *model,
+                                                             gint                 item_index,
+                                                             const gchar         *attribute,
+                                                             const GVariantType  *expected_type);
+  void                  (*get_item_links)                   (GMenuModel          *model,
+                                                             gint                 item_index,
+                                                             GHashTable         **links);
+  GMenuLinkIter *       (*iterate_item_links)               (GMenuModel          *model,
+                                                             gint                 item_index);
+  GMenuModel *          (*get_item_link)                    (GMenuModel          *model,
+                                                             gint                 item_index,
+                                                             const gchar         *link);
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType                   g_menu_model_get_type                           (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_model_is_mutable                         (GMenuModel         *model);
+GLIB_AVAILABLE_IN_2_32
+gint                    g_menu_model_get_n_items                        (GMenuModel         *model);
+
+GLIB_AVAILABLE_IN_2_32
+GMenuAttributeIter *    g_menu_model_iterate_item_attributes            (GMenuModel         *model,
+                                                                         gint                item_index);
+GLIB_AVAILABLE_IN_2_32
+GVariant *              g_menu_model_get_item_attribute_value           (GMenuModel         *model,
+                                                                         gint                item_index,
+                                                                         const gchar        *attribute,
+                                                                         const GVariantType *expected_type);
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_model_get_item_attribute                 (GMenuModel         *model,
+                                                                         gint                item_index,
+                                                                         const gchar        *attribute,
+                                                                         const gchar        *format_string,
+                                                                         ...);
+GLIB_AVAILABLE_IN_2_32
+GMenuLinkIter *         g_menu_model_iterate_item_links                 (GMenuModel         *model,
+                                                                         gint                item_index);
+GLIB_AVAILABLE_IN_2_32
+GMenuModel *            g_menu_model_get_item_link                      (GMenuModel         *model,
+                                                                         gint                item_index,
+                                                                         const gchar        *link);
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_menu_model_items_changed                      (GMenuModel         *model,
+                                                                         gint                position,
+                                                                         gint                removed,
+                                                                         gint                added);
+
+
+#define G_TYPE_MENU_ATTRIBUTE_ITER                          (g_menu_attribute_iter_get_type ())
+#define G_MENU_ATTRIBUTE_ITER(inst)                         (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIter))
+#define G_MENU_ATTRIBUTE_ITER_CLASS(class)                  (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIterClass))
+#define G_IS_MENU_ATTRIBUTE_ITER(inst)                      (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_MENU_ATTRIBUTE_ITER))
+#define G_IS_MENU_ATTRIBUTE_ITER_CLASS(class)               (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_MENU_ATTRIBUTE_ITER))
+#define G_MENU_ATTRIBUTE_ITER_GET_CLASS(inst)               (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_MENU_ATTRIBUTE_ITER, GMenuAttributeIterClass))
+
+struct _GMenuAttributeIter
+{
+  GObject parent_instance;
+  GMenuAttributeIterPrivate *priv;
+};
+
+struct _GMenuAttributeIterClass
+{
+  GObjectClass parent_class;
+
+  gboolean      (*get_next) (GMenuAttributeIter  *iter,
+                             const gchar        **out_name,
+                             GVariant           **value);
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType                   g_menu_attribute_iter_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_attribute_iter_get_next                  (GMenuAttributeIter  *iter,
+                                                                         const gchar        **out_name,
+                                                                         GVariant           **value);
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_attribute_iter_next                      (GMenuAttributeIter  *iter);
+GLIB_AVAILABLE_IN_2_32
+const gchar *           g_menu_attribute_iter_get_name                  (GMenuAttributeIter  *iter);
+GLIB_AVAILABLE_IN_2_32
+GVariant *              g_menu_attribute_iter_get_value                 (GMenuAttributeIter  *iter);
+
+
+#define G_TYPE_MENU_LINK_ITER                               (g_menu_link_iter_get_type ())
+#define G_MENU_LINK_ITER(inst)                              (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_MENU_LINK_ITER, GMenuLinkIter))
+#define G_MENU_LINK_ITER_CLASS(class)                       (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_MENU_LINK_ITER, GMenuLinkIterClass))
+#define G_IS_MENU_LINK_ITER(inst)                           (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_MENU_LINK_ITER))
+#define G_IS_MENU_LINK_ITER_CLASS(class)                    (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_MENU_LINK_ITER))
+#define G_MENU_LINK_ITER_GET_CLASS(inst)                    (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_MENU_LINK_ITER, GMenuLinkIterClass))
+
+struct _GMenuLinkIter
+{
+  GObject parent_instance;
+  GMenuLinkIterPrivate *priv;
+};
+
+struct _GMenuLinkIterClass
+{
+  GObjectClass parent_class;
+
+  gboolean      (*get_next) (GMenuLinkIter  *iter,
+                             const gchar   **out_link,
+                             GMenuModel    **value);
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType                   g_menu_link_iter_get_type                       (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_link_iter_get_next                       (GMenuLinkIter  *iter,
+                                                                         const gchar   **out_link,
+                                                                         GMenuModel    **value);
+GLIB_AVAILABLE_IN_2_32
+gboolean                g_menu_link_iter_next                           (GMenuLinkIter  *iter);
+GLIB_AVAILABLE_IN_2_32
+const gchar *           g_menu_link_iter_get_name                       (GMenuLinkIter  *iter);
+GLIB_AVAILABLE_IN_2_32
+GMenuModel *            g_menu_link_iter_get_value                      (GMenuLinkIter  *iter);
+
+G_END_DECLS
+
+#endif /* __G_MENU_MODEL_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmount.h b/dist/usr/include/glib-2.0/gio/gmount.h
new file mode 100644
index 0000000..58f5193
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmount.h
@@ -0,0 +1,278 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2008 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ *         David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_MOUNT_H__
+#define __G_MOUNT_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MOUNT            (g_mount_get_type ())
+#define G_MOUNT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_MOUNT, GMount))
+#define G_IS_MOUNT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_MOUNT))
+#define G_MOUNT_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_MOUNT, GMountIface))
+
+typedef struct _GMountIface    GMountIface;
+
+/**
+ * GMountIface:
+ * @g_iface: The parent interface.
+ * @changed: Changed signal that is emitted when the mount's state has changed.
+ * @unmounted: The unmounted signal that is emitted when the #GMount have been unmounted. If the recipient is holding references to the object they should release them so the object can be finalized.
+ * @pre_unmount: The ::pre-unmount signal that is emitted when the #GMount will soon be emitted. If the recipient is somehow holding the mount open by keeping an open file on it it should close the file.
+ * @get_root: Gets a #GFile to the root directory of the #GMount.
+ * @get_name: Gets a string containing the name of the #GMount.
+ * @get_icon: Gets a #GIcon for the #GMount.
+ * @get_uuid: Gets the UUID for the #GMount. The reference is typically based on the file system UUID for the mount in question and should be considered an opaque string. Returns %NULL if there is no UUID available.
+ * @get_volume: Gets a #GVolume the mount is located on. Returns %NULL if the #GMount is not associated with a #GVolume.
+ * @get_drive: Gets a #GDrive the volume of the mount is located on. Returns %NULL if the #GMount is not associated with a #GDrive or a #GVolume. This is convenience method for getting the #GVolume and using that to get the #GDrive.
+ * @can_unmount: Checks if a #GMount can be unmounted.
+ * @can_eject: Checks if a #GMount can be ejected.
+ * @unmount: Starts unmounting a #GMount.
+ * @unmount_finish: Finishes an unmounting operation.
+ * @eject: Starts ejecting a #GMount.
+ * @eject_finish: Finishes an eject operation.
+ * @remount: Starts remounting a #GMount.
+ * @remount_finish: Finishes a remounting operation.
+ * @guess_content_type: Starts guessing the type of the content of a #GMount.
+ *     See g_mount_guess_content_type() for more information on content
+ *     type guessing. This operation was added in 2.18.
+ * @guess_content_type_finish: Finishes a content type guessing operation. Added in 2.18.
+ * @guess_content_type_sync: Synchronous variant of @guess_content_type. Added in 2.18
+ * @unmount_with_operation: Starts unmounting a #GMount using a #GMountOperation. Since 2.22.
+ * @unmount_with_operation_finish: Finishes an unmounting operation using a #GMountOperation. Since 2.22.
+ * @eject_with_operation: Starts ejecting a #GMount using a #GMountOperation. Since 2.22.
+ * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
+ * @get_default_location: Gets a #GFile indication a start location that can be use as the entry point for this mount. Since 2.24.
+ * @get_sort_key: Gets a key used for sorting #GMount instance or %NULL if no such key exists. Since 2.32.
+ * @get_symbolic_icon: Gets a symbolic #GIcon for the #GMount. Since 2.34.
+ *
+ * Interface for implementing operations for mounts.
+ **/
+struct _GMountIface
+{
+  GTypeInterface g_iface;
+
+  /* signals */
+
+  void        (* changed)                   (GMount              *mount);
+  void        (* unmounted)                 (GMount              *mount);
+
+  /* Virtual Table */
+
+  GFile     * (* get_root)                  (GMount              *mount);
+  char      * (* get_name)                  (GMount              *mount);
+  GIcon     * (* get_icon)                  (GMount              *mount);
+  char      * (* get_uuid)                  (GMount              *mount);
+  GVolume   * (* get_volume)                (GMount              *mount);
+  GDrive    * (* get_drive)                 (GMount              *mount);
+  gboolean    (* can_unmount)               (GMount              *mount);
+  gboolean    (* can_eject)                 (GMount              *mount);
+
+  void        (* unmount)                   (GMount              *mount,
+                                             GMountUnmountFlags   flags,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* unmount_finish)            (GMount              *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  void        (* eject)                     (GMount              *mount,
+                                             GMountUnmountFlags   flags,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* eject_finish)              (GMount              *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  void        (* remount)                   (GMount              *mount,
+                                             GMountMountFlags     flags,
+                                             GMountOperation     *mount_operation,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* remount_finish)            (GMount              *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  void        (* guess_content_type)        (GMount              *mount,
+                                             gboolean             force_rescan,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gchar    ** (* guess_content_type_finish) (GMount              *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+  gchar    ** (* guess_content_type_sync)   (GMount              *mount,
+                                             gboolean             force_rescan,
+                                             GCancellable        *cancellable,
+                                             GError             **error);
+
+  /* Signal, not VFunc */
+  void        (* pre_unmount)               (GMount              *mount);
+
+  void        (* unmount_with_operation)    (GMount              *mount,
+                                             GMountUnmountFlags   flags,
+                                             GMountOperation     *mount_operation,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* unmount_with_operation_finish) (GMount          *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  void        (* eject_with_operation)      (GMount              *mount,
+                                             GMountUnmountFlags   flags,
+                                             GMountOperation     *mount_operation,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* eject_with_operation_finish) (GMount            *mount,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+  GFile     * (* get_default_location)      (GMount              *mount);
+
+  const gchar * (* get_sort_key)            (GMount              *mount);
+  GIcon       * (* get_symbolic_icon)       (GMount              *mount);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType       g_mount_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GFile     * g_mount_get_root                  (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+GFile     * g_mount_get_default_location      (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+char      * g_mount_get_name                  (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+GIcon     * g_mount_get_icon                  (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+GIcon     * g_mount_get_symbolic_icon         (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+char      * g_mount_get_uuid                  (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+GVolume   * g_mount_get_volume                (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+GDrive    * g_mount_get_drive                 (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_can_unmount               (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_can_eject                 (GMount              *mount);
+
+GLIB_DEPRECATED_FOR(g_mount_unmount_with_operation)
+void        g_mount_unmount                   (GMount              *mount,
+                                               GMountUnmountFlags   flags,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+
+GLIB_DEPRECATED_FOR(g_mount_unmount_with_operation_finish)
+gboolean    g_mount_unmount_finish            (GMount              *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_DEPRECATED_FOR(g_mount_eject_with_operation)
+void        g_mount_eject                     (GMount              *mount,
+                                               GMountUnmountFlags   flags,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+
+GLIB_DEPRECATED_FOR(g_mount_eject_with_operation_finish)
+gboolean    g_mount_eject_finish              (GMount              *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_remount                   (GMount              *mount,
+                                               GMountMountFlags     flags,
+                                               GMountOperation     *mount_operation,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_remount_finish            (GMount              *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_guess_content_type        (GMount              *mount,
+                                               gboolean             force_rescan,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gchar    ** g_mount_guess_content_type_finish (GMount              *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gchar    ** g_mount_guess_content_type_sync   (GMount              *mount,
+                                               gboolean             force_rescan,
+                                               GCancellable        *cancellable,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_is_shadowed               (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_shadow                    (GMount              *mount);
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_unshadow                  (GMount              *mount);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_unmount_with_operation    (GMount              *mount,
+                                               GMountUnmountFlags   flags,
+                                               GMountOperation     *mount_operation,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_unmount_with_operation_finish (GMount          *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_mount_eject_with_operation      (GMount              *mount,
+                                               GMountUnmountFlags   flags,
+                                               GMountOperation     *mount_operation,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_mount_eject_with_operation_finish (GMount            *mount,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *g_mount_get_sort_key             (GMount              *mount);
+
+G_END_DECLS
+
+#endif /* __G_MOUNT_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gmountoperation.h b/dist/usr/include/glib-2.0/gio/gmountoperation.h
new file mode 100644
index 0000000..7f8baf1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gmountoperation.h
@@ -0,0 +1,142 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_MOUNT_OPERATION_H__
+#define __G_MOUNT_OPERATION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_MOUNT_OPERATION         (g_mount_operation_get_type ())
+#define G_MOUNT_OPERATION(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_MOUNT_OPERATION, GMountOperation))
+#define G_MOUNT_OPERATION_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_MOUNT_OPERATION, GMountOperationClass))
+#define G_IS_MOUNT_OPERATION(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_MOUNT_OPERATION))
+#define G_IS_MOUNT_OPERATION_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_MOUNT_OPERATION))
+#define G_MOUNT_OPERATION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_MOUNT_OPERATION, GMountOperationClass))
+
+/**
+ * GMountOperation:
+ *
+ * Class for providing authentication methods for mounting operations,
+ * such as mounting a file locally, or authenticating with a server.
+ **/
+typedef struct _GMountOperationClass   GMountOperationClass;
+typedef struct _GMountOperationPrivate GMountOperationPrivate;
+
+struct _GMountOperation
+{
+  GObject parent_instance;
+
+  GMountOperationPrivate *priv;
+};
+
+struct _GMountOperationClass
+{
+  GObjectClass parent_class;
+
+  /* signals: */
+
+  void (* ask_password) (GMountOperation       *op,
+			 const char            *message,
+			 const char            *default_user,
+			 const char            *default_domain,
+			 GAskPasswordFlags      flags);
+
+  void (* ask_question) (GMountOperation       *op,
+			 const char            *message,
+			 const char            *choices[]);
+
+  void (* reply)        (GMountOperation       *op,
+			 GMountOperationResult  result);
+
+  void (* aborted)      (GMountOperation       *op);
+
+  void (* show_processes) (GMountOperation      *op,
+                           const gchar          *message,
+                           GArray               *processes,
+                           const gchar          *choices[]);
+
+  void (* show_unmount_progress) (GMountOperation *op,
+                                  const gchar     *message,
+                                  gint64           time_left,
+                                  gint64           bytes_left);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+  void (*_g_reserved8) (void);
+  void (*_g_reserved9) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType             g_mount_operation_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GMountOperation * g_mount_operation_new           (void);
+
+GLIB_AVAILABLE_IN_ALL
+const char *  g_mount_operation_get_username      (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_username      (GMountOperation *op,
+						   const char      *username);
+GLIB_AVAILABLE_IN_ALL
+const char *  g_mount_operation_get_password      (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_password      (GMountOperation *op,
+						   const char      *password);
+GLIB_AVAILABLE_IN_ALL
+gboolean      g_mount_operation_get_anonymous     (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_anonymous     (GMountOperation *op,
+						   gboolean         anonymous);
+GLIB_AVAILABLE_IN_ALL
+const char *  g_mount_operation_get_domain        (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_domain        (GMountOperation *op,
+						   const char      *domain);
+GLIB_AVAILABLE_IN_ALL
+GPasswordSave g_mount_operation_get_password_save (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_password_save (GMountOperation *op,
+						   GPasswordSave    save);
+GLIB_AVAILABLE_IN_ALL
+int           g_mount_operation_get_choice        (GMountOperation *op);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_set_choice        (GMountOperation *op,
+						   int              choice);
+GLIB_AVAILABLE_IN_ALL
+void          g_mount_operation_reply             (GMountOperation *op,
+						   GMountOperationResult result);
+
+G_END_DECLS
+
+#endif /* __G_MOUNT_OPERATION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gnativevolumemonitor.h b/dist/usr/include/glib-2.0/gio/gnativevolumemonitor.h
new file mode 100644
index 0000000..e7f6d62
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gnativevolumemonitor.h
@@ -0,0 +1,63 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_NATIVE_VOLUME_MONITOR_H__
+#define __G_NATIVE_VOLUME_MONITOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gvolumemonitor.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_NATIVE_VOLUME_MONITOR        (g_native_volume_monitor_get_type ())
+#define G_NATIVE_VOLUME_MONITOR(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NATIVE_VOLUME_MONITOR, GNativeVolumeMonitor))
+#define G_NATIVE_VOLUME_MONITOR_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NATIVE_VOLUME_MONITOR, GNativeVolumeMonitorClass))
+#define G_IS_NATIVE_VOLUME_MONITOR(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NATIVE_VOLUME_MONITOR))
+#define G_IS_NATIVE_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NATIVE_VOLUME_MONITOR))
+
+#define G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME "gio-native-volume-monitor"
+
+typedef struct _GNativeVolumeMonitor      GNativeVolumeMonitor;
+typedef struct _GNativeVolumeMonitorClass GNativeVolumeMonitorClass;
+
+struct _GNativeVolumeMonitor
+{
+  GVolumeMonitor parent_instance;
+};
+
+struct _GNativeVolumeMonitorClass
+{
+  GVolumeMonitorClass parent_class;
+
+  GMount * (* get_mount_for_mount_path) (const char   *mount_path,
+                                         GCancellable *cancellable);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType g_native_volume_monitor_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __G_NATIVE_VOLUME_MONITOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gnetworkaddress.h b/dist/usr/include/glib-2.0/gio/gnetworkaddress.h
new file mode 100644
index 0000000..326ab21
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gnetworkaddress.h
@@ -0,0 +1,80 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_NETWORK_ADDRESS_H__
+#define __G_NETWORK_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_NETWORK_ADDRESS         (g_network_address_get_type ())
+#define G_NETWORK_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_ADDRESS, GNetworkAddress))
+#define G_NETWORK_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NETWORK_ADDRESS, GNetworkAddressClass))
+#define G_IS_NETWORK_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_ADDRESS))
+#define G_IS_NETWORK_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NETWORK_ADDRESS))
+#define G_NETWORK_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NETWORK_ADDRESS, GNetworkAddressClass))
+
+typedef struct _GNetworkAddressClass   GNetworkAddressClass;
+typedef struct _GNetworkAddressPrivate GNetworkAddressPrivate;
+
+struct _GNetworkAddress
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GNetworkAddressPrivate *priv;
+};
+
+struct _GNetworkAddressClass
+{
+  GObjectClass parent_class;
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType               g_network_address_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnectable *g_network_address_new          (const gchar      *hostname,
+						    guint16           port);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnectable *g_network_address_parse        (const gchar      *host_and_port,
+						    guint16           default_port,
+						    GError          **error);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnectable *g_network_address_parse_uri    (const gchar      *uri,
+    						    guint16           default_port,
+						    GError          **error);
+GLIB_AVAILABLE_IN_ALL
+const gchar        *g_network_address_get_hostname (GNetworkAddress  *addr);
+GLIB_AVAILABLE_IN_ALL
+guint16             g_network_address_get_port     (GNetworkAddress  *addr);
+GLIB_AVAILABLE_IN_ALL
+const gchar        *g_network_address_get_scheme   (GNetworkAddress  *addr);
+
+
+G_END_DECLS
+
+#endif /* __G_NETWORK_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gnetworking.h b/dist/usr/include/glib-2.0/gio/gnetworking.h
new file mode 100644
index 0000000..1e73fe4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gnetworking.h
@@ -0,0 +1,83 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008-2011 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_NETWORKING_H__
+#define __G_NETWORKING_H__
+
+#include <glib.h>
+
+#ifdef G_OS_WIN32
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+#include <winsock2.h>
+#undef interface
+#include <ws2tcpip.h>
+#include <windns.h>
+#include <mswsock.h>
+
+
+#else /* !G_OS_WIN32 */
+
+#include <sys/types.h>
+
+#include <netdb.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <resolv.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <net/if.h>
+
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+
+
+#ifndef T_SRV
+#define T_SRV 33
+#endif
+
+#ifndef _PATH_RESCONF
+#define _PATH_RESCONF "/etc/resolv.conf"
+#endif
+
+#ifndef CMSG_LEN
+/* CMSG_LEN and CMSG_SPACE are defined by RFC 2292, but missing on
+ * some older platforms.
+ */
+#define CMSG_LEN(len) ((size_t)CMSG_DATA((struct cmsghdr *)NULL) + (len))
+
+/* CMSG_SPACE must add at least as much padding as CMSG_NXTHDR()
+ * adds. We overestimate here.
+ */
+#define GLIB_ALIGN_TO_SIZEOF(len, obj) (((len) + sizeof (obj) - 1) & ~(sizeof (obj) - 1))
+#define CMSG_SPACE(len) GLIB_ALIGN_TO_SIZEOF (CMSG_LEN (len), struct cmsghdr)
+#endif
+#endif
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_2_36
+void g_networking_init (void);
+
+G_END_DECLS
+
+#endif /* __G_NETWORKING_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gnetworkmonitor.h b/dist/usr/include/glib-2.0/gio/gnetworkmonitor.h
new file mode 100644
index 0000000..373934e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gnetworkmonitor.h
@@ -0,0 +1,95 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2011 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_NETWORK_MONITOR_H__
+#define __G_NETWORK_MONITOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_NETWORK_MONITOR_EXTENSION_POINT_NAME:
+ *
+ * Extension point for network status monitoring functionality.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ *
+ * Since: 2.30
+ */
+#define G_NETWORK_MONITOR_EXTENSION_POINT_NAME "gio-network-monitor"
+
+#define G_TYPE_NETWORK_MONITOR         (g_network_monitor_get_type ())
+#define G_NETWORK_MONITOR(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_MONITOR, GNetworkMonitor))
+#define G_IS_NETWORK_MONITOR(o)            (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_MONITOR))
+#define G_NETWORK_MONITOR_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_NETWORK_MONITOR, GNetworkMonitorInterface))
+
+typedef struct _GNetworkMonitorInterface GNetworkMonitorInterface;
+
+struct _GNetworkMonitorInterface {
+  GTypeInterface g_iface;
+
+  void     (*network_changed)  (GNetworkMonitor      *monitor,
+				gboolean              available);
+
+  gboolean (*can_reach)        (GNetworkMonitor      *monitor,
+				GSocketConnectable   *connectable,
+				GCancellable         *cancellable,
+				GError              **error);
+  void     (*can_reach_async)  (GNetworkMonitor      *monitor,
+				GSocketConnectable   *connectable,
+				GCancellable         *cancellable,
+				GAsyncReadyCallback   callback,
+				gpointer              user_data);
+  gboolean (*can_reach_finish) (GNetworkMonitor      *monitor,
+				GAsyncResult         *result,
+				GError              **error);
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType            g_network_monitor_get_type              (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_32
+GNetworkMonitor *g_network_monitor_get_default           (void);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_network_monitor_get_network_available (GNetworkMonitor     *monitor);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_network_monitor_can_reach             (GNetworkMonitor     *monitor,
+							  GSocketConnectable  *connectable,
+							  GCancellable        *cancellable,
+							  GError             **error);
+GLIB_AVAILABLE_IN_ALL
+void             g_network_monitor_can_reach_async       (GNetworkMonitor     *monitor,
+							  GSocketConnectable  *connectable,
+							  GCancellable        *cancellable,
+							  GAsyncReadyCallback  callback,
+							  gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_network_monitor_can_reach_finish      (GNetworkMonitor     *monitor,
+							  GAsyncResult        *result,
+							  GError             **error);
+
+G_END_DECLS
+
+#endif /* __G_NETWORK_MONITOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gnetworkservice.h b/dist/usr/include/glib-2.0/gio/gnetworkservice.h
new file mode 100644
index 0000000..082166d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gnetworkservice.h
@@ -0,0 +1,78 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_NETWORK_SERVICE_H__
+#define __G_NETWORK_SERVICE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_NETWORK_SERVICE         (g_network_service_get_type ())
+#define G_NETWORK_SERVICE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NETWORK_SERVICE, GNetworkService))
+#define G_NETWORK_SERVICE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NETWORK_SERVICE, GNetworkServiceClass))
+#define G_IS_NETWORK_SERVICE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NETWORK_SERVICE))
+#define G_IS_NETWORK_SERVICE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NETWORK_SERVICE))
+#define G_NETWORK_SERVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NETWORK_SERVICE, GNetworkServiceClass))
+
+typedef struct _GNetworkServiceClass   GNetworkServiceClass;
+typedef struct _GNetworkServicePrivate GNetworkServicePrivate;
+
+struct _GNetworkService
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GNetworkServicePrivate *priv;
+};
+
+struct _GNetworkServiceClass
+{
+  GObjectClass parent_class;
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                g_network_service_get_type      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnectable  *g_network_service_new           (const gchar     *service,
+						      const gchar     *protocol,
+						      const gchar     *domain);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar         *g_network_service_get_service   (GNetworkService *srv);
+GLIB_AVAILABLE_IN_ALL
+const gchar         *g_network_service_get_protocol  (GNetworkService *srv);
+GLIB_AVAILABLE_IN_ALL
+const gchar         *g_network_service_get_domain    (GNetworkService *srv);
+GLIB_AVAILABLE_IN_ALL
+const gchar         *g_network_service_get_scheme    (GNetworkService *srv);
+GLIB_AVAILABLE_IN_ALL
+void                 g_network_service_set_scheme    (GNetworkService *srv, const gchar *scheme);
+
+G_END_DECLS
+
+#endif /* __G_NETWORK_SERVICE_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/goutputstream.h b/dist/usr/include/glib-2.0/gio/goutputstream.h
new file mode 100644
index 0000000..dd2cbad
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/goutputstream.h
@@ -0,0 +1,242 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_OUTPUT_STREAM_H__
+#define __G_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_OUTPUT_STREAM         (g_output_stream_get_type ())
+#define G_OUTPUT_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_OUTPUT_STREAM, GOutputStream))
+#define G_OUTPUT_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_OUTPUT_STREAM, GOutputStreamClass))
+#define G_IS_OUTPUT_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_OUTPUT_STREAM))
+#define G_IS_OUTPUT_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_OUTPUT_STREAM))
+#define G_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_OUTPUT_STREAM, GOutputStreamClass))
+
+/**
+ * GOutputStream:
+ *
+ * Base class for writing output.
+ *
+ * All classes derived from GOutputStream should implement synchronous
+ * writing, splicing, flushing and closing streams, but may implement
+ * asynchronous versions.
+ **/
+typedef struct _GOutputStreamClass    GOutputStreamClass;
+typedef struct _GOutputStreamPrivate  GOutputStreamPrivate;
+
+struct _GOutputStream
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GOutputStreamPrivate *priv;
+};
+
+
+struct _GOutputStreamClass
+{
+  GObjectClass parent_class;
+
+  /* Sync ops: */
+
+  gssize      (* write_fn)      (GOutputStream            *stream,
+                                 const void               *buffer,
+                                 gsize                     count,
+                                 GCancellable             *cancellable,
+                                 GError                  **error);
+  gssize      (* splice)        (GOutputStream            *stream,
+                                 GInputStream             *source,
+                                 GOutputStreamSpliceFlags  flags,
+                                 GCancellable             *cancellable,
+                                 GError                  **error);
+  gboolean    (* flush)	        (GOutputStream            *stream,
+                                 GCancellable             *cancellable,
+                                 GError                  **error);
+  gboolean    (* close_fn)      (GOutputStream            *stream,
+                                 GCancellable             *cancellable,
+                                 GError                  **error);
+
+  /* Async ops: (optional in derived classes) */
+
+  void        (* write_async)   (GOutputStream            *stream,
+                                 const void               *buffer,
+                                 gsize                     count,
+                                 int                       io_priority,
+                                 GCancellable             *cancellable,
+                                 GAsyncReadyCallback       callback,
+                                 gpointer                  user_data);
+  gssize      (* write_finish)  (GOutputStream            *stream,
+                                 GAsyncResult             *result,
+                                 GError                  **error);
+  void        (* splice_async)  (GOutputStream            *stream,
+                                 GInputStream             *source,
+                                 GOutputStreamSpliceFlags  flags,
+                                 int                       io_priority,
+                                 GCancellable             *cancellable,
+                                 GAsyncReadyCallback       callback,
+                                 gpointer                  user_data);
+  gssize      (* splice_finish) (GOutputStream            *stream,
+                                 GAsyncResult             *result,
+                                 GError                  **error);
+  void        (* flush_async)   (GOutputStream            *stream,
+                                 int                       io_priority,
+                                 GCancellable             *cancellable,
+                                 GAsyncReadyCallback       callback,
+                                 gpointer                  user_data);
+  gboolean    (* flush_finish)  (GOutputStream            *stream,
+                                 GAsyncResult             *result,
+                                 GError                  **error);
+  void        (* close_async)   (GOutputStream            *stream,
+                                 int                       io_priority,
+                                 GCancellable             *cancellable,
+                                 GAsyncReadyCallback       callback,
+                                 gpointer                  user_data);
+  gboolean    (* close_finish)  (GOutputStream            *stream,
+                                 GAsyncResult             *result,
+                                 GError                  **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+  void (*_g_reserved8) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_output_stream_get_type      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gssize   g_output_stream_write         (GOutputStream             *stream,
+					const void                *buffer,
+					gsize                      count,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_write_all     (GOutputStream             *stream,
+					const void                *buffer,
+					gsize                      count,
+					gsize                     *bytes_written,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_2_34
+gssize   g_output_stream_write_bytes   (GOutputStream             *stream,
+					GBytes                    *bytes,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_output_stream_splice        (GOutputStream             *stream,
+					GInputStream              *source,
+					GOutputStreamSpliceFlags   flags,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_flush         (GOutputStream             *stream,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_close         (GOutputStream             *stream,
+					GCancellable              *cancellable,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_output_stream_write_async   (GOutputStream             *stream,
+					const void                *buffer,
+					gsize                      count,
+					int                        io_priority,
+					GCancellable              *cancellable,
+					GAsyncReadyCallback        callback,
+					gpointer                   user_data);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_output_stream_write_finish  (GOutputStream             *stream,
+					GAsyncResult              *result,
+					GError                   **error);
+GLIB_AVAILABLE_IN_2_34
+void     g_output_stream_write_bytes_async  (GOutputStream             *stream,
+					     GBytes                    *bytes,
+					     int                        io_priority,
+					     GCancellable              *cancellable,
+					     GAsyncReadyCallback        callback,
+					     gpointer                   user_data);
+GLIB_AVAILABLE_IN_2_34
+gssize   g_output_stream_write_bytes_finish (GOutputStream             *stream,
+					     GAsyncResult              *result,
+					     GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_output_stream_splice_async  (GOutputStream             *stream,
+					GInputStream              *source,
+					GOutputStreamSpliceFlags   flags,
+					int                        io_priority,
+					GCancellable              *cancellable,
+					GAsyncReadyCallback        callback,
+					gpointer                   user_data);
+GLIB_AVAILABLE_IN_ALL
+gssize   g_output_stream_splice_finish (GOutputStream             *stream,
+					GAsyncResult              *result,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_output_stream_flush_async   (GOutputStream             *stream,
+					int                        io_priority,
+					GCancellable              *cancellable,
+					GAsyncReadyCallback        callback,
+					gpointer                   user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_flush_finish  (GOutputStream             *stream,
+					GAsyncResult              *result,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_output_stream_close_async   (GOutputStream             *stream,
+					int                        io_priority,
+					GCancellable              *cancellable,
+					GAsyncReadyCallback        callback,
+					gpointer                   user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_close_finish  (GOutputStream             *stream,
+					GAsyncResult              *result,
+					GError                   **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_is_closed     (GOutputStream             *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_is_closing    (GOutputStream             *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_has_pending   (GOutputStream             *stream);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_output_stream_set_pending   (GOutputStream             *stream,
+					GError                   **error);
+GLIB_AVAILABLE_IN_ALL
+void     g_output_stream_clear_pending (GOutputStream             *stream);
+
+
+G_END_DECLS
+
+#endif /* __G_OUTPUT_STREAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gpermission.h b/dist/usr/include/glib-2.0/gio/gpermission.h
new file mode 100644
index 0000000..49c2991
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gpermission.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_PERMISSION_H__
+#define __G_PERMISSION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_PERMISSION             (g_permission_get_type ())
+#define G_PERMISSION(inst)            (G_TYPE_CHECK_INSTANCE_CAST ((inst),   \
+                                       G_TYPE_PERMISSION, GPermission))
+#define G_PERMISSION_CLASS(class)     (G_TYPE_CHECK_CLASS_CAST ((class),     \
+                                       G_TYPE_PERMISSION, GPermissionClass))
+#define G_IS_PERMISSION(inst)         (G_TYPE_CHECK_INSTANCE_TYPE ((inst),   \
+                                       G_TYPE_PERMISSION))
+#define G_IS_PERMISSION_CLASS(class)  (G_TYPE_CHECK_CLASS_TYPE ((class),     \
+                                       G_TYPE_PERMISSION))
+#define G_PERMISSION_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_CLASS ((inst),    \
+                                       G_TYPE_PERMISSION, GPermissionClass))
+
+typedef struct _GPermissionPrivate    GPermissionPrivate;
+typedef struct _GPermissionClass      GPermissionClass;
+
+struct _GPermission
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GPermissionPrivate *priv;
+};
+
+struct _GPermissionClass {
+  GObjectClass parent_class;
+
+  gboolean (*acquire)        (GPermission          *permission,
+                              GCancellable         *cancellable,
+                              GError              **error);
+  void     (*acquire_async)  (GPermission          *permission,
+                              GCancellable         *cancellable,
+                              GAsyncReadyCallback   callback,
+                              gpointer              user_data);
+  gboolean (*acquire_finish) (GPermission          *permission,
+                              GAsyncResult         *result,
+                              GError              **error);
+
+  gboolean (*release)        (GPermission          *permission,
+                              GCancellable         *cancellable,
+                              GError              **error);
+  void     (*release_async)  (GPermission          *permission,
+                              GCancellable         *cancellable,
+                              GAsyncReadyCallback   callback,
+                              gpointer              user_data);
+  gboolean (*release_finish) (GPermission          *permission,
+                              GAsyncResult         *result,
+                              GError              **error);
+
+  gpointer reserved[16];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_permission_get_type           (void);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_acquire            (GPermission          *permission,
+                                                 GCancellable         *cancellable,
+                                                 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void            g_permission_acquire_async      (GPermission          *permission,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_acquire_finish     (GPermission          *permission,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_release            (GPermission          *permission,
+                                                 GCancellable         *cancellable,
+                                                 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void            g_permission_release_async      (GPermission          *permission,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_release_finish     (GPermission          *permission,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_get_allowed        (GPermission   *permission);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_get_can_acquire    (GPermission   *permission);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_permission_get_can_release    (GPermission   *permission);
+
+GLIB_AVAILABLE_IN_ALL
+void            g_permission_impl_update        (GPermission  *permission,
+                                                 gboolean      allowed,
+                                                 gboolean      can_acquire,
+                                                 gboolean      can_release);
+
+G_END_DECLS
+
+#endif /* __G_PERMISSION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gpollableinputstream.h b/dist/usr/include/glib-2.0/gio/gpollableinputstream.h
new file mode 100644
index 0000000..a0b1574
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gpollableinputstream.h
@@ -0,0 +1,107 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_POLLABLE_INPUT_STREAM_H__
+#define __G_POLLABLE_INPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_POLLABLE_INPUT_STREAM               (g_pollable_input_stream_get_type ())
+#define G_POLLABLE_INPUT_STREAM(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_POLLABLE_INPUT_STREAM, GPollableInputStream))
+#define G_IS_POLLABLE_INPUT_STREAM(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_POLLABLE_INPUT_STREAM))
+#define G_POLLABLE_INPUT_STREAM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_POLLABLE_INPUT_STREAM, GPollableInputStreamInterface))
+
+/**
+ * GPollableInputStream:
+ *
+ * An interface for a #GInputStream that can be polled for readability.
+ *
+ * Since: 2.28
+ */
+typedef struct _GPollableInputStreamInterface GPollableInputStreamInterface;
+
+/**
+ * GPollableInputStreamInterface:
+ * @g_iface: The parent interface.
+ * @can_poll: Checks if the #GPollableInputStream instance is actually pollable
+ * @is_readable: Checks if the stream is readable
+ * @create_source: Creates a #GSource to poll the stream
+ * @read_nonblocking: Does a non-blocking read or returns
+ *   %G_IO_ERROR_WOULD_BLOCK
+ *
+ * The interface for pollable input streams.
+ *
+ * The default implementation of @can_poll always returns %TRUE.
+ *
+ * The default implementation of @read_nonblocking calls
+ * g_pollable_input_stream_is_readable(), and then calls
+ * g_input_stream_read() if it returns %TRUE. This means you only need
+ * to override it if it is possible that your @is_readable
+ * implementation may return %TRUE when the stream is not actually
+ * readable.
+ *
+ * Since: 2.28
+ */
+struct _GPollableInputStreamInterface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+  gboolean     (*can_poll)         (GPollableInputStream  *stream);
+
+  gboolean     (*is_readable)      (GPollableInputStream  *stream);
+  GSource *    (*create_source)    (GPollableInputStream  *stream,
+				    GCancellable          *cancellable);
+  gssize       (*read_nonblocking) (GPollableInputStream  *stream,
+				    void                  *buffer,
+				    gsize                  count,
+				    GError               **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_pollable_input_stream_get_type         (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_pollable_input_stream_can_poll         (GPollableInputStream  *stream);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_pollable_input_stream_is_readable      (GPollableInputStream  *stream);
+GLIB_AVAILABLE_IN_ALL
+GSource *g_pollable_input_stream_create_source    (GPollableInputStream  *stream,
+						   GCancellable          *cancellable);
+
+GLIB_AVAILABLE_IN_ALL
+gssize   g_pollable_input_stream_read_nonblocking (GPollableInputStream  *stream,
+						   void                  *buffer,
+						   gsize                  count,
+						   GCancellable          *cancellable,
+						   GError               **error);
+
+G_END_DECLS
+
+
+#endif /* __G_POLLABLE_INPUT_STREAM_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/gpollableoutputstream.h b/dist/usr/include/glib-2.0/gio/gpollableoutputstream.h
new file mode 100644
index 0000000..b6b3e54
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gpollableoutputstream.h
@@ -0,0 +1,107 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_POLLABLE_OUTPUT_STREAM_H__
+#define __G_POLLABLE_OUTPUT_STREAM_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_POLLABLE_OUTPUT_STREAM               (g_pollable_output_stream_get_type ())
+#define G_POLLABLE_OUTPUT_STREAM(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM, GPollableOutputStream))
+#define G_IS_POLLABLE_OUTPUT_STREAM(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM))
+#define G_POLLABLE_OUTPUT_STREAM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_POLLABLE_OUTPUT_STREAM, GPollableOutputStreamInterface))
+
+/**
+ * GPollableOutputStream:
+ *
+ * An interface for a #GOutputStream that can be polled for readability.
+ *
+ * Since: 2.28
+ */
+typedef struct _GPollableOutputStreamInterface GPollableOutputStreamInterface;
+
+/**
+ * GPollableOutputStreamInterface:
+ * @g_iface: The parent interface.
+ * @can_poll: Checks if the #GPollableOutputStream instance is actually pollable
+ * @is_writable: Checks if the stream is writable
+ * @create_source: Creates a #GSource to poll the stream
+ * @write_nonblocking: Does a non-blocking write or returns
+ *   %G_IO_ERROR_WOULD_BLOCK
+ *
+ * The interface for pollable output streams.
+ *
+ * The default implementation of @can_poll always returns %TRUE.
+ *
+ * The default implementation of @write_nonblocking calls
+ * g_pollable_output_stream_is_writable(), and then calls
+ * g_output_stream_write() if it returns %TRUE. This means you only
+ * need to override it if it is possible that your @is_writable
+ * implementation may return %TRUE when the stream is not actually
+ * writable.
+ *
+ * Since: 2.28
+ */
+struct _GPollableOutputStreamInterface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+  gboolean     (*can_poll)          (GPollableOutputStream  *stream);
+
+  gboolean     (*is_writable)       (GPollableOutputStream  *stream);
+  GSource *    (*create_source)     (GPollableOutputStream  *stream,
+				     GCancellable           *cancellable);
+  gssize       (*write_nonblocking) (GPollableOutputStream  *stream,
+				     const void             *buffer,
+				     gsize                   count,
+				     GError                **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_pollable_output_stream_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_pollable_output_stream_can_poll          (GPollableOutputStream  *stream);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_pollable_output_stream_is_writable       (GPollableOutputStream  *stream);
+GLIB_AVAILABLE_IN_ALL
+GSource *g_pollable_output_stream_create_source     (GPollableOutputStream  *stream,
+						     GCancellable           *cancellable);
+
+GLIB_AVAILABLE_IN_ALL
+gssize   g_pollable_output_stream_write_nonblocking (GPollableOutputStream  *stream,
+						     const void             *buffer,
+						     gsize                   count,
+						     GCancellable           *cancellable,
+						     GError                **error);
+
+G_END_DECLS
+
+
+#endif /* __G_POLLABLE_OUTPUT_STREAM_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/gpollableutils.h b/dist/usr/include/glib-2.0/gio/gpollableutils.h
new file mode 100644
index 0000000..cb4612d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gpollableutils.h
@@ -0,0 +1,66 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * 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_POLLABLE_UTILS_H__
+#define __G_POLLABLE_UTILS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+GSource *g_pollable_source_new       (GObject        *pollable_stream);
+
+GLIB_AVAILABLE_IN_2_34
+GSource *g_pollable_source_new_full  (gpointer        pollable_stream,
+				      GSource        *child_source,
+				      GCancellable   *cancellable);
+
+GLIB_AVAILABLE_IN_2_34
+gssize   g_pollable_stream_read      (GInputStream   *stream,
+				      void           *buffer,
+				      gsize           count,
+				      gboolean        blocking,
+				      GCancellable   *cancellable,
+				      GError        **error);
+
+GLIB_AVAILABLE_IN_2_34
+gssize   g_pollable_stream_write     (GOutputStream  *stream,
+				      const void     *buffer,
+				      gsize           count,
+				      gboolean        blocking,
+				      GCancellable   *cancellable,
+				      GError        **error);
+GLIB_AVAILABLE_IN_2_34
+gboolean g_pollable_stream_write_all (GOutputStream  *stream,
+				      const void     *buffer,
+				      gsize           count,
+				      gboolean        blocking,
+				      gsize          *bytes_written,
+				      GCancellable   *cancellable,
+				      GError        **error);
+
+G_END_DECLS
+
+#endif /* _G_POLLABLE_UTILS_H_ */
diff --git a/dist/usr/include/glib-2.0/gio/gproxy.h b/dist/usr/include/glib-2.0/gio/gproxy.h
new file mode 100644
index 0000000..b022335
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gproxy.h
@@ -0,0 +1,130 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * 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.
+ *
+ * Author: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+ */
+
+#ifndef __G_PROXY_H__
+#define __G_PROXY_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_PROXY		(g_proxy_get_type ())
+#define G_PROXY(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY, GProxy))
+#define G_IS_PROXY(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY))
+#define G_PROXY_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_PROXY, GProxyInterface))
+
+/**
+ * G_PROXY_EXTENSION_POINT_NAME:
+ *
+ * Extension point for proxy functionality.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ *
+ * Since: 2.26
+ */
+#define G_PROXY_EXTENSION_POINT_NAME "gio-proxy"
+
+/**
+ * GProxy:
+ *
+ * Interface that handles proxy connection and payload.
+ *
+ * Since: 2.26
+ */
+typedef struct _GProxyInterface GProxyInterface;
+
+/**
+ * GProxyInterface:
+ * @g_iface: The parent interface.
+ * @connect: Connect to proxy server and wrap (if required) the #connection
+ *           to handle payload.
+ * @connect_async: Same as connect() but asynchronous.
+ * @connect_finish: Returns the result of connect_async()
+ * @supports_hostname: Returns whether the proxy supports hostname lookups.
+ *
+ * Provides an interface for handling proxy connection and payload.
+ *
+ * Since: 2.26
+ */
+struct _GProxyInterface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GIOStream * (* connect)           (GProxy               *proxy,
+				     GIOStream            *connection,
+				     GProxyAddress        *proxy_address,
+				     GCancellable         *cancellable,
+				     GError              **error);
+
+  void        (* connect_async)     (GProxy               *proxy,
+				     GIOStream            *connection,
+				     GProxyAddress	  *proxy_address,
+				     GCancellable         *cancellable,
+				     GAsyncReadyCallback   callback,
+				     gpointer              user_data);
+
+  GIOStream * (* connect_finish)    (GProxy               *proxy,
+				     GAsyncResult         *result,
+				     GError              **error);
+
+  gboolean    (* supports_hostname) (GProxy             *proxy);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_proxy_get_type                 (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GProxy    *g_proxy_get_default_for_protocol (const gchar *protocol);
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream *g_proxy_connect           (GProxy               *proxy,
+				      GIOStream            *connection,
+				      GProxyAddress        *proxy_address,
+				      GCancellable         *cancellable,
+				      GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void       g_proxy_connect_async     (GProxy               *proxy,
+				      GIOStream            *connection,
+				      GProxyAddress        *proxy_address,
+				      GCancellable         *cancellable,
+				      GAsyncReadyCallback   callback,
+				      gpointer              user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream *g_proxy_connect_finish    (GProxy               *proxy,
+				      GAsyncResult         *result,
+				      GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean   g_proxy_supports_hostname (GProxy               *proxy);
+
+G_END_DECLS
+
+#endif /* __G_PROXY_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gproxyaddress.h b/dist/usr/include/glib-2.0/gio/gproxyaddress.h
new file mode 100644
index 0000000..ed67f33
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gproxyaddress.h
@@ -0,0 +1,88 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Authors: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+ */
+
+#ifndef __G_PROXY_ADDRESS_H__
+#define __G_PROXY_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/ginetsocketaddress.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_PROXY_ADDRESS         (g_proxy_address_get_type ())
+#define G_PROXY_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_ADDRESS, GProxyAddress))
+#define G_PROXY_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_PROXY_ADDRESS, GProxyAddressClass))
+#define G_IS_PROXY_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_ADDRESS))
+#define G_IS_PROXY_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_PROXY_ADDRESS))
+#define G_PROXY_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_PROXY_ADDRESS, GProxyAddressClass))
+
+typedef struct _GProxyAddressClass   GProxyAddressClass;
+typedef struct _GProxyAddressPrivate GProxyAddressPrivate;
+
+struct _GProxyAddress
+{
+  GInetSocketAddress parent_instance;
+
+  /*< private >*/
+  GProxyAddressPrivate *priv;
+};
+
+struct _GProxyAddressClass
+{
+  GInetSocketAddressClass parent_class;
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_proxy_address_get_type    (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_proxy_address_new         (GInetAddress *inetaddr,
+					     guint16       port,
+					     const gchar  *protocol,
+					     const gchar  *dest_hostname,
+		                             guint16       dest_port,
+					     const gchar  *username,
+					     const gchar  *password);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar    *g_proxy_address_get_protocol                (GProxyAddress *proxy);
+GLIB_AVAILABLE_IN_2_34
+const gchar    *g_proxy_address_get_destination_protocol    (GProxyAddress *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar    *g_proxy_address_get_destination_hostname    (GProxyAddress *proxy);
+GLIB_AVAILABLE_IN_ALL
+guint16         g_proxy_address_get_destination_port        (GProxyAddress *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar    *g_proxy_address_get_username                (GProxyAddress *proxy);
+GLIB_AVAILABLE_IN_ALL
+const gchar    *g_proxy_address_get_password                (GProxyAddress *proxy);
+
+GLIB_AVAILABLE_IN_2_34
+const gchar    *g_proxy_address_get_uri                     (GProxyAddress *proxy);
+
+G_END_DECLS
+
+#endif /* __G_PROXY_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gproxyaddressenumerator.h b/dist/usr/include/glib-2.0/gio/gproxyaddressenumerator.h
new file mode 100644
index 0000000..19bcd51
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gproxyaddressenumerator.h
@@ -0,0 +1,76 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Author: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+ */
+
+#ifndef __G_PROXY_ADDRESS_ENUMERATOR_H__
+#define __G_PROXY_ADDRESS_ENUMERATOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsocketaddressenumerator.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_PROXY_ADDRESS_ENUMERATOR         (g_proxy_address_enumerator_get_type ())
+#define G_PROXY_ADDRESS_ENUMERATOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumerator))
+#define G_PROXY_ADDRESS_ENUMERATOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumeratorClass))
+#define G_IS_PROXY_ADDRESS_ENUMERATOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR))
+#define G_IS_PROXY_ADDRESS_ENUMERATOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_PROXY_ADDRESS_ENUMERATOR))
+#define G_PROXY_ADDRESS_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_PROXY_ADDRESS_ENUMERATOR, GProxyAddressEnumeratorClass))
+
+/**
+ * GProxyAddressEnumerator:
+ *
+ * A subclass of #GSocketAddressEnumerator that takes another address
+ * enumerator and wraps its results in #GProxyAddress<!-- -->es as
+ * directed by the default #GProxyResolver.
+ */
+
+typedef struct _GProxyAddressEnumeratorClass GProxyAddressEnumeratorClass;
+typedef struct _GProxyAddressEnumeratorPrivate GProxyAddressEnumeratorPrivate;
+
+struct _GProxyAddressEnumerator
+{
+  GSocketAddressEnumerator parent_instance;
+  GProxyAddressEnumeratorPrivate *priv;
+};
+
+struct _GProxyAddressEnumeratorClass
+{
+  GSocketAddressEnumeratorClass parent_class;
+
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_proxy_address_enumerator_get_type    (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __G_PROXY_ADDRESS_ENUMERATOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gproxyresolver.h b/dist/usr/include/glib-2.0/gio/gproxyresolver.h
new file mode 100644
index 0000000..eaad834
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gproxyresolver.h
@@ -0,0 +1,97 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Author: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+ */
+
+#ifndef __G_PROXY_RESOLVER_H__
+#define __G_PROXY_RESOLVER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_PROXY_RESOLVER         (g_proxy_resolver_get_type ())
+#define G_PROXY_RESOLVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_PROXY_RESOLVER, GProxyResolver))
+#define G_IS_PROXY_RESOLVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_PROXY_RESOLVER))
+#define G_PROXY_RESOLVER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_PROXY_RESOLVER, GProxyResolverInterface))
+
+/**
+ * G_PROXY_RESOLVER_EXTENSION_POINT_NAME:
+ *
+ * Extension point for proxy resolving functionality.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ */
+#define G_PROXY_RESOLVER_EXTENSION_POINT_NAME "gio-proxy-resolver"
+
+typedef struct _GProxyResolverInterface GProxyResolverInterface;
+
+struct _GProxyResolverInterface {
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+  gboolean (* is_supported)  (GProxyResolver       *resolver);
+
+  gchar	** (* lookup)        (GProxyResolver       *resolver,
+			      const gchar          *uri,
+			      GCancellable         *cancellable,
+			      GError              **error);
+
+  void     (* lookup_async)  (GProxyResolver       *resolver,
+			      const gchar          *uri,
+			      GCancellable         *cancellable,
+			      GAsyncReadyCallback   callback,
+			      gpointer              user_data);
+
+  gchar	** (* lookup_finish) (GProxyResolver       *resolver,
+			      GAsyncResult         *result,
+			      GError              **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType		g_proxy_resolver_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GProxyResolver *g_proxy_resolver_get_default    (void);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_proxy_resolver_is_supported   (GProxyResolver       *resolver);
+GLIB_AVAILABLE_IN_ALL
+gchar	      **g_proxy_resolver_lookup		(GProxyResolver       *resolver,
+						 const gchar          *uri,
+						 GCancellable         *cancellable,
+						 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void		g_proxy_resolver_lookup_async   (GProxyResolver       *resolver,
+						 const gchar          *uri,
+						 GCancellable         *cancellable,
+						 GAsyncReadyCallback   callback,
+						 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gchar	      **g_proxy_resolver_lookup_finish  (GProxyResolver       *resolver,
+						 GAsyncResult         *result,
+						 GError              **error);
+
+
+G_END_DECLS
+
+#endif /* __G_PROXY_RESOLVER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gremoteactiongroup.h b/dist/usr/include/glib-2.0/gio/gremoteactiongroup.h
new file mode 100644
index 0000000..a9926ee
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gremoteactiongroup.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2011 Canonical Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_REMOTE_ACTION_GROUP_H__
+#define __G_REMOTE_ACTION_GROUP_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+
+#define G_TYPE_REMOTE_ACTION_GROUP                          (g_remote_action_group_get_type ())
+#define G_REMOTE_ACTION_GROUP(inst)                         (G_TYPE_CHECK_INSTANCE_CAST ((inst),                      \
+                                                             G_TYPE_REMOTE_ACTION_GROUP, GRemoteActionGroup))
+#define G_IS_REMOTE_ACTION_GROUP(inst)                      (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                      \
+                                                             G_TYPE_REMOTE_ACTION_GROUP))
+#define G_REMOTE_ACTION_GROUP_GET_IFACE(inst)               (G_TYPE_INSTANCE_GET_INTERFACE ((inst),                   \
+                                                             G_TYPE_REMOTE_ACTION_GROUP,                              \
+                                                             GRemoteActionGroupInterface))
+
+typedef struct _GRemoteActionGroupInterface                 GRemoteActionGroupInterface;
+
+struct _GRemoteActionGroupInterface
+{
+  GTypeInterface g_iface;
+
+  void (* activate_action_full)     (GRemoteActionGroup *remote,
+                                     const gchar        *action_name,
+                                     GVariant           *parameter,
+                                     GVariant           *platform_data);
+
+  void (* change_action_state_full) (GRemoteActionGroup *remote,
+                                     const gchar        *action_name,
+                                     GVariant           *value,
+                                     GVariant           *platform_data);
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType                   g_remote_action_group_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_remote_action_group_activate_action_full      (GRemoteActionGroup *remote,
+                                                                         const gchar        *action_name,
+                                                                         GVariant           *parameter,
+                                                                         GVariant           *platform_data);
+
+GLIB_AVAILABLE_IN_2_32
+void                    g_remote_action_group_change_action_state_full  (GRemoteActionGroup *remote,
+                                                                         const gchar        *action_name,
+                                                                         GVariant           *value,
+                                                                         GVariant           *platform_data);
+
+G_END_DECLS
+
+#endif /* __G_REMOTE_ACTION_GROUP_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gresolver.h b/dist/usr/include/glib-2.0/gio/gresolver.h
new file mode 100644
index 0000000..454896c
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gresolver.h
@@ -0,0 +1,214 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_RESOLVER_H__
+#define __G_RESOLVER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_RESOLVER         (g_resolver_get_type ())
+#define G_RESOLVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_RESOLVER, GResolver))
+#define G_RESOLVER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_RESOLVER, GResolverClass))
+#define G_IS_RESOLVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_RESOLVER))
+#define G_IS_RESOLVER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_RESOLVER))
+#define G_RESOLVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_RESOLVER, GResolverClass))
+
+typedef struct _GResolverPrivate GResolverPrivate;
+typedef struct _GResolverClass   GResolverClass;
+
+struct _GResolver {
+  GObject parent_instance;
+
+  GResolverPrivate *priv;
+};
+
+struct _GResolverClass {
+  GObjectClass parent_class;
+
+  /* Signals */
+  void    ( *reload)                   (GResolver            *resolver);
+
+  /* Virtual methods */
+  GList * ( *lookup_by_name)           (GResolver            *resolver,
+					const gchar          *hostname,
+					GCancellable         *cancellable,
+					GError              **error);
+  void    ( *lookup_by_name_async)     (GResolver            *resolver,
+					const gchar          *hostname,
+					GCancellable         *cancellable,
+					GAsyncReadyCallback   callback,
+					gpointer              user_data);
+  GList * ( *lookup_by_name_finish)    (GResolver            *resolver,
+					GAsyncResult         *result,
+					GError              **error);
+
+  gchar * ( *lookup_by_address)        (GResolver            *resolver,
+					GInetAddress         *address,
+					GCancellable         *cancellable,
+					GError              **error);
+  void    ( *lookup_by_address_async)  (GResolver            *resolver,
+					GInetAddress         *address,
+					GCancellable         *cancellable,
+					GAsyncReadyCallback   callback,
+					gpointer              user_data);
+  gchar * ( *lookup_by_address_finish) (GResolver            *resolver,
+					GAsyncResult         *result,
+					GError              **error);
+
+  GList * ( *lookup_service)           (GResolver            *resolver,
+					const gchar          *rrname,
+					GCancellable         *cancellable,
+					GError              **error);
+  void    ( *lookup_service_async)     (GResolver            *resolver,
+					const gchar          *rrname,
+					GCancellable         *cancellable,
+					GAsyncReadyCallback   callback,
+					gpointer              user_data);
+  GList * ( *lookup_service_finish)    (GResolver            *resolver,
+					GAsyncResult         *result,
+					GError              **error);
+
+  GList * ( *lookup_records)           (GResolver            *resolver,
+                                        const gchar          *rrname,
+                                        GResolverRecordType   record_type,
+                                        GCancellable         *cancellable,
+                                        GError              **error);
+
+  void    ( *lookup_records_async)     (GResolver            *resolver,
+                                        const gchar          *rrname,
+                                        GResolverRecordType   record_type,
+                                        GCancellable         *cancellable,
+                                        GAsyncReadyCallback   callback,
+                                        gpointer              user_data);
+
+  GList * ( *lookup_records_finish)    (GResolver            *resolver,
+                                        GAsyncResult         *result,
+                                        GError              **error);
+
+  /* Padding for future expansion */
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType      g_resolver_get_type                  (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GResolver *g_resolver_get_default               (void);
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_set_default               (GResolver            *resolver);
+
+GLIB_AVAILABLE_IN_ALL
+GList     *g_resolver_lookup_by_name            (GResolver            *resolver,
+						 const gchar          *hostname,
+						 GCancellable         *cancellable,
+						 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_lookup_by_name_async      (GResolver            *resolver,
+						 const gchar          *hostname,
+						 GCancellable         *cancellable,
+						 GAsyncReadyCallback   callback,
+						 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GList     *g_resolver_lookup_by_name_finish     (GResolver            *resolver,
+						 GAsyncResult         *result,
+						 GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_free_addresses            (GList                *addresses);
+
+GLIB_AVAILABLE_IN_ALL
+gchar     *g_resolver_lookup_by_address         (GResolver            *resolver,
+						 GInetAddress         *address,
+						 GCancellable         *cancellable,
+						 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_lookup_by_address_async   (GResolver            *resolver,
+						 GInetAddress         *address,
+						 GCancellable         *cancellable,
+						 GAsyncReadyCallback   callback,
+						 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gchar     *g_resolver_lookup_by_address_finish  (GResolver            *resolver,
+						 GAsyncResult         *result,
+						 GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+GList     *g_resolver_lookup_service            (GResolver            *resolver,
+						 const gchar          *service,
+						 const gchar          *protocol,
+						 const gchar          *domain,
+						 GCancellable         *cancellable,
+						 GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_lookup_service_async      (GResolver            *resolver,
+						 const gchar          *service,
+						 const gchar          *protocol,
+						 const gchar          *domain,
+						 GCancellable         *cancellable,
+						 GAsyncReadyCallback   callback,
+						 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GList     *g_resolver_lookup_service_finish     (GResolver            *resolver,
+						 GAsyncResult         *result,
+						 GError              **error);
+
+GLIB_AVAILABLE_IN_2_34
+GList     *g_resolver_lookup_records            (GResolver            *resolver,
+                                                 const gchar          *rrname,
+                                                 GResolverRecordType   record_type,
+                                                 GCancellable         *cancellable,
+                                                 GError              **error);
+GLIB_AVAILABLE_IN_2_34
+void       g_resolver_lookup_records_async      (GResolver            *resolver,
+                                                 const gchar          *rrname,
+                                                 GResolverRecordType   record_type,
+                                                 GCancellable         *cancellable,
+                                                 GAsyncReadyCallback   callback,
+                                                 gpointer              user_data);
+GLIB_AVAILABLE_IN_2_34
+GList     *g_resolver_lookup_records_finish     (GResolver            *resolver,
+                                                 GAsyncResult         *result,
+                                                 GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void       g_resolver_free_targets              (GList                *targets);
+
+/**
+ * G_RESOLVER_ERROR:
+ *
+ * Error domain for #GResolver. Errors in this domain will be from the
+ * #GResolverError enumeration. See #GError for more information on
+ * error domains.
+ */
+#define G_RESOLVER_ERROR (g_resolver_error_quark ())
+GLIB_AVAILABLE_IN_ALL
+GQuark g_resolver_error_quark (void);
+
+G_END_DECLS
+
+#endif /* __G_RESOLVER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gresource.h b/dist/usr/include/glib-2.0/gio/gresource.h
new file mode 100644
index 0000000..2db343c
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gresource.h
@@ -0,0 +1,131 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_RESOURCE_H__
+#define __G_RESOURCE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_TYPE_RESOURCE:
+ *
+ * The #GType for #GResource.
+ */
+#define G_TYPE_RESOURCE (g_resource_get_type ())
+
+
+/**
+ * G_RESOURCE_ERROR:
+ *
+ * Error domain for #GResource. Errors in this domain will be from the
+ * #GResourceError enumeration. See #GError for more information on
+ * error domains.
+ */
+#define G_RESOURCE_ERROR (g_resource_error_quark ())
+GLIB_AVAILABLE_IN_2_32
+GQuark g_resource_error_quark (void);
+
+typedef struct _GStaticResource GStaticResource;
+
+struct _GStaticResource {
+  const guint8 *data;
+  gsize data_len;
+  GResource *resource;
+  GStaticResource *next;
+  gpointer padding;
+};
+
+GLIB_AVAILABLE_IN_2_32
+GType         g_resource_get_type            (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_32
+GResource *   g_resource_new_from_data       (GBytes                *data,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+GResource *   g_resource_ref                 (GResource             *resource);
+GLIB_AVAILABLE_IN_2_32
+void          g_resource_unref               (GResource             *resource);
+GLIB_AVAILABLE_IN_2_32
+GResource *   g_resource_load                (const gchar           *filename,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+GInputStream *g_resource_open_stream         (GResource             *resource,
+					      const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+GBytes *      g_resource_lookup_data         (GResource             *resource,
+					      const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+char **       g_resource_enumerate_children  (GResource             *resource,
+					      const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+gboolean      g_resource_get_info            (GResource             *resource,
+					      const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      gsize                 *size,
+					      guint32               *flags,
+					      GError               **error);
+
+GLIB_AVAILABLE_IN_2_32
+void          g_resources_register           (GResource             *resource);
+GLIB_AVAILABLE_IN_2_32
+void          g_resources_unregister         (GResource             *resource);
+GLIB_AVAILABLE_IN_2_32
+GInputStream *g_resources_open_stream        (const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+GBytes *      g_resources_lookup_data        (const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+char **       g_resources_enumerate_children (const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      GError               **error);
+GLIB_AVAILABLE_IN_2_32
+gboolean      g_resources_get_info           (const char            *path,
+					      GResourceLookupFlags   lookup_flags,
+					      gsize                 *size,
+					      guint32               *flags,
+					      GError               **error);
+
+
+GLIB_AVAILABLE_IN_2_32
+void          g_static_resource_init          (GStaticResource *static_resource);
+GLIB_AVAILABLE_IN_2_32
+void          g_static_resource_fini          (GStaticResource *static_resource);
+GLIB_AVAILABLE_IN_2_32
+GResource    *g_static_resource_get_resource  (GStaticResource *static_resource);
+
+G_END_DECLS
+
+#endif /* __G_RESOURCE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gseekable.h b/dist/usr/include/glib-2.0/gio/gseekable.h
new file mode 100644
index 0000000..245eb07
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gseekable.h
@@ -0,0 +1,105 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SEEKABLE_H__
+#define __G_SEEKABLE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SEEKABLE            (g_seekable_get_type ())
+#define G_SEEKABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SEEKABLE, GSeekable))
+#define G_IS_SEEKABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SEEKABLE))
+#define G_SEEKABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SEEKABLE, GSeekableIface))
+
+/**
+ * GSeekable:
+ *
+ * Seek object for streaming operations.
+ **/
+typedef struct _GSeekableIface   GSeekableIface;
+
+/**
+ * GSeekableIface:
+ * @g_iface: The parent interface.
+ * @tell: Tells the current location within a stream.
+ * @can_seek: Checks if seeking is supported by the stream.
+ * @seek: Seeks to a location within a stream.
+ * @can_truncate: Checks if truncation is supported by the stream.
+ * @truncate_fn: Truncates a stream.
+ *
+ * Provides an interface for implementing seekable functionality on I/O Streams.
+ **/
+struct _GSeekableIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  goffset     (* tell)	         (GSeekable    *seekable);
+
+  gboolean    (* can_seek)       (GSeekable    *seekable);
+  gboolean    (* seek)	         (GSeekable    *seekable,
+				  goffset       offset,
+				  GSeekType     type,
+				  GCancellable *cancellable,
+				  GError      **error);
+
+  gboolean    (* can_truncate)   (GSeekable    *seekable);
+  gboolean    (* truncate_fn)    (GSeekable    *seekable,
+				  goffset       offset,
+				  GCancellable *cancellable,
+				  GError       **error);
+
+  /* TODO: Async seek/truncate */
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_seekable_get_type     (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+goffset  g_seekable_tell         (GSeekable     *seekable);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_seekable_can_seek     (GSeekable     *seekable);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_seekable_seek         (GSeekable     *seekable,
+				  goffset        offset,
+				  GSeekType      type,
+				  GCancellable  *cancellable,
+				  GError       **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_seekable_can_truncate (GSeekable     *seekable);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_seekable_truncate     (GSeekable     *seekable,
+				  goffset        offset,
+				  GCancellable  *cancellable,
+				  GError       **error);
+
+G_END_DECLS
+
+
+#endif /* __G_SEEKABLE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsettings.h b/dist/usr/include/glib-2.0/gio/gsettings.h
new file mode 100644
index 0000000..ad19623
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsettings.h
@@ -0,0 +1,326 @@
+/*
+ * Copyright © 2009, 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SETTINGS_H__
+#define __G_SETTINGS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsettingsschema.h>
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SETTINGS                                     (g_settings_get_type ())
+#define G_SETTINGS(inst)                                    (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SETTINGS, GSettings))
+#define G_SETTINGS_CLASS(class)                             (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SETTINGS, GSettingsClass))
+#define G_IS_SETTINGS(inst)                                 (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_SETTINGS))
+#define G_IS_SETTINGS_CLASS(class)                          (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_SETTINGS))
+#define G_SETTINGS_GET_CLASS(inst)                          (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SETTINGS, GSettingsClass))
+
+typedef struct _GSettingsPrivate                            GSettingsPrivate;
+typedef struct _GSettingsClass                              GSettingsClass;
+
+struct _GSettingsClass
+{
+  GObjectClass parent_class;
+
+  /* Signals */
+  void        (*writable_changed)      (GSettings    *settings,
+                                        const gchar  *key);
+  void        (*changed)               (GSettings    *settings,
+                                        const gchar  *key);
+  gboolean    (*writable_change_event) (GSettings    *settings,
+                                        GQuark        key);
+  gboolean    (*change_event)          (GSettings    *settings,
+                                        const GQuark *keys,
+                                        gint          n_keys);
+
+  gpointer padding[20];
+};
+
+struct _GSettings
+{
+  GObject parent_instance;
+  GSettingsPrivate *priv;
+};
+
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_settings_get_type                             (void);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar * const *   g_settings_list_schemas                         (void);
+GLIB_AVAILABLE_IN_ALL
+const gchar * const *   g_settings_list_relocatable_schemas             (void);
+GLIB_AVAILABLE_IN_ALL
+GSettings *             g_settings_new                                  (const gchar        *schema_id);
+GLIB_AVAILABLE_IN_ALL
+GSettings *             g_settings_new_with_path                        (const gchar        *schema_id,
+                                                                         const gchar        *path);
+GLIB_AVAILABLE_IN_ALL
+GSettings *             g_settings_new_with_backend                     (const gchar        *schema_id,
+                                                                         GSettingsBackend   *backend);
+GLIB_AVAILABLE_IN_ALL
+GSettings *             g_settings_new_with_backend_and_path            (const gchar        *schema_id,
+                                                                         GSettingsBackend   *backend,
+                                                                         const gchar        *path);
+GLIB_AVAILABLE_IN_2_32
+GSettings *             g_settings_new_full                             (GSettingsSchema    *schema,
+                                                                         GSettingsBackend   *backend,
+                                                                         const gchar        *path);
+GLIB_AVAILABLE_IN_ALL
+gchar **                g_settings_list_children                        (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+gchar **                g_settings_list_keys                            (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_settings_get_range                            (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_range_check                          (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         GVariant           *value);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_value                            (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         GVariant           *value);
+GLIB_AVAILABLE_IN_ALL
+GVariant *              g_settings_get_value                            (GSettings          *settings,
+                                                                         const gchar        *key);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set                                  (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         const gchar        *format,
+                                                                         ...);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_get                                  (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         const gchar        *format,
+                                                                         ...);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_reset                                (GSettings          *settings,
+                                                                         const gchar        *key);
+
+GLIB_AVAILABLE_IN_ALL
+gint                    g_settings_get_int                              (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_int                              (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         gint                value);
+GLIB_AVAILABLE_IN_ALL
+guint                   g_settings_get_uint                             (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_uint                             (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         guint               value);
+GLIB_AVAILABLE_IN_ALL
+gchar *                 g_settings_get_string                           (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_string                           (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         const gchar        *value);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_get_boolean                          (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_boolean                          (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         gboolean            value);
+GLIB_AVAILABLE_IN_ALL
+gdouble                 g_settings_get_double                           (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_double                           (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         gdouble             value);
+GLIB_AVAILABLE_IN_ALL
+gchar **                g_settings_get_strv                             (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_strv                             (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         const gchar *const *value);
+GLIB_AVAILABLE_IN_ALL
+gint                    g_settings_get_enum                             (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_enum                             (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         gint                value);
+GLIB_AVAILABLE_IN_ALL
+guint                   g_settings_get_flags                            (GSettings          *settings,
+                                                                         const gchar        *key);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_set_flags                            (GSettings          *settings,
+                                                                         const gchar        *key,
+                                                                         guint               value);
+GLIB_AVAILABLE_IN_ALL
+GSettings *             g_settings_get_child                            (GSettings          *settings,
+                                                                         const gchar        *name);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_is_writable                          (GSettings          *settings,
+                                                                         const gchar        *name);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_delay                                (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_apply                                (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_revert                               (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_settings_get_has_unapplied                    (GSettings          *settings);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_sync                                 (void);
+
+/**
+ * GSettingsBindSetMapping:
+ * @value: a #GValue containing the property value to map
+ * @expected_type: the #GVariantType to create
+ * @user_data: user data that was specified when the binding was created
+ *
+ * The type for the function that is used to convert an object property
+ * value to a #GVariant for storing it in #GSettings.
+ *
+ * Returns: a new #GVariant holding the data from @value,
+ *     or %NULL in case of an error
+ */
+typedef GVariant *    (*GSettingsBindSetMapping)                        (const GValue       *value,
+                                                                         const GVariantType *expected_type,
+                                                                         gpointer            user_data);
+
+/**
+ * GSettingsBindGetMapping:
+ * @value: return location for the property value
+ * @variant: the #GVariant
+ * @user_data: user data that was specified when the binding was created
+ *
+ * The type for the function that is used to convert from #GSettings to
+ * an object property. The @value is already initialized to hold values
+ * of the appropriate type.
+ *
+ * Returns: %TRUE if the conversion succeeded, %FALSE in case of an error
+ */
+typedef gboolean      (*GSettingsBindGetMapping)                        (GValue             *value,
+                                                                         GVariant           *variant,
+                                                                         gpointer            user_data);
+
+/**
+ * GSettingsGetMapping:
+ * @value: the #GVariant to map, or %NULL
+ * @result: (out): the result of the mapping
+ * @user_data: (closure): the user data that was passed to
+ * g_settings_get_mapped()
+ *
+ * The type of the function that is used to convert from a value stored
+ * in a #GSettings to a value that is useful to the application.
+ *
+ * If the value is successfully mapped, the result should be stored at
+ * @result and %TRUE returned.  If mapping fails (for example, if @value
+ * is not in the right format) then %FALSE should be returned.
+ *
+ * If @value is %NULL then it means that the mapping function is being
+ * given a "last chance" to successfully return a valid value.  %TRUE
+ * must be returned in this case.
+ *
+ * Returns: %TRUE if the conversion succeeded, %FALSE in case of an error
+ **/
+typedef gboolean      (*GSettingsGetMapping)                            (GVariant           *value,
+                                                                         gpointer           *result,
+                                                                         gpointer            user_data);
+
+/**
+ * GSettingsBindFlags:
+ * @G_SETTINGS_BIND_DEFAULT: Equivalent to <literal>G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET</literal>
+ * @G_SETTINGS_BIND_GET: Update the #GObject property when the setting changes.
+ *     It is an error to use this flag if the property is not writable.
+ * @G_SETTINGS_BIND_SET: Update the setting when the #GObject property changes.
+ *     It is an error to use this flag if the property is not readable.
+ * @G_SETTINGS_BIND_NO_SENSITIVITY: Do not try to bind a "sensitivity" property to the writability of the setting
+ * @G_SETTINGS_BIND_GET_NO_CHANGES: When set in addition to #G_SETTINGS_BIND_GET, set the #GObject property
+ *     value initially from the setting, but do not listen for changes of the setting
+ * @G_SETTINGS_BIND_INVERT_BOOLEAN: When passed to g_settings_bind(), uses a pair of mapping functions that invert
+ *     the boolean value when mapping between the setting and the property.  The setting and property must both
+ *     be booleans.  You cannot pass this flag to g_settings_bind_with_mapping().
+ *
+ * Flags used when creating a binding. These flags determine in which
+ * direction the binding works. The default is to synchronize in both
+ * directions.
+ */
+typedef enum
+{
+  G_SETTINGS_BIND_DEFAULT,
+  G_SETTINGS_BIND_GET            = (1<<0),
+  G_SETTINGS_BIND_SET            = (1<<1),
+  G_SETTINGS_BIND_NO_SENSITIVITY = (1<<2),
+  G_SETTINGS_BIND_GET_NO_CHANGES = (1<<3),
+  G_SETTINGS_BIND_INVERT_BOOLEAN = (1<<4)
+} GSettingsBindFlags;
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_bind                                 (GSettings               *settings,
+                                                                         const gchar             *key,
+                                                                         gpointer                 object,
+                                                                         const gchar             *property,
+                                                                         GSettingsBindFlags       flags);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_bind_with_mapping                    (GSettings               *settings,
+                                                                         const gchar             *key,
+                                                                         gpointer                 object,
+                                                                         const gchar             *property,
+                                                                         GSettingsBindFlags       flags,
+                                                                         GSettingsBindGetMapping  get_mapping,
+                                                                         GSettingsBindSetMapping  set_mapping,
+                                                                         gpointer                 user_data,
+                                                                         GDestroyNotify           destroy);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_bind_writable                        (GSettings               *settings,
+                                                                         const gchar             *key,
+                                                                         gpointer                 object,
+                                                                         const gchar             *property,
+                                                                         gboolean                 inverted);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_unbind                               (gpointer                 object,
+                                                                         const gchar             *property);
+
+GLIB_AVAILABLE_IN_2_32
+GAction *               g_settings_create_action                        (GSettings               *settings,
+                                                                         const gchar             *key);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer                g_settings_get_mapped                           (GSettings               *settings,
+                                                                         const gchar             *key,
+                                                                         GSettingsGetMapping      mapping,
+                                                                         gpointer                 user_data);
+
+G_END_DECLS
+
+#endif  /* __G_SETTINGS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsettingsbackend.h b/dist/usr/include/glib-2.0/gio/gsettingsbackend.h
new file mode 100644
index 0000000..293ca65
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsettingsbackend.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright © 2009, 2010 Codethink Limited
+ * Copyright © 2010 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 licence, 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ *          Matthias Clasen <mclasen@redhat.com>
+ */
+
+#ifndef __G_SETTINGS_BACKEND_H__
+#define __G_SETTINGS_BACKEND_H__
+
+#if !defined (G_SETTINGS_ENABLE_BACKEND) && !defined (GIO_COMPILATION)
+#error "You must define G_SETTINGS_ENABLE_BACKEND before including <gio/gsettingsbackend.h>."
+#endif
+
+#define __GIO_GIO_H_INSIDE__
+#include <gio/giotypes.h>
+#undef __GIO_GIO_H_INSIDE__
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SETTINGS_BACKEND                             (g_settings_backend_get_type ())
+#define G_SETTINGS_BACKEND(inst)                            (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SETTINGS_BACKEND, GSettingsBackend))
+#define G_SETTINGS_BACKEND_CLASS(class)                     (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SETTINGS_BACKEND, GSettingsBackendClass))
+#define G_IS_SETTINGS_BACKEND(inst)                         (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SETTINGS_BACKEND))
+#define G_IS_SETTINGS_BACKEND_CLASS(class)                  (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SETTINGS_BACKEND))
+#define G_SETTINGS_BACKEND_GET_CLASS(inst)                  (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SETTINGS_BACKEND, GSettingsBackendClass))
+
+/**
+ * G_SETTINGS_BACKEND_EXTENSION_POINT_NAME:
+ *
+ * Extension point for #GSettingsBackend functionality.
+ **/
+#define G_SETTINGS_BACKEND_EXTENSION_POINT_NAME "gsettings-backend"
+
+/**
+ * GSettingsBackend:
+ *
+ * An implementation of a settings storage repository.
+ **/
+typedef struct _GSettingsBackendPrivate                     GSettingsBackendPrivate;
+typedef struct _GSettingsBackendClass                       GSettingsBackendClass;
+
+struct _GSettingsBackendClass
+{
+  GObjectClass parent_class;
+
+  GVariant *    (*read)             (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     const GVariantType  *expected_type,
+                                     gboolean             default_value);
+
+  gboolean      (*get_writable)     (GSettingsBackend    *backend,
+                                     const gchar         *key);
+
+  gboolean      (*write)            (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     GVariant            *value,
+                                     gpointer             origin_tag);
+  gboolean      (*write_tree)       (GSettingsBackend    *backend,
+                                     GTree               *tree,
+                                     gpointer             origin_tag);
+  void          (*reset)            (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     gpointer             origin_tag);
+
+  void          (*subscribe)        (GSettingsBackend    *backend,
+                                     const gchar         *name);
+  void          (*unsubscribe)      (GSettingsBackend    *backend,
+                                     const gchar         *name);
+  void          (*sync)             (GSettingsBackend    *backend);
+
+  GPermission * (*get_permission)   (GSettingsBackend    *backend,
+                                     const gchar         *path);
+
+  gpointer padding[24];
+};
+
+struct _GSettingsBackend
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GSettingsBackendPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_settings_backend_get_type                     (void);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_changed                      (GSettingsBackend    *backend,
+                                                                         const gchar         *key,
+                                                                         gpointer             origin_tag);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_path_changed                 (GSettingsBackend    *backend,
+                                                                         const gchar         *path,
+                                                                         gpointer             origin_tag);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_flatten_tree                 (GTree               *tree,
+                                                                         gchar              **path,
+                                                                         const gchar       ***keys,
+                                                                         GVariant          ***values);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_keys_changed                 (GSettingsBackend    *backend,
+                                                                         const gchar         *path,
+                                                                         gchar const * const *items,
+                                                                         gpointer             origin_tag);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_path_writable_changed        (GSettingsBackend    *backend,
+                                                                         const gchar         *path);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_writable_changed             (GSettingsBackend    *backend,
+                                                                         const gchar         *key);
+GLIB_AVAILABLE_IN_ALL
+void                    g_settings_backend_changed_tree                 (GSettingsBackend    *backend,
+                                                                         GTree               *tree,
+                                                                         gpointer             origin_tag);
+
+GLIB_AVAILABLE_IN_ALL
+GSettingsBackend *      g_settings_backend_get_default                  (void);
+
+GLIB_AVAILABLE_IN_ALL
+GSettingsBackend *      g_keyfile_settings_backend_new                  (const gchar         *filename,
+                                                                         const gchar         *root_path,
+                                                                         const gchar         *root_group);
+
+GLIB_AVAILABLE_IN_ALL
+GSettingsBackend *      g_null_settings_backend_new                     (void);
+
+GLIB_AVAILABLE_IN_ALL
+GSettingsBackend *      g_memory_settings_backend_new                   (void);
+
+G_END_DECLS
+
+#endif /* __G_SETTINGS_BACKEND_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsettingsschema.h b/dist/usr/include/glib-2.0/gio/gsettingsschema.h
new file mode 100644
index 0000000..a857758
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsettingsschema.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ * Copyright © 2011 Canonical Limited
+ *
+ * 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 licence, 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_SETTINGS_SCHEMA_H__
+#define __G_SETTINGS_SCHEMA_H__
+
+#include <glib-object.h>
+
+typedef struct _GSettingsSchemaSource                       GSettingsSchemaSource;
+typedef struct _GSettingsSchema                             GSettingsSchema;
+
+#define                 G_TYPE_SETTINGS_SCHEMA_SOURCE                   (g_settings_schema_source_get_type ())
+GLIB_AVAILABLE_IN_2_32
+GType                   g_settings_schema_source_get_type               (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+GSettingsSchemaSource * g_settings_schema_source_get_default            (void);
+GLIB_AVAILABLE_IN_2_32
+GSettingsSchemaSource * g_settings_schema_source_ref                    (GSettingsSchemaSource  *source);
+GLIB_AVAILABLE_IN_2_32
+void                    g_settings_schema_source_unref                  (GSettingsSchemaSource  *source);
+
+GLIB_AVAILABLE_IN_2_32
+GSettingsSchemaSource * g_settings_schema_source_new_from_directory     (const gchar            *directory,
+                                                                         GSettingsSchemaSource  *parent,
+                                                                         gboolean                trusted,
+                                                                         GError                **error);
+
+GLIB_AVAILABLE_IN_2_32
+GSettingsSchema *       g_settings_schema_source_lookup                 (GSettingsSchemaSource  *source,
+                                                                         const gchar            *schema_id,
+                                                                         gboolean                recursive);
+
+#define                 G_TYPE_SETTINGS_SCHEMA                          (g_settings_schema_get_type ())
+GLIB_AVAILABLE_IN_2_32
+GType                   g_settings_schema_get_type                      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+GSettingsSchema *       g_settings_schema_ref                           (GSettingsSchema        *schema);
+GLIB_AVAILABLE_IN_2_32
+void                    g_settings_schema_unref                         (GSettingsSchema        *schema);
+
+GLIB_AVAILABLE_IN_2_32
+const gchar *           g_settings_schema_get_id                        (GSettingsSchema        *schema);
+GLIB_AVAILABLE_IN_2_32
+const gchar *           g_settings_schema_get_path                      (GSettingsSchema        *schema);
+
+#endif /* __G_SETTINGS_SCHEMA_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsimpleaction.h b/dist/usr/include/glib-2.0/gio/gsimpleaction.h
new file mode 100644
index 0000000..b89b1a9
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsimpleaction.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SIMPLE_ACTION_H__
+#define __G_SIMPLE_ACTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SIMPLE_ACTION                                (g_simple_action_get_type ())
+#define G_SIMPLE_ACTION(inst)                               (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SIMPLE_ACTION, GSimpleAction))
+#define G_IS_SIMPLE_ACTION(inst)                            (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SIMPLE_ACTION))
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_simple_action_get_type                        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSimpleAction *         g_simple_action_new                             (const gchar        *name,
+                                                                         const GVariantType *parameter_type);
+
+GLIB_AVAILABLE_IN_ALL
+GSimpleAction *         g_simple_action_new_stateful                    (const gchar        *name,
+                                                                         const GVariantType *parameter_type,
+                                                                         GVariant           *state);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_simple_action_set_enabled                     (GSimpleAction      *simple,
+                                                                         gboolean            enabled);
+
+GLIB_AVAILABLE_IN_2_30
+void                    g_simple_action_set_state                       (GSimpleAction      *simple,
+                                                                         GVariant           *value);
+
+G_END_DECLS
+
+#endif /* __G_SIMPLE_ACTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsimpleactiongroup.h b/dist/usr/include/glib-2.0/gio/gsimpleactiongroup.h
new file mode 100644
index 0000000..5f17626
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsimpleactiongroup.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SIMPLE_ACTION_GROUP_H__
+#define __G_SIMPLE_ACTION_GROUP_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include "gactiongroup.h"
+#include "gactionmap.h"
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SIMPLE_ACTION_GROUP                          (g_simple_action_group_get_type ())
+#define G_SIMPLE_ACTION_GROUP(inst)                         (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroup))
+#define G_SIMPLE_ACTION_GROUP_CLASS(class)                  (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroupClass))
+#define G_IS_SIMPLE_ACTION_GROUP(inst)                      (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SIMPLE_ACTION_GROUP))
+#define G_IS_SIMPLE_ACTION_GROUP_CLASS(class)               (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SIMPLE_ACTION_GROUP))
+#define G_SIMPLE_ACTION_GROUP_GET_CLASS(inst)               (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SIMPLE_ACTION_GROUP, GSimpleActionGroupClass))
+
+typedef struct _GSimpleActionGroupPrivate                   GSimpleActionGroupPrivate;
+typedef struct _GSimpleActionGroupClass                     GSimpleActionGroupClass;
+
+/**
+ * GSimpleActionGroup:
+ *
+ * The #GSimpleActionGroup structure contains private data and should only be accessed using the provided API.
+ *
+ * Since: 2.28
+ */
+struct _GSimpleActionGroup
+{
+  /*< private >*/
+  GObject parent_instance;
+
+  GSimpleActionGroupPrivate *priv;
+};
+
+struct _GSimpleActionGroupClass
+{
+  /*< private >*/
+  GObjectClass parent_class;
+
+  /*< private >*/
+  gpointer padding[12];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_simple_action_group_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSimpleActionGroup *    g_simple_action_group_new                       (void);
+
+GLIB_AVAILABLE_IN_ALL
+GAction *               g_simple_action_group_lookup                    (GSimpleActionGroup *simple,
+                                                                         const gchar        *action_name);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_simple_action_group_insert                    (GSimpleActionGroup *simple,
+                                                                         GAction            *action);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_simple_action_group_remove                    (GSimpleActionGroup *simple,
+                                                                         const gchar        *action_name);
+
+GLIB_AVAILABLE_IN_2_30
+void                    g_simple_action_group_add_entries               (GSimpleActionGroup *simple,
+                                                                         const GActionEntry *entries,
+                                                                         gint                n_entries,
+                                                                         gpointer            user_data);
+
+G_END_DECLS
+
+#endif /* __G_SIMPLE_ACTION_GROUP_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsimpleasyncresult.h b/dist/usr/include/glib-2.0/gio/gsimpleasyncresult.h
new file mode 100644
index 0000000..7134f84
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsimpleasyncresult.h
@@ -0,0 +1,164 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SIMPLE_ASYNC_RESULT_H__
+#define __G_SIMPLE_ASYNC_RESULT_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SIMPLE_ASYNC_RESULT         (g_simple_async_result_get_type ())
+#define G_SIMPLE_ASYNC_RESULT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResult))
+#define G_SIMPLE_ASYNC_RESULT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResultClass))
+#define G_IS_SIMPLE_ASYNC_RESULT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SIMPLE_ASYNC_RESULT))
+#define G_IS_SIMPLE_ASYNC_RESULT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SIMPLE_ASYNC_RESULT))
+#define G_SIMPLE_ASYNC_RESULT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SIMPLE_ASYNC_RESULT, GSimpleAsyncResultClass))
+
+/**
+ * GSimpleAsyncResult:
+ *
+ * A simple implementation of #GAsyncResult.
+ **/
+typedef struct _GSimpleAsyncResultClass   GSimpleAsyncResultClass;
+
+
+GLIB_AVAILABLE_IN_ALL
+GType               g_simple_async_result_get_type         (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSimpleAsyncResult *g_simple_async_result_new              (GObject                 *source_object,
+							    GAsyncReadyCallback      callback,
+							    gpointer                 user_data,
+							    gpointer                 source_tag);
+GLIB_AVAILABLE_IN_ALL
+GSimpleAsyncResult *g_simple_async_result_new_error        (GObject                 *source_object,
+							    GAsyncReadyCallback      callback,
+							    gpointer                 user_data,
+							    GQuark                   domain,
+							    gint                     code,
+							    const char              *format,
+							    ...) G_GNUC_PRINTF (6, 7);
+GLIB_AVAILABLE_IN_ALL
+GSimpleAsyncResult *g_simple_async_result_new_from_error   (GObject                 *source_object,
+							    GAsyncReadyCallback      callback,
+							    gpointer                 user_data,
+							    const GError            *error);
+GLIB_AVAILABLE_IN_ALL
+GSimpleAsyncResult *g_simple_async_result_new_take_error   (GObject                 *source_object,
+							    GAsyncReadyCallback      callback,
+							    gpointer                 user_data,
+							    GError                  *error);
+
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult      *simple,
+                                                               gpointer                 op_res,
+                                                               GDestroyNotify           destroy_op_res);
+GLIB_AVAILABLE_IN_ALL
+gpointer            g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult      *simple);
+
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_op_res_gssize   (GSimpleAsyncResult      *simple,
+                                                               gssize                   op_res);
+GLIB_AVAILABLE_IN_ALL
+gssize              g_simple_async_result_get_op_res_gssize   (GSimpleAsyncResult      *simple);
+
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult      *simple,
+                                                               gboolean                 op_res);
+GLIB_AVAILABLE_IN_ALL
+gboolean            g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult      *simple);
+
+
+
+GLIB_AVAILABLE_IN_2_32
+void                g_simple_async_result_set_check_cancellable (GSimpleAsyncResult *simple,
+                                                                 GCancellable       *check_cancellable);
+GLIB_AVAILABLE_IN_ALL
+gpointer            g_simple_async_result_get_source_tag   (GSimpleAsyncResult      *simple);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_handle_cancellation (GSimpleAsyncResult      *simple,
+								   gboolean          handle_cancellation);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_complete         (GSimpleAsyncResult      *simple);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_complete_in_idle (GSimpleAsyncResult      *simple);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_run_in_thread    (GSimpleAsyncResult      *simple,
+							    GSimpleAsyncThreadFunc   func,
+							    int                      io_priority,
+							    GCancellable            *cancellable);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_from_error   (GSimpleAsyncResult      *simple,
+							    const GError            *error);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_take_error       (GSimpleAsyncResult      *simple,
+							    GError            *error);
+GLIB_AVAILABLE_IN_ALL
+gboolean            g_simple_async_result_propagate_error  (GSimpleAsyncResult      *simple,
+							    GError                 **dest);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_error        (GSimpleAsyncResult      *simple,
+							    GQuark                   domain,
+							    gint                     code,
+							    const char              *format,
+							    ...) G_GNUC_PRINTF (4, 5);
+GLIB_AVAILABLE_IN_ALL
+void                g_simple_async_result_set_error_va     (GSimpleAsyncResult      *simple,
+							    GQuark                   domain,
+							    gint                     code,
+							    const char              *format,
+							    va_list                  args)
+							    G_GNUC_PRINTF(4, 0);
+GLIB_AVAILABLE_IN_ALL
+gboolean            g_simple_async_result_is_valid         (GAsyncResult            *result,
+                                                            GObject                 *source,
+                                                            gpointer                 source_tag);
+
+GLIB_AVAILABLE_IN_ALL
+void g_simple_async_report_error_in_idle  (GObject            *object,
+					   GAsyncReadyCallback callback,
+					   gpointer            user_data,
+					   GQuark              domain,
+					   gint                code,
+					   const char         *format,
+					   ...) G_GNUC_PRINTF(6, 7);
+GLIB_AVAILABLE_IN_ALL
+void g_simple_async_report_gerror_in_idle (GObject            *object,
+					   GAsyncReadyCallback callback,
+					   gpointer            user_data,
+					   const GError       *error);
+GLIB_AVAILABLE_IN_ALL
+void g_simple_async_report_take_gerror_in_idle (GObject            *object,
+                                                GAsyncReadyCallback callback,
+                                                gpointer            user_data,
+                                                GError             *error);
+
+G_END_DECLS
+
+
+
+#endif /* __G_SIMPLE_ASYNC_RESULT_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsimplepermission.h b/dist/usr/include/glib-2.0/gio/gsimplepermission.h
new file mode 100644
index 0000000..4cc336b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsimplepermission.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SIMPLE_PERMISSION_H__
+#define __G_SIMPLE_PERMISSION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SIMPLE_PERMISSION      (g_simple_permission_get_type ())
+#define G_SIMPLE_PERMISSION(inst)     (G_TYPE_CHECK_INSTANCE_CAST ((inst),   \
+                                       G_TYPE_SIMPLE_PERMISSION,             \
+                                       GSimplePermission))
+#define G_IS_SIMPLE_PERMISSION(inst)  (G_TYPE_CHECK_INSTANCE_TYPE ((inst),   \
+                                       G_TYPE_SIMPLE_PERMISSION))
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_simple_permission_get_type            (void);
+GLIB_AVAILABLE_IN_ALL
+GPermission *           g_simple_permission_new                 (gboolean allowed);
+
+G_END_DECLS
+
+#endif /* __G_SIMPLE_PERMISSION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsimpleproxyresolver.h b/dist/usr/include/glib-2.0/gio/gsimpleproxyresolver.h
new file mode 100644
index 0000000..a451f99
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsimpleproxyresolver.h
@@ -0,0 +1,91 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2010, 2013 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_SIMPLE_PROXY_RESOLVER_H__
+#define __G_SIMPLE_PROXY_RESOLVER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gproxyresolver.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SIMPLE_PROXY_RESOLVER         (g_simple_proxy_resolver_get_type ())
+#define G_SIMPLE_PROXY_RESOLVER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolver))
+#define G_SIMPLE_PROXY_RESOLVER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolverClass))
+#define G_IS_SIMPLE_PROXY_RESOLVER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SIMPLE_PROXY_RESOLVER))
+#define G_IS_SIMPLE_PROXY_RESOLVER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SIMPLE_PROXY_RESOLVER))
+#define G_SIMPLE_PROXY_RESOLVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SIMPLE_PROXY_RESOLVER, GSimpleProxyResolverClass))
+
+/**
+ * GSimpleProxyResolver:
+ *
+ * A #GProxyResolver implementation for using a fixed set of proxies.
+ **/
+typedef struct _GSimpleProxyResolver GSimpleProxyResolver;
+typedef struct _GSimpleProxyResolverPrivate GSimpleProxyResolverPrivate;
+typedef struct _GSimpleProxyResolverClass GSimpleProxyResolverClass;
+
+struct _GSimpleProxyResolver
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GSimpleProxyResolverPrivate *priv;
+};
+
+struct _GSimpleProxyResolverClass
+{
+  GObjectClass parent_class;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+GLIB_AVAILABLE_IN_2_36
+GType           g_simple_proxy_resolver_get_type          (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_36
+GProxyResolver *g_simple_proxy_resolver_new               (const gchar           *default_proxy,
+                                                           gchar                **ignore_hosts);
+
+GLIB_AVAILABLE_IN_2_36
+void            g_simple_proxy_resolver_set_default_proxy (GSimpleProxyResolver  *resolver,
+                                                           const gchar           *default_proxy);
+
+GLIB_AVAILABLE_IN_2_36
+void            g_simple_proxy_resolver_set_ignore_hosts  (GSimpleProxyResolver  *resolver,
+                                                           gchar                **ignore_hosts);
+
+GLIB_AVAILABLE_IN_2_36
+void            g_simple_proxy_resolver_set_uri_proxy     (GSimpleProxyResolver  *resolver,
+                                                           const gchar           *uri_scheme,
+                                                           const gchar           *proxy);
+
+G_END_DECLS
+
+#endif /* __G_SIMPLE_PROXY_RESOLVER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocket.h b/dist/usr/include/glib-2.0/gio/gsocket.h
new file mode 100644
index 0000000..edc0292
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocket.h
@@ -0,0 +1,291 @@
+/*
+ * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima
+ * Copyright © 2009 Codethink Limited
+ *
+ * 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ *          Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SOCKET_H__
+#define __G_SOCKET_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET                                       (g_socket_get_type ())
+#define G_SOCKET(inst)                                      (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET, GSocket))
+#define G_SOCKET_CLASS(class)                               (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET, GSocketClass))
+#define G_IS_SOCKET(inst)                                   (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET))
+#define G_IS_SOCKET_CLASS(class)                            (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET))
+#define G_SOCKET_GET_CLASS(inst)                            (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET, GSocketClass))
+
+typedef struct _GSocketPrivate                              GSocketPrivate;
+typedef struct _GSocketClass                                GSocketClass;
+
+struct _GSocketClass
+{
+  GObjectClass parent_class;
+
+  /*< private >*/
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+  void (*_g_reserved7) (void);
+  void (*_g_reserved8) (void);
+  void (*_g_reserved9) (void);
+  void (*_g_reserved10) (void);
+};
+
+struct _GSocket
+{
+  GObject parent_instance;
+  GSocketPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_socket_get_type                (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GSocket *              g_socket_new                     (GSocketFamily            family,
+							 GSocketType              type,
+							 GSocketProtocol          protocol,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+GSocket *              g_socket_new_from_fd             (gint                     fd,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+int                    g_socket_get_fd                  (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GSocketFamily          g_socket_get_family              (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GSocketType            g_socket_get_socket_type         (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GSocketProtocol        g_socket_get_protocol            (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *       g_socket_get_local_address       (GSocket                 *socket,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *       g_socket_get_remote_address      (GSocket                 *socket,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+void                   g_socket_set_blocking            (GSocket                 *socket,
+							 gboolean                 blocking);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_get_blocking            (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+void                   g_socket_set_keepalive           (GSocket                 *socket,
+							 gboolean                 keepalive);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_get_keepalive           (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+gint                   g_socket_get_listen_backlog      (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+void                   g_socket_set_listen_backlog      (GSocket                 *socket,
+							 gint                     backlog);
+GLIB_AVAILABLE_IN_ALL
+guint                  g_socket_get_timeout             (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+void                   g_socket_set_timeout             (GSocket                 *socket,
+							 guint                    timeout);
+
+GLIB_AVAILABLE_IN_2_32
+guint                  g_socket_get_ttl                 (GSocket                 *socket);
+GLIB_AVAILABLE_IN_2_32
+void                   g_socket_set_ttl                 (GSocket                 *socket,
+                                                         guint                    ttl);
+
+GLIB_AVAILABLE_IN_2_32
+gboolean               g_socket_get_broadcast           (GSocket                 *socket);
+GLIB_AVAILABLE_IN_2_32
+void                   g_socket_set_broadcast           (GSocket                 *socket,
+                                                         gboolean		  broadcast);
+
+GLIB_AVAILABLE_IN_2_32
+gboolean               g_socket_get_multicast_loopback  (GSocket                 *socket);
+GLIB_AVAILABLE_IN_2_32
+void                   g_socket_set_multicast_loopback  (GSocket                 *socket,
+                                                         gboolean		  loopback);
+GLIB_AVAILABLE_IN_2_32
+guint                  g_socket_get_multicast_ttl       (GSocket                 *socket);
+GLIB_AVAILABLE_IN_2_32
+void                   g_socket_set_multicast_ttl       (GSocket                 *socket,
+                                                         guint                    ttl);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_is_connected            (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_bind                    (GSocket                 *socket,
+							 GSocketAddress          *address,
+							 gboolean                 allow_reuse,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_2_32
+gboolean               g_socket_join_multicast_group    (GSocket                 *socket,
+                                                         GInetAddress            *group,
+                                                         gboolean                 source_specific,
+                                                         const gchar             *iface,
+                                                         GError                 **error);
+GLIB_AVAILABLE_IN_2_32
+gboolean               g_socket_leave_multicast_group   (GSocket                 *socket,
+                                                         GInetAddress            *group,
+                                                         gboolean                 source_specific,
+                                                         const gchar             *iface,
+                                                         GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_connect                 (GSocket                 *socket,
+							 GSocketAddress          *address,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_check_connect_result    (GSocket                 *socket,
+							 GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_get_available_bytes     (GSocket                 *socket);
+
+GLIB_AVAILABLE_IN_ALL
+GIOCondition           g_socket_condition_check         (GSocket                 *socket,
+							 GIOCondition             condition);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_condition_wait          (GSocket                 *socket,
+							 GIOCondition             condition,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_2_32
+gboolean               g_socket_condition_timed_wait    (GSocket                 *socket,
+							 GIOCondition             condition,
+							 gint64                   timeout,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+GSocket *              g_socket_accept                  (GSocket                 *socket,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_listen                  (GSocket                 *socket,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_receive                 (GSocket                 *socket,
+							 gchar                   *buffer,
+							 gsize                    size,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_receive_from            (GSocket                 *socket,
+							 GSocketAddress         **address,
+							 gchar                   *buffer,
+							 gsize                    size,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_send                    (GSocket                 *socket,
+							 const gchar             *buffer,
+							 gsize                    size,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_send_to                 (GSocket                 *socket,
+							 GSocketAddress          *address,
+							 const gchar             *buffer,
+							 gsize                    size,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_receive_message         (GSocket                 *socket,
+							 GSocketAddress         **address,
+							 GInputVector            *vectors,
+							 gint                     num_vectors,
+							 GSocketControlMessage ***messages,
+							 gint                    *num_messages,
+							 gint                    *flags,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_send_message            (GSocket                 *socket,
+							 GSocketAddress          *address,
+							 GOutputVector           *vectors,
+							 gint                     num_vectors,
+							 GSocketControlMessage  **messages,
+							 gint                     num_messages,
+							 gint                     flags,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_close                   (GSocket                 *socket,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_shutdown                (GSocket                 *socket,
+							 gboolean                 shutdown_read,
+							 gboolean                 shutdown_write,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_is_closed               (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GSource *              g_socket_create_source           (GSocket                 *socket,
+							 GIOCondition             condition,
+							 GCancellable            *cancellable);
+GLIB_AVAILABLE_IN_ALL
+gboolean               g_socket_speaks_ipv4             (GSocket                 *socket);
+GLIB_AVAILABLE_IN_ALL
+GCredentials          *g_socket_get_credentials         (GSocket                 *socket,
+                                                         GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_receive_with_blocking   (GSocket                 *socket,
+							 gchar                   *buffer,
+							 gsize                    size,
+							 gboolean                 blocking,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_ALL
+gssize                 g_socket_send_with_blocking      (GSocket                 *socket,
+							 const gchar             *buffer,
+							 gsize                    size,
+							 gboolean                 blocking,
+							 GCancellable            *cancellable,
+							 GError                 **error);
+
+GLIB_AVAILABLE_IN_2_36
+gboolean               g_socket_get_option              (GSocket                 *socket,
+							 gint                     level,
+							 gint                     optname,
+							 gint                    *value,
+							 GError                 **error);
+GLIB_AVAILABLE_IN_2_36
+gboolean               g_socket_set_option              (GSocket                 *socket,
+							 gint                     level,
+							 gint                     optname,
+							 gint                     value,
+							 GError                 **error);
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketaddress.h b/dist/usr/include/glib-2.0/gio/gsocketaddress.h
new file mode 100644
index 0000000..dce3139
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketaddress.h
@@ -0,0 +1,84 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima
+ *
+ * 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ */
+
+#ifndef __G_SOCKET_ADDRESS_H__
+#define __G_SOCKET_ADDRESS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_ADDRESS         (g_socket_address_get_type ())
+#define G_SOCKET_ADDRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SOCKET_ADDRESS, GSocketAddress))
+#define G_SOCKET_ADDRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SOCKET_ADDRESS, GSocketAddressClass))
+#define G_IS_SOCKET_ADDRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SOCKET_ADDRESS))
+#define G_IS_SOCKET_ADDRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SOCKET_ADDRESS))
+#define G_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SOCKET_ADDRESS, GSocketAddressClass))
+
+typedef struct _GSocketAddressClass   GSocketAddressClass;
+
+struct _GSocketAddress
+{
+  GObject parent_instance;
+};
+
+struct _GSocketAddressClass
+{
+  GObjectClass parent_class;
+
+  GSocketFamily  (*get_family)      (GSocketAddress *address);
+
+  gssize         (*get_native_size) (GSocketAddress *address);
+
+  gboolean       (*to_native)       (GSocketAddress *address,
+                                     gpointer        dest,
+                                     gsize           destlen,
+				     GError        **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_socket_address_get_type        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketFamily         g_socket_address_get_family      (GSocketAddress *address);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *      g_socket_address_new_from_native (gpointer        native,
+                                                        gsize           len);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_socket_address_to_native       (GSocketAddress *address,
+                                                        gpointer        dest,
+                                                        gsize           destlen,
+							GError        **error);
+
+GLIB_AVAILABLE_IN_ALL
+gssize                g_socket_address_get_native_size (GSocketAddress *address);
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_ADDRESS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketaddressenumerator.h b/dist/usr/include/glib-2.0/gio/gsocketaddressenumerator.h
new file mode 100644
index 0000000..bf415d1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketaddressenumerator.h
@@ -0,0 +1,93 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_SOCKET_ADDRESS_ENUMERATOR_H__
+#define __G_SOCKET_ADDRESS_ENUMERATOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_ADDRESS_ENUMERATOR         (g_socket_address_enumerator_get_type ())
+#define G_SOCKET_ADDRESS_ENUMERATOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumerator))
+#define G_SOCKET_ADDRESS_ENUMERATOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumeratorClass))
+#define G_IS_SOCKET_ADDRESS_ENUMERATOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR))
+#define G_IS_SOCKET_ADDRESS_ENUMERATOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_SOCKET_ADDRESS_ENUMERATOR))
+#define G_SOCKET_ADDRESS_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_SOCKET_ADDRESS_ENUMERATOR, GSocketAddressEnumeratorClass))
+
+/**
+ * GSocketAddressEnumerator:
+ *
+ * Enumerator type for objects that contain or generate
+ * #GSocketAddress<!-- -->es.
+ */
+typedef struct _GSocketAddressEnumeratorClass GSocketAddressEnumeratorClass;
+
+struct _GSocketAddressEnumerator
+{
+  GObject parent_instance;
+
+};
+
+struct _GSocketAddressEnumeratorClass
+{
+  GObjectClass parent_class;
+
+  /* Virtual Table */
+
+  GSocketAddress * (* next)        (GSocketAddressEnumerator  *enumerator,
+				    GCancellable              *cancellable,
+				    GError                   **error);
+
+  void             (* next_async)  (GSocketAddressEnumerator  *enumerator,
+				    GCancellable              *cancellable,
+				    GAsyncReadyCallback        callback,
+				    gpointer                   user_data);
+  GSocketAddress * (* next_finish) (GSocketAddressEnumerator  *enumerator,
+				    GAsyncResult              *result,
+				    GError                   **error);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_socket_address_enumerator_get_type        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_socket_address_enumerator_next        (GSocketAddressEnumerator  *enumerator,
+							 GCancellable              *cancellable,
+							 GError                   **error);
+
+GLIB_AVAILABLE_IN_ALL
+void            g_socket_address_enumerator_next_async  (GSocketAddressEnumerator  *enumerator,
+							 GCancellable              *cancellable,
+							 GAsyncReadyCallback        callback,
+							 gpointer                   user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress *g_socket_address_enumerator_next_finish (GSocketAddressEnumerator  *enumerator,
+							 GAsyncResult              *result,
+							 GError                   **error);
+
+G_END_DECLS
+
+
+#endif /* __G_SOCKET_ADDRESS_ENUMERATOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketclient.h b/dist/usr/include/glib-2.0/gio/gsocketclient.h
new file mode 100644
index 0000000..72bace7
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketclient.h
@@ -0,0 +1,199 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2008, 2009 Codethink Limited
+ * Copyright © 2009 Red Hat, Inc
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SOCKET_CLIENT_H__
+#define __G_SOCKET_CLIENT_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_CLIENT                                (g_socket_client_get_type ())
+#define G_SOCKET_CLIENT(inst)                               (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET_CLIENT, GSocketClient))
+#define G_SOCKET_CLIENT_CLASS(class)                        (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET_CLIENT, GSocketClientClass))
+#define G_IS_SOCKET_CLIENT(inst)                            (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET_CLIENT))
+#define G_IS_SOCKET_CLIENT_CLASS(class)                     (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET_CLIENT))
+#define G_SOCKET_CLIENT_GET_CLASS(inst)                     (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET_CLIENT, GSocketClientClass))
+
+typedef struct _GSocketClientPrivate                        GSocketClientPrivate;
+typedef struct _GSocketClientClass                          GSocketClientClass;
+
+struct _GSocketClientClass
+{
+  GObjectClass parent_class;
+
+  void (* event) (GSocketClient       *client,
+		  GSocketClientEvent  event,
+		  GSocketConnectable  *connectable,
+		  GIOStream           *connection);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+};
+
+struct _GSocketClient
+{
+  GObject parent_instance;
+  GSocketClientPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_socket_client_get_type                        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketClient          *g_socket_client_new                             (void);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketFamily           g_socket_client_get_family                      (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_family                      (GSocketClient        *client,
+									 GSocketFamily         family);
+GLIB_AVAILABLE_IN_ALL
+GSocketType             g_socket_client_get_socket_type                 (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_socket_type                 (GSocketClient        *client,
+									 GSocketType           type);
+GLIB_AVAILABLE_IN_ALL
+GSocketProtocol         g_socket_client_get_protocol                    (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_protocol                    (GSocketClient        *client,
+									 GSocketProtocol       protocol);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress         *g_socket_client_get_local_address               (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_local_address               (GSocketClient        *client,
+									 GSocketAddress       *address);
+GLIB_AVAILABLE_IN_ALL
+guint                   g_socket_client_get_timeout                     (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_timeout                     (GSocketClient        *client,
+									 guint                 timeout);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_socket_client_get_enable_proxy                (GSocketClient        *client);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_set_enable_proxy                (GSocketClient        *client,
+    									 gboolean	      enable);
+
+GLIB_AVAILABLE_IN_2_28
+gboolean                g_socket_client_get_tls                         (GSocketClient        *client);
+GLIB_AVAILABLE_IN_2_28
+void                    g_socket_client_set_tls                         (GSocketClient        *client,
+									 gboolean              tls);
+GLIB_AVAILABLE_IN_2_28
+GTlsCertificateFlags    g_socket_client_get_tls_validation_flags        (GSocketClient        *client);
+GLIB_AVAILABLE_IN_2_28
+void                    g_socket_client_set_tls_validation_flags        (GSocketClient        *client,
+									 GTlsCertificateFlags  flags);
+GLIB_AVAILABLE_IN_2_36
+GProxyResolver         *g_socket_client_get_proxy_resolver              (GSocketClient        *client);
+GLIB_AVAILABLE_IN_2_36
+void                    g_socket_client_set_proxy_resolver              (GSocketClient        *client,
+                                                                         GProxyResolver       *proxy_resolver);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect                         (GSocketClient        *client,
+                                                                         GSocketConnectable   *connectable,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_to_host                 (GSocketClient        *client,
+									 const gchar          *host_and_port,
+									 guint16               default_port,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_to_service              (GSocketClient        *client,
+									 const gchar          *domain,
+									 const gchar          *service,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_2_26
+GSocketConnection *     g_socket_client_connect_to_uri                  (GSocketClient        *client,
+									 const gchar          *uri,
+									 guint16               default_port,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_connect_async                   (GSocketClient        *client,
+                                                                         GSocketConnectable   *connectable,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_finish                  (GSocketClient        *client,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_connect_to_host_async           (GSocketClient        *client,
+									 const gchar          *host_and_port,
+									 guint16               default_port,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_to_host_finish          (GSocketClient        *client,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_connect_to_service_async        (GSocketClient        *client,
+									 const gchar          *domain,
+									 const gchar          *service,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_to_service_finish       (GSocketClient        *client,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_client_connect_to_uri_async            (GSocketClient        *client,
+									 const gchar          *uri,
+									 guint16               default_port,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_client_connect_to_uri_finish           (GSocketClient        *client,
+                                                                         GAsyncResult         *result,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void			g_socket_client_add_application_proxy		(GSocketClient        *client,
+									 const gchar          *protocol);
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_CLIENT_H___ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketconnectable.h b/dist/usr/include/glib-2.0/gio/gsocketconnectable.h
new file mode 100644
index 0000000..5a80ea8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketconnectable.h
@@ -0,0 +1,77 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_SOCKET_CONNECTABLE_H__
+#define __G_SOCKET_CONNECTABLE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_CONNECTABLE            (g_socket_connectable_get_type ())
+#define G_SOCKET_CONNECTABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SOCKET_CONNECTABLE, GSocketConnectable))
+#define G_IS_SOCKET_CONNECTABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SOCKET_CONNECTABLE))
+#define G_SOCKET_CONNECTABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_SOCKET_CONNECTABLE, GSocketConnectableIface))
+
+/**
+ * GSocketConnectable:
+ *
+ * Interface for objects that contain or generate #GSocketAddress<!-- -->es.
+ */
+typedef struct _GSocketConnectableIface GSocketConnectableIface;
+
+/**
+ * GSocketConnectableIface:
+ * @g_iface: The parent interface.
+ * @enumerate: Creates a #GSocketAddressEnumerator
+ * @proxy_enumerate: Creates a #GProxyAddressEnumerator
+ *
+ * Provides an interface for returning a #GSocketAddressEnumerator
+ * and #GProxyAddressEnumerator
+ */
+struct _GSocketConnectableIface
+{
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GSocketAddressEnumerator * (* enumerate)       (GSocketConnectable *connectable);
+
+  GSocketAddressEnumerator * (* proxy_enumerate) (GSocketConnectable *connectable);
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                     g_socket_connectable_get_type  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddressEnumerator *g_socket_connectable_enumerate (GSocketConnectable *connectable);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketAddressEnumerator *g_socket_connectable_proxy_enumerate (GSocketConnectable *connectable);
+
+G_END_DECLS
+
+
+#endif /* __G_SOCKET_CONNECTABLE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketconnection.h b/dist/usr/include/glib-2.0/gio/gsocketconnection.h
new file mode 100644
index 0000000..b93201f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketconnection.h
@@ -0,0 +1,117 @@
+/* GIO - GLib Input, Output and Streaming Library
+ * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima
+ * Copyright © 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ *          Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SOCKET_CONNECTION_H__
+#define __G_SOCKET_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <glib-object.h>
+#include <gio/gsocket.h>
+#include <gio/giostream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_CONNECTION                            (g_socket_connection_get_type ())
+#define G_SOCKET_CONNECTION(inst)                           (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET_CONNECTION, GSocketConnection))
+#define G_SOCKET_CONNECTION_CLASS(class)                    (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET_CONNECTION, GSocketConnectionClass))
+#define G_IS_SOCKET_CONNECTION(inst)                        (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET_CONNECTION))
+#define G_IS_SOCKET_CONNECTION_CLASS(class)                 (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET_CONNECTION))
+#define G_SOCKET_CONNECTION_GET_CLASS(inst)                 (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET_CONNECTION, GSocketConnectionClass))
+
+typedef struct _GSocketConnectionPrivate                    GSocketConnectionPrivate;
+typedef struct _GSocketConnectionClass                      GSocketConnectionClass;
+
+struct _GSocketConnectionClass
+{
+  GIOStreamClass parent_class;
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+};
+
+struct _GSocketConnection
+{
+  GIOStream parent_instance;
+  GSocketConnectionPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_socket_connection_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_32
+gboolean           g_socket_connection_is_connected              (GSocketConnection  *connection);
+GLIB_AVAILABLE_IN_2_32
+gboolean           g_socket_connection_connect                   (GSocketConnection  *connection,
+								  GSocketAddress     *address,
+								  GCancellable       *cancellable,
+								  GError            **error);
+GLIB_AVAILABLE_IN_2_32
+void               g_socket_connection_connect_async             (GSocketConnection  *connection,
+								  GSocketAddress     *address,
+								  GCancellable       *cancellable,
+								  GAsyncReadyCallback callback,
+								  gpointer            user_data);
+GLIB_AVAILABLE_IN_2_32
+gboolean           g_socket_connection_connect_finish            (GSocketConnection  *connection,
+								  GAsyncResult       *result,
+								  GError            **error);
+
+GLIB_AVAILABLE_IN_ALL
+GSocket           *g_socket_connection_get_socket                (GSocketConnection  *connection);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress    *g_socket_connection_get_local_address         (GSocketConnection  *connection,
+								  GError            **error);
+GLIB_AVAILABLE_IN_ALL
+GSocketAddress    *g_socket_connection_get_remote_address        (GSocketConnection  *connection,
+								  GError            **error);
+
+GLIB_AVAILABLE_IN_ALL
+void               g_socket_connection_factory_register_type     (GType               g_type,
+								  GSocketFamily       family,
+								  GSocketType         type,
+								  gint                protocol);
+GLIB_AVAILABLE_IN_ALL
+GType              g_socket_connection_factory_lookup_type       (GSocketFamily       family,
+								  GSocketType         type,
+								  gint                protocol_id);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *g_socket_connection_factory_create_connection (GSocket            *socket);
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketcontrolmessage.h b/dist/usr/include/glib-2.0/gio/gsocketcontrolmessage.h
new file mode 100644
index 0000000..aaa7c93
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketcontrolmessage.h
@@ -0,0 +1,111 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_SOCKET_CONTROL_MESSAGE_H__
+#define __G_SOCKET_CONTROL_MESSAGE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_CONTROL_MESSAGE                       (g_socket_control_message_get_type ())
+#define G_SOCKET_CONTROL_MESSAGE(inst)                      (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET_CONTROL_MESSAGE,                          \
+                                                             GSocketControlMessage))
+#define G_SOCKET_CONTROL_MESSAGE_CLASS(class)               (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET_CONTROL_MESSAGE,                          \
+                                                             GSocketControlMessageClass))
+#define G_IS_SOCKET_CONTROL_MESSAGE(inst)                   (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET_CONTROL_MESSAGE))
+#define G_IS_SOCKET_CONTROL_MESSAGE_CLASS(class)            (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET_CONTROL_MESSAGE))
+#define G_SOCKET_CONTROL_MESSAGE_GET_CLASS(inst)            (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET_CONTROL_MESSAGE,                          \
+                                                             GSocketControlMessageClass))
+
+typedef struct _GSocketControlMessagePrivate                GSocketControlMessagePrivate;
+typedef struct _GSocketControlMessageClass                  GSocketControlMessageClass;
+
+/**
+ * GSocketControlMessageClass:
+ * @get_size: gets the size of the message.
+ * @get_level: gets the protocol of the message.
+ * @get_type: gets the protocol specific type of the message.
+ * @serialize: Writes out the message data.
+ * @deserialize: Tries to deserialize a message.
+ **/
+
+struct _GSocketControlMessageClass
+{
+  GObjectClass parent_class;
+
+  gsize                  (* get_size)  (GSocketControlMessage  *message);
+  int                    (* get_level) (GSocketControlMessage  *message);
+  int                    (* get_type)  (GSocketControlMessage  *message);
+  void                   (* serialize) (GSocketControlMessage  *message,
+					gpointer                data);
+  GSocketControlMessage *(* deserialize) (int                   level,
+					  int                   type,
+					  gsize                 size,
+					  gpointer              data);
+
+  /*< private >*/
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+struct _GSocketControlMessage
+{
+  GObject parent_instance;
+  GSocketControlMessagePrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_socket_control_message_get_type     (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+gsize                  g_socket_control_message_get_size     (GSocketControlMessage *message);
+GLIB_AVAILABLE_IN_ALL
+int                    g_socket_control_message_get_level    (GSocketControlMessage *message);
+GLIB_AVAILABLE_IN_ALL
+int                    g_socket_control_message_get_msg_type (GSocketControlMessage *message);
+GLIB_AVAILABLE_IN_ALL
+void                   g_socket_control_message_serialize    (GSocketControlMessage *message,
+							      gpointer               data);
+GLIB_AVAILABLE_IN_ALL
+GSocketControlMessage *g_socket_control_message_deserialize  (int                    level,
+							      int                    type,
+							      gsize                  size,
+							      gpointer               data);
+
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_CONTROL_MESSAGE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketlistener.h b/dist/usr/include/glib-2.0/gio/gsocketlistener.h
new file mode 100644
index 0000000..09f3985
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketlistener.h
@@ -0,0 +1,152 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima
+ * Copyright © 2009 Codethink Limited
+ * Copyright © 2009 Red Hat, Inc
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Christian Kellner <gicmo@gnome.org>
+ *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
+ *          Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SOCKET_LISTENER_H__
+#define __G_SOCKET_LISTENER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_LISTENER                              (g_socket_listener_get_type ())
+#define G_SOCKET_LISTENER(inst)                             (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET_LISTENER, GSocketListener))
+#define G_SOCKET_LISTENER_CLASS(class)                      (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET_LISTENER, GSocketListenerClass))
+#define G_IS_SOCKET_LISTENER(inst)                          (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET_LISTENER))
+#define G_IS_SOCKET_LISTENER_CLASS(class)                   (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET_LISTENER))
+#define G_SOCKET_LISTENER_GET_CLASS(inst)                   (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET_LISTENER, GSocketListenerClass))
+
+typedef struct _GSocketListenerPrivate                      GSocketListenerPrivate;
+typedef struct _GSocketListenerClass                        GSocketListenerClass;
+
+/**
+ * GSocketListenerClass:
+ * @changed: virtual method called when the set of socket listened to changes
+ **/
+struct _GSocketListenerClass
+{
+  GObjectClass parent_class;
+
+  void (* changed) (GSocketListener *listener);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+};
+
+struct _GSocketListener
+{
+  GObject parent_instance;
+  GSocketListenerPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_socket_listener_get_type                      (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketListener *       g_socket_listener_new                           (void);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_listener_set_backlog                   (GSocketListener     *listener,
+									 int                  listen_backlog);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_socket_listener_add_socket                    (GSocketListener     *listener,
+                                                                         GSocket             *socket,
+									 GObject             *source_object,
+									 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_socket_listener_add_address                   (GSocketListener     *listener,
+                                                                         GSocketAddress      *address,
+									 GSocketType          type,
+									 GSocketProtocol      protocol,
+									 GObject             *source_object,
+                                                                         GSocketAddress     **effective_address,
+									 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean                g_socket_listener_add_inet_port                 (GSocketListener     *listener,
+                                                                         guint16              port,
+									 GObject             *source_object,
+									 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+guint16                 g_socket_listener_add_any_inet_port             (GSocketListener     *listener,
+									 GObject             *source_object,
+									 GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+GSocket *               g_socket_listener_accept_socket                 (GSocketListener      *listener,
+									 GObject             **source_object,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_listener_accept_socket_async           (GSocketListener      *listener,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+GSocket *               g_socket_listener_accept_socket_finish          (GSocketListener      *listener,
+                                                                         GAsyncResult         *result,
+									 GObject             **source_object,
+                                                                         GError              **error);
+
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_listener_accept                        (GSocketListener      *listener,
+									 GObject             **source_object,
+                                                                         GCancellable         *cancellable,
+                                                                         GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_listener_accept_async                  (GSocketListener      *listener,
+                                                                         GCancellable         *cancellable,
+                                                                         GAsyncReadyCallback   callback,
+                                                                         gpointer              user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *     g_socket_listener_accept_finish                 (GSocketListener      *listener,
+                                                                         GAsyncResult         *result,
+									 GObject             **source_object,
+                                                                         GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                    g_socket_listener_close                         (GSocketListener      *listener);
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_LISTENER_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsocketservice.h b/dist/usr/include/glib-2.0/gio/gsocketservice.h
new file mode 100644
index 0000000..d10b566
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsocketservice.h
@@ -0,0 +1,93 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ * Copyright © 2009 Red Hat, Inc
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_SOCKET_SERVICE_H__
+#define __G_SOCKET_SERVICE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsocketlistener.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_SOCKET_SERVICE                               (g_socket_service_get_type ())
+#define G_SOCKET_SERVICE(inst)                              (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_SOCKET_SERVICE, GSocketService))
+#define G_SOCKET_SERVICE_CLASS(class)                       (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_SOCKET_SERVICE, GSocketServiceClass))
+#define G_IS_SOCKET_SERVICE(inst)                           (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_SOCKET_SERVICE))
+#define G_IS_SOCKET_SERVICE_CLASS(class)                    (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_SOCKET_SERVICE))
+#define G_SOCKET_SERVICE_GET_CLASS(inst)                    (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_SOCKET_SERVICE, GSocketServiceClass))
+
+typedef struct _GSocketServicePrivate                       GSocketServicePrivate;
+typedef struct _GSocketServiceClass                         GSocketServiceClass;
+
+/**
+ * GSocketServiceClass:
+ * @incomming: signal emitted when new connections are accepted
+ */
+struct _GSocketServiceClass
+{
+  GSocketListenerClass parent_class;
+
+  gboolean (* incoming) (GSocketService    *service,
+                         GSocketConnection *connection,
+			 GObject           *source_object);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+};
+
+struct _GSocketService
+{
+  GSocketListener parent_instance;
+  GSocketServicePrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_socket_service_get_type  (void);
+
+GLIB_AVAILABLE_IN_ALL
+GSocketService *g_socket_service_new       (void);
+GLIB_AVAILABLE_IN_ALL
+void            g_socket_service_start     (GSocketService *service);
+GLIB_AVAILABLE_IN_ALL
+void            g_socket_service_stop      (GSocketService *service);
+GLIB_AVAILABLE_IN_ALL
+gboolean        g_socket_service_is_active (GSocketService *service);
+
+
+G_END_DECLS
+
+#endif /* __G_SOCKET_SERVICE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gsrvtarget.h b/dist/usr/include/glib-2.0/gio/gsrvtarget.h
new file mode 100644
index 0000000..6135ef2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gsrvtarget.h
@@ -0,0 +1,61 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2008 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_SRV_TARGET_H__
+#define __G_SRV_TARGET_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+GType g_srv_target_get_type (void) G_GNUC_CONST;
+#define G_TYPE_SRV_TARGET (g_srv_target_get_type ())
+
+GLIB_AVAILABLE_IN_ALL
+GSrvTarget  *g_srv_target_new          (const gchar *hostname,
+				        guint16      port,
+				        guint16      priority,
+				        guint16      weight);
+GLIB_AVAILABLE_IN_ALL
+GSrvTarget  *g_srv_target_copy         (GSrvTarget  *target);
+GLIB_AVAILABLE_IN_ALL
+void         g_srv_target_free         (GSrvTarget  *target);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *g_srv_target_get_hostname (GSrvTarget  *target);
+GLIB_AVAILABLE_IN_ALL
+guint16      g_srv_target_get_port     (GSrvTarget  *target);
+GLIB_AVAILABLE_IN_ALL
+guint16      g_srv_target_get_priority (GSrvTarget  *target);
+GLIB_AVAILABLE_IN_ALL
+guint16      g_srv_target_get_weight   (GSrvTarget  *target);
+
+GLIB_AVAILABLE_IN_ALL
+GList       *g_srv_target_list_sort    (GList       *targets);
+
+G_END_DECLS
+
+#endif /* __G_SRV_TARGET_H__ */
+
diff --git a/dist/usr/include/glib-2.0/gio/gtask.h b/dist/usr/include/glib-2.0/gio/gtask.h
new file mode 100644
index 0000000..d5a2d77
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtask.h
@@ -0,0 +1,160 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2011 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_TASK_H__
+#define __G_TASK_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TASK         (g_task_get_type ())
+#define G_TASK(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TASK, GTask))
+#define G_TASK_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TASK, GTaskClass))
+#define G_IS_TASK(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TASK))
+#define G_IS_TASK_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TASK))
+#define G_TASK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TASK, GTaskClass))
+
+typedef struct _GTaskClass   GTaskClass;
+
+GLIB_AVAILABLE_IN_2_36
+GType         g_task_get_type              (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_36
+GTask        *g_task_new                   (gpointer             source_object,
+                                            GCancellable        *cancellable,
+                                            GAsyncReadyCallback  callback,
+                                            gpointer             callback_data);
+
+GLIB_AVAILABLE_IN_2_36
+void          g_task_report_error          (gpointer             source_object,
+                                            GAsyncReadyCallback  callback,
+                                            gpointer             callback_data,
+                                            gpointer             source_tag,
+                                            GError              *error);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_report_new_error      (gpointer             source_object,
+                                            GAsyncReadyCallback  callback,
+                                            gpointer             callback_data,
+                                            gpointer             source_tag,
+                                            GQuark               domain,
+                                            gint                 code,
+                                            const char          *format,
+                                            ...) G_GNUC_PRINTF(7, 8);
+
+GLIB_AVAILABLE_IN_2_36
+void          g_task_set_task_data         (GTask               *task,
+                                            gpointer             task_data,
+                                            GDestroyNotify       task_data_destroy);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_set_priority          (GTask               *task,
+                                            gint                 priority);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_set_check_cancellable (GTask               *task,
+                                            gboolean             check_cancellable);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_set_source_tag        (GTask               *task,
+                                            gpointer             source_tag);
+
+GLIB_AVAILABLE_IN_2_36
+gpointer      g_task_get_source_object     (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+gpointer      g_task_get_task_data         (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+gint          g_task_get_priority          (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+GMainContext *g_task_get_context           (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+GCancellable *g_task_get_cancellable       (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_get_check_cancellable (GTask               *task);
+GLIB_AVAILABLE_IN_2_36
+gpointer      g_task_get_source_tag        (GTask               *task);
+
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_is_valid              (gpointer             result,
+                                            gpointer             source_object);
+
+
+typedef void (*GTaskThreadFunc)           (GTask           *task,
+                                           gpointer         source_object,
+                                           gpointer         task_data,
+                                           GCancellable    *cancellable);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_run_in_thread        (GTask           *task,
+                                           GTaskThreadFunc  task_func);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_run_in_thread_sync   (GTask           *task,
+                                           GTaskThreadFunc  task_func);
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_set_return_on_cancel (GTask           *task,
+                                           gboolean         return_on_cancel);
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_get_return_on_cancel (GTask           *task);
+
+GLIB_AVAILABLE_IN_2_36
+void          g_task_attach_source        (GTask           *task,
+                                           GSource         *source,
+                                           GSourceFunc      callback);
+
+
+GLIB_AVAILABLE_IN_2_36
+void          g_task_return_pointer            (GTask           *task,
+                                                gpointer         result,
+                                                GDestroyNotify   result_destroy);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_return_boolean            (GTask           *task,
+                                                gboolean         result);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_return_int                (GTask           *task,
+                                                gssize           result);
+
+GLIB_AVAILABLE_IN_2_36
+void          g_task_return_error              (GTask           *task,
+                                                GError          *error);
+GLIB_AVAILABLE_IN_2_36
+void          g_task_return_new_error          (GTask           *task,
+                                                GQuark           domain,
+                                                gint             code,
+                                                const char      *format,
+                                                ...) G_GNUC_PRINTF (4, 5);
+
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_return_error_if_cancelled (GTask           *task);
+
+GLIB_AVAILABLE_IN_2_36
+gpointer      g_task_propagate_pointer         (GTask           *task,
+                                                GError         **error);
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_propagate_boolean         (GTask           *task,
+                                                GError         **error);
+GLIB_AVAILABLE_IN_2_36
+gssize        g_task_propagate_int             (GTask           *task,
+                                                GError         **error);
+GLIB_AVAILABLE_IN_2_36
+gboolean      g_task_had_error                 (GTask           *task);
+
+G_END_DECLS
+
+#endif /* __G_TASK_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtcpconnection.h b/dist/usr/include/glib-2.0/gio/gtcpconnection.h
new file mode 100644
index 0000000..3d02f3a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtcpconnection.h
@@ -0,0 +1,71 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2008, 2009 Codethink Limited
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_TCP_CONNECTION_H__
+#define __G_TCP_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsocketconnection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TCP_CONNECTION                               (g_tcp_connection_get_type ())
+#define G_TCP_CONNECTION(inst)                              (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_TCP_CONNECTION, GTcpConnection))
+#define G_TCP_CONNECTION_CLASS(class)                       (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_TCP_CONNECTION, GTcpConnectionClass))
+#define G_IS_TCP_CONNECTION(inst)                           (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_TCP_CONNECTION))
+#define G_IS_TCP_CONNECTION_CLASS(class)                    (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_TCP_CONNECTION))
+#define G_TCP_CONNECTION_GET_CLASS(inst)                    (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_TCP_CONNECTION, GTcpConnectionClass))
+
+typedef struct _GTcpConnectionPrivate                       GTcpConnectionPrivate;
+typedef struct _GTcpConnectionClass                         GTcpConnectionClass;
+
+struct _GTcpConnectionClass
+{
+  GSocketConnectionClass parent_class;
+};
+
+struct _GTcpConnection
+{
+  GSocketConnection parent_instance;
+  GTcpConnectionPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_tcp_connection_get_type                (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+void     g_tcp_connection_set_graceful_disconnect (GTcpConnection *connection,
+						   gboolean        graceful_disconnect);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_tcp_connection_get_graceful_disconnect (GTcpConnection *connection);
+
+G_END_DECLS
+
+#endif /* __G_TCP_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtcpwrapperconnection.h b/dist/usr/include/glib-2.0/gio/gtcpwrapperconnection.h
new file mode 100644
index 0000000..43b1e3e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtcpwrapperconnection.h
@@ -0,0 +1,71 @@
+/* GIO - GLib Input, Output and Streaming Library
+ * Copyright © 2010 Collabora Ltd.
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+ *
+ */
+
+#ifndef __G_TCP_WRAPPER_CONNECTION_H__
+#define __G_TCP_WRAPPER_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gtcpconnection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TCP_WRAPPER_CONNECTION            (g_tcp_wrapper_connection_get_type ())
+#define G_TCP_WRAPPER_CONNECTION(inst)           (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                  G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnection))
+#define G_TCP_WRAPPER_CONNECTION_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                  G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnectionClass))
+#define G_IS_TCP_WRAPPER_CONNECTION(inst)        (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                  G_TYPE_TCP_WRAPPER_CONNECTION))
+#define G_IS_TCP_WRAPPER_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                  G_TYPE_TCP_WRAPPER_CONNECTION))
+#define G_TCP_WRAPPER_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                  G_TYPE_TCP_WRAPPER_CONNECTION, GTcpWrapperConnectionClass))
+
+typedef struct _GTcpWrapperConnectionPrivate GTcpWrapperConnectionPrivate;
+typedef struct _GTcpWrapperConnectionClass   GTcpWrapperConnectionClass;
+
+struct _GTcpWrapperConnectionClass
+{
+  GTcpConnectionClass parent_class;
+};
+
+struct _GTcpWrapperConnection
+{
+  GTcpConnection parent_instance;
+  GTcpWrapperConnectionPrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_tcp_wrapper_connection_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GSocketConnection *g_tcp_wrapper_connection_new                (GIOStream             *base_io_stream,
+								GSocket               *socket);
+GLIB_AVAILABLE_IN_ALL
+GIOStream         *g_tcp_wrapper_connection_get_base_io_stream (GTcpWrapperConnection *conn);
+
+G_END_DECLS
+
+#endif /* __G_TCP_WRAPPER_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtestdbus.h b/dist/usr/include/glib-2.0/gio/gtestdbus.h
new file mode 100644
index 0000000..00644d6
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtestdbus.h
@@ -0,0 +1,74 @@
+/* GIO testing utilities
+ *
+ * Copyright (C) 2008-2010 Red Hat, Inc.
+ * Copyright (C) 2012 Collabora Ltd. <http://www.collabora.co.uk/>
+ *
+ * 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.
+ *
+ * Authors: David Zeuthen <davidz@redhat.com>
+ *          Xavier Claessens <xavier.claessens@collabora.co.uk>
+ */
+
+#ifndef __G_TEST_DBUS_H__
+#define __G_TEST_DBUS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TEST_DBUS \
+    (g_test_dbus_get_type ())
+#define G_TEST_DBUS(obj) \
+    (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_TEST_DBUS, \
+        GTestDBus))
+#define G_IS_TEST_DBUS(obj) \
+    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_TEST_DBUS))
+
+GLIB_AVAILABLE_IN_2_34
+GType          g_test_dbus_get_type        (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_2_34
+GTestDBus *    g_test_dbus_new             (GTestDBusFlags flags);
+
+GLIB_AVAILABLE_IN_2_34
+GTestDBusFlags g_test_dbus_get_flags       (GTestDBus     *self);
+
+GLIB_AVAILABLE_IN_2_34
+const gchar *  g_test_dbus_get_bus_address (GTestDBus     *self);
+
+GLIB_AVAILABLE_IN_2_34
+void           g_test_dbus_add_service_dir (GTestDBus     *self,
+                                            const gchar   *path);
+
+GLIB_AVAILABLE_IN_2_34
+void           g_test_dbus_up              (GTestDBus     *self);
+
+GLIB_AVAILABLE_IN_2_34
+void           g_test_dbus_stop            (GTestDBus     *self);
+
+GLIB_AVAILABLE_IN_2_34
+void           g_test_dbus_down            (GTestDBus     *self);
+
+GLIB_AVAILABLE_IN_2_34
+void           g_test_dbus_unset           (void);
+
+G_END_DECLS
+
+#endif /* __G_TEST_DBUS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gthemedicon.h b/dist/usr/include/glib-2.0/gio/gthemedicon.h
new file mode 100644
index 0000000..4cbd29b
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gthemedicon.h
@@ -0,0 +1,70 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_THEMED_ICON_H__
+#define __G_THEMED_ICON_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_THEMED_ICON         (g_themed_icon_get_type ())
+#define G_THEMED_ICON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_THEMED_ICON, GThemedIcon))
+#define G_THEMED_ICON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_THEMED_ICON, GThemedIconClass))
+#define G_IS_THEMED_ICON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_THEMED_ICON))
+#define G_IS_THEMED_ICON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_THEMED_ICON))
+#define G_THEMED_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_THEMED_ICON, GThemedIconClass))
+
+/**
+ * GThemedIcon:
+ *
+ * An implementation of #GIcon for themed icons.
+ **/
+typedef struct _GThemedIconClass   GThemedIconClass;
+
+GLIB_AVAILABLE_IN_ALL
+GType  g_themed_icon_get_type                   (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GIcon *g_themed_icon_new                        (const char  *iconname);
+GLIB_AVAILABLE_IN_ALL
+GIcon *g_themed_icon_new_with_default_fallbacks (const char  *iconname);
+GLIB_AVAILABLE_IN_ALL
+GIcon *g_themed_icon_new_from_names             (char       **iconnames,
+                                                 int          len);
+GLIB_AVAILABLE_IN_ALL
+void   g_themed_icon_prepend_name               (GThemedIcon *icon,
+                                                 const char  *iconname);
+GLIB_AVAILABLE_IN_ALL
+void   g_themed_icon_append_name                (GThemedIcon *icon,
+                                                 const char  *iconname);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar* const * g_themed_icon_get_names     (GThemedIcon *icon);
+
+G_END_DECLS
+
+#endif /* __G_THEMED_ICON_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gthreadedsocketservice.h b/dist/usr/include/glib-2.0/gio/gthreadedsocketservice.h
new file mode 100644
index 0000000..229be7e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gthreadedsocketservice.h
@@ -0,0 +1,83 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2009 Codethink Limited
+ * Copyright © 2009 Red Hat, Inc
+ *
+ * This program 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 licence 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.
+ *
+ * Authors: Ryan Lortie <desrt@desrt.ca>
+ *          Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_THREADED_SOCKET_SERVICE_H__
+#define __G_THREADED_SOCKET_SERVICE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gsocketservice.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_THREADED_SOCKET_SERVICE                      (g_threaded_socket_service_get_type ())
+#define G_THREADED_SOCKET_SERVICE(inst)                     (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
+                                                             G_TYPE_THREADED_SOCKET_SERVICE,                         \
+                                                             GThreadedSocketService))
+#define G_THREADED_SOCKET_SERVICE_CLASS(class)              (G_TYPE_CHECK_CLASS_CAST ((class),                       \
+                                                             G_TYPE_THREADED_SOCKET_SERVICE,                         \
+                                                             GThreadedSocketServiceClass))
+#define G_IS_THREADED_SOCKET_SERVICE(inst)                  (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
+                                                             G_TYPE_THREADED_SOCKET_SERVICE))
+#define G_IS_THREADED_SOCKET_SERVICE_CLASS(class)           (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
+                                                             G_TYPE_THREADED_SOCKET_SERVICE))
+#define G_THREADED_SOCKET_SERVICE_GET_CLASS(inst)           (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
+                                                             G_TYPE_THREADED_SOCKET_SERVICE,                         \
+                                                             GThreadedSocketServiceClass))
+
+typedef struct _GThreadedSocketServicePrivate               GThreadedSocketServicePrivate;
+typedef struct _GThreadedSocketServiceClass                 GThreadedSocketServiceClass;
+
+struct _GThreadedSocketServiceClass
+{
+  GSocketServiceClass parent_class;
+
+  gboolean (* run) (GThreadedSocketService *service,
+                    GSocketConnection      *connection,
+                    GObject                *source_object);
+
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+};
+
+struct _GThreadedSocketService
+{
+  GSocketService parent_instance;
+  GThreadedSocketServicePrivate *priv;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                   g_threaded_socket_service_get_type              (void);
+GLIB_AVAILABLE_IN_ALL
+GSocketService *        g_threaded_socket_service_new                   (int max_threads);
+
+G_END_DECLS
+
+#endif /* __G_THREADED_SOCKET_SERVICE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsbackend.h b/dist/usr/include/glib-2.0/gio/gtlsbackend.h
new file mode 100644
index 0000000..19f08ad
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsbackend.h
@@ -0,0 +1,98 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_TLS_BACKEND_H__
+#define __G_TLS_BACKEND_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_TLS_BACKEND_EXTENSION_POINT_NAME:
+ *
+ * Extension point for TLS functionality via #GTlsBackend.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ */
+#define G_TLS_BACKEND_EXTENSION_POINT_NAME "gio-tls-backend"
+
+#define G_TYPE_TLS_BACKEND               (g_tls_backend_get_type ())
+#define G_TLS_BACKEND(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_TLS_BACKEND, GTlsBackend))
+#define G_IS_TLS_BACKEND(obj)	         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_TLS_BACKEND))
+#define G_TLS_BACKEND_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_TLS_BACKEND, GTlsBackendInterface))
+
+typedef struct _GTlsBackend          GTlsBackend;
+typedef struct _GTlsBackendInterface GTlsBackendInterface;
+
+/**
+ * GTlsBackendInterface:
+ * @g_iface: The parent interface.
+ * @supports_tls: returns whether the backend supports TLS.
+ * @get_default_database: returns a default #GTlsDatabase instance.
+ * @get_certificate_type: returns the #GTlsCertificate implementation type
+ * @get_client_connection_type: returns the #GTlsClientConnection implementation type
+ * @get_server_connection_type: returns the #GTlsServerConnection implementation type
+ * @get_file_database_type: returns the #GTlsFileDatabase implementation type.
+ *
+ * Provides an interface for describing TLS-related types.
+ *
+ * Since: 2.28
+ */
+struct _GTlsBackendInterface
+{
+  GTypeInterface g_iface;
+
+  /* methods */
+  gboolean       ( *supports_tls)               (GTlsBackend *backend);
+  GType          ( *get_certificate_type)       (void);
+  GType          ( *get_client_connection_type) (void);
+  GType          ( *get_server_connection_type) (void);
+  GType          ( *get_file_database_type)     (void);
+  GTlsDatabase * ( *get_default_database)       (GTlsBackend *backend);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_tls_backend_get_type                   (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsBackend *  g_tls_backend_get_default                (void);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsDatabase * g_tls_backend_get_default_database       (GTlsBackend *backend);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean       g_tls_backend_supports_tls               (GTlsBackend *backend);
+
+GLIB_AVAILABLE_IN_ALL
+GType          g_tls_backend_get_certificate_type       (GTlsBackend *backend);
+GLIB_AVAILABLE_IN_ALL
+GType          g_tls_backend_get_client_connection_type (GTlsBackend *backend);
+GLIB_AVAILABLE_IN_ALL
+GType          g_tls_backend_get_server_connection_type (GTlsBackend *backend);
+GLIB_AVAILABLE_IN_ALL
+GType          g_tls_backend_get_file_database_type     (GTlsBackend *backend);
+
+G_END_DECLS
+
+#endif /* __G_TLS_BACKEND_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlscertificate.h b/dist/usr/include/glib-2.0/gio/gtlscertificate.h
new file mode 100644
index 0000000..dd6c3a1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlscertificate.h
@@ -0,0 +1,94 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_TLS_CERTIFICATE_H__
+#define __G_TLS_CERTIFICATE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_CERTIFICATE            (g_tls_certificate_get_type ())
+#define G_TLS_CERTIFICATE(inst)           (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CERTIFICATE, GTlsCertificate))
+#define G_TLS_CERTIFICATE_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_CERTIFICATE, GTlsCertificateClass))
+#define G_IS_TLS_CERTIFICATE(inst)        (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CERTIFICATE))
+#define G_IS_TLS_CERTIFICATE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_CERTIFICATE))
+#define G_TLS_CERTIFICATE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_CERTIFICATE, GTlsCertificateClass))
+
+typedef struct _GTlsCertificateClass   GTlsCertificateClass;
+typedef struct _GTlsCertificatePrivate GTlsCertificatePrivate;
+
+struct _GTlsCertificate {
+  GObject parent_instance;
+
+  GTlsCertificatePrivate *priv;
+};
+
+struct _GTlsCertificateClass
+{
+  GObjectClass parent_class;
+
+  GTlsCertificateFlags  (* verify) (GTlsCertificate     *cert,
+				    GSocketConnectable  *identity,
+				    GTlsCertificate     *trusted_ca);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_tls_certificate_get_type           (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_certificate_new_from_pem       (const gchar         *data,
+							    gssize               length,
+							    GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_certificate_new_from_file      (const gchar         *file,
+							    GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_certificate_new_from_files     (const gchar         *cert_file,
+							    const gchar         *key_file,
+							    GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GList                *g_tls_certificate_list_new_from_file (const gchar         *file,
+							    GError             **error);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_certificate_get_issuer         (GTlsCertificate     *cert);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificateFlags  g_tls_certificate_verify             (GTlsCertificate     *cert,
+							    GSocketConnectable  *identity,
+							    GTlsCertificate     *trusted_ca);
+
+GLIB_AVAILABLE_IN_2_34
+gboolean              g_tls_certificate_is_same            (GTlsCertificate     *cert_one,
+                                                            GTlsCertificate     *cert_two);
+
+G_END_DECLS
+
+#endif /* __G_TLS_CERTIFICATE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsclientconnection.h b/dist/usr/include/glib-2.0/gio/gtlsclientconnection.h
new file mode 100644
index 0000000..aa216f4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsclientconnection.h
@@ -0,0 +1,73 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_TLS_CLIENT_CONNECTION_H__
+#define __G_TLS_CLIENT_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gtlsconnection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_CLIENT_CONNECTION                (g_tls_client_connection_get_type ())
+#define G_TLS_CLIENT_CONNECTION(inst)               (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CLIENT_CONNECTION, GTlsClientConnection))
+#define G_IS_TLS_CLIENT_CONNECTION(inst)            (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CLIENT_CONNECTION))
+#define G_TLS_CLIENT_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_CLIENT_CONNECTION, GTlsClientConnectionInterface))
+
+typedef struct _GTlsClientConnectionInterface GTlsClientConnectionInterface;
+
+struct _GTlsClientConnectionInterface
+{
+  GTypeInterface g_iface;
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_tls_client_connection_get_type             (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream *           g_tls_client_connection_new                  (GIOStream               *base_io_stream,
+								    GSocketConnectable      *server_identity,
+								    GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificateFlags  g_tls_client_connection_get_validation_flags (GTlsClientConnection    *conn);
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_client_connection_set_validation_flags (GTlsClientConnection    *conn,
+								    GTlsCertificateFlags     flags);
+GLIB_AVAILABLE_IN_ALL
+GSocketConnectable   *g_tls_client_connection_get_server_identity  (GTlsClientConnection    *conn);
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_client_connection_set_server_identity  (GTlsClientConnection    *conn,
+								    GSocketConnectable      *identity);
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_tls_client_connection_get_use_ssl3         (GTlsClientConnection    *conn);
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_client_connection_set_use_ssl3         (GTlsClientConnection    *conn,
+								    gboolean                 use_ssl3);
+GLIB_AVAILABLE_IN_ALL
+GList *               g_tls_client_connection_get_accepted_cas     (GTlsClientConnection    *conn);
+
+G_END_DECLS
+
+#endif /* __G_TLS_CLIENT_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsconnection.h b/dist/usr/include/glib-2.0/gio/gtlsconnection.h
new file mode 100644
index 0000000..465c936
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsconnection.h
@@ -0,0 +1,156 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_TLS_CONNECTION_H__
+#define __G_TLS_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giostream.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_CONNECTION            (g_tls_connection_get_type ())
+#define G_TLS_CONNECTION(inst)           (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_CONNECTION, GTlsConnection))
+#define G_TLS_CONNECTION_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_CONNECTION, GTlsConnectionClass))
+#define G_IS_TLS_CONNECTION(inst)        (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_CONNECTION))
+#define G_IS_TLS_CONNECTION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_CONNECTION))
+#define G_TLS_CONNECTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_CONNECTION, GTlsConnectionClass))
+
+typedef struct _GTlsConnectionClass   GTlsConnectionClass;
+typedef struct _GTlsConnectionPrivate GTlsConnectionPrivate;
+
+struct _GTlsConnection {
+  GIOStream parent_instance;
+
+  GTlsConnectionPrivate *priv;
+};
+
+struct _GTlsConnectionClass
+{
+  GIOStreamClass parent_class;
+
+  /* signals */
+  gboolean          ( *accept_certificate) (GTlsConnection       *connection,
+					    GTlsCertificate      *peer_cert,
+					    GTlsCertificateFlags  errors);
+
+  /* methods */
+  gboolean ( *handshake )        (GTlsConnection       *conn,
+				  GCancellable         *cancellable,
+				  GError              **error);
+
+  void     ( *handshake_async )  (GTlsConnection       *conn,
+				  int                   io_priority,
+				  GCancellable         *cancellable,
+				  GAsyncReadyCallback   callback,
+				  gpointer              user_data);
+  gboolean ( *handshake_finish ) (GTlsConnection       *conn,
+				  GAsyncResult         *result,
+				  GError              **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_tls_connection_get_type                    (void) G_GNUC_CONST;
+
+GLIB_DEPRECATED
+void                  g_tls_connection_set_use_system_certdb       (GTlsConnection       *conn,
+                                                                    gboolean              use_system_certdb);
+GLIB_DEPRECATED
+gboolean              g_tls_connection_get_use_system_certdb       (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_set_database                (GTlsConnection       *conn,
+								    GTlsDatabase         *database);
+GLIB_AVAILABLE_IN_ALL
+GTlsDatabase *        g_tls_connection_get_database                (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_set_certificate             (GTlsConnection       *conn,
+                                                                    GTlsCertificate      *certificate);
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_connection_get_certificate             (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_set_interaction             (GTlsConnection       *conn,
+                                                                    GTlsInteraction      *interaction);
+GLIB_AVAILABLE_IN_ALL
+GTlsInteraction *     g_tls_connection_get_interaction             (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate      *g_tls_connection_get_peer_certificate        (GTlsConnection       *conn);
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificateFlags  g_tls_connection_get_peer_certificate_errors (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_set_require_close_notify    (GTlsConnection       *conn,
+								    gboolean              require_close_notify);
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_tls_connection_get_require_close_notify    (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_set_rehandshake_mode        (GTlsConnection       *conn,
+								    GTlsRehandshakeMode   mode);
+GLIB_AVAILABLE_IN_ALL
+GTlsRehandshakeMode   g_tls_connection_get_rehandshake_mode        (GTlsConnection       *conn);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_tls_connection_handshake                   (GTlsConnection       *conn,
+								    GCancellable         *cancellable,
+								    GError              **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_tls_connection_handshake_async             (GTlsConnection       *conn,
+								    int                   io_priority,
+								    GCancellable         *cancellable,
+								    GAsyncReadyCallback   callback,
+								    gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_tls_connection_handshake_finish            (GTlsConnection       *conn,
+								    GAsyncResult         *result,
+								    GError              **error);
+
+/**
+ * G_TLS_ERROR:
+ *
+ * Error domain for TLS. Errors in this domain will be from the
+ * #GTlsError enumeration. See #GError for more information on error
+ * domains.
+ */
+#define G_TLS_ERROR (g_tls_error_quark ())
+GLIB_AVAILABLE_IN_ALL
+GQuark g_tls_error_quark (void);
+
+
+/*< protected >*/
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_tls_connection_emit_accept_certificate     (GTlsConnection       *conn,
+								    GTlsCertificate      *peer_cert,
+								    GTlsCertificateFlags  errors);
+
+G_END_DECLS
+
+#endif /* __G_TLS_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsdatabase.h b/dist/usr/include/glib-2.0/gio/gtlsdatabase.h
new file mode 100644
index 0000000..c11ca7a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsdatabase.h
@@ -0,0 +1,249 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#ifndef __G_TLS_DATABASE_H__
+#define __G_TLS_DATABASE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER "1.3.6.1.5.5.7.3.1"
+#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT "1.3.6.1.5.5.7.3.2"
+
+#define G_TYPE_TLS_DATABASE            (g_tls_database_get_type ())
+#define G_TLS_DATABASE(inst)           (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_DATABASE, GTlsDatabase))
+#define G_TLS_DATABASE_CLASS(class)    (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TLS_DATABASE, GTlsDatabaseClass))
+#define G_IS_TLS_DATABASE(inst)        (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_DATABASE))
+#define G_IS_TLS_DATABASE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TLS_DATABASE))
+#define G_TLS_DATABASE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), G_TYPE_TLS_DATABASE, GTlsDatabaseClass))
+
+typedef struct _GTlsDatabaseClass   GTlsDatabaseClass;
+typedef struct _GTlsDatabasePrivate GTlsDatabasePrivate;
+
+struct _GTlsDatabase
+{
+  GObject parent_instance;
+
+  GTlsDatabasePrivate *priv;
+};
+
+struct _GTlsDatabaseClass
+{
+  GObjectClass parent_class;
+
+  /* virtual methods */
+
+  GTlsCertificateFlags  (*verify_chain)                         (GTlsDatabase            *self,
+                                                                 GTlsCertificate         *chain,
+                                                                 const gchar             *purpose,
+                                                                 GSocketConnectable      *identity,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseVerifyFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+
+  void                  (*verify_chain_async)                   (GTlsDatabase            *self,
+                                                                 GTlsCertificate         *chain,
+                                                                 const gchar             *purpose,
+                                                                 GSocketConnectable      *identity,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseVerifyFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+
+  GTlsCertificateFlags  (*verify_chain_finish)                  (GTlsDatabase            *self,
+                                                                 GAsyncResult            *result,
+                                                                 GError                 **error);
+
+  gchar*                (*create_certificate_handle)            (GTlsDatabase            *self,
+                                                                 GTlsCertificate         *certificate);
+
+  GTlsCertificate*      (*lookup_certificate_for_handle)        (GTlsDatabase            *self,
+                                                                 const gchar             *handle,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+
+  void                  (*lookup_certificate_for_handle_async)  (GTlsDatabase            *self,
+                                                                 const gchar             *handle,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+
+  GTlsCertificate*      (*lookup_certificate_for_handle_finish) (GTlsDatabase            *self,
+                                                                 GAsyncResult            *result,
+                                                                 GError                 **error);
+
+  GTlsCertificate*      (*lookup_certificate_issuer)            (GTlsDatabase            *self,
+                                                                 GTlsCertificate         *certificate,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+
+  void                  (*lookup_certificate_issuer_async)      (GTlsDatabase            *self,
+                                                                 GTlsCertificate         *certificate,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+
+  GTlsCertificate*      (*lookup_certificate_issuer_finish)     (GTlsDatabase            *self,
+                                                                 GAsyncResult            *result,
+                                                                 GError                 **error);
+
+  GList*                (*lookup_certificates_issued_by)        (GTlsDatabase            *self,
+                                                                 GByteArray              *issuer_raw_dn,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GError                 **error);
+
+  void                  (*lookup_certificates_issued_by_async)  (GTlsDatabase            *self,
+                                                                 GByteArray              *issuer_raw_dn,
+                                                                 GTlsInteraction         *interaction,
+                                                                 GTlsDatabaseLookupFlags  flags,
+                                                                 GCancellable            *cancellable,
+                                                                 GAsyncReadyCallback      callback,
+                                                                 gpointer                 user_data);
+
+  GList*                (*lookup_certificates_issued_by_finish) (GTlsDatabase            *self,
+                                                                 GAsyncResult            *result,
+                                                                 GError                 **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[16];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                g_tls_database_get_type                              (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificateFlags g_tls_database_verify_chain                          (GTlsDatabase            *self,
+                                                                           GTlsCertificate         *chain,
+                                                                           const gchar             *purpose,
+                                                                           GSocketConnectable      *identity,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseVerifyFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_tls_database_verify_chain_async                    (GTlsDatabase            *self,
+                                                                           GTlsCertificate         *chain,
+                                                                           const gchar             *purpose,
+                                                                           GSocketConnectable      *identity,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseVerifyFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GAsyncReadyCallback      callback,
+                                                                           gpointer                 user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificateFlags g_tls_database_verify_chain_finish                   (GTlsDatabase            *self,
+                                                                           GAsyncResult            *result,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+gchar*               g_tls_database_create_certificate_handle             (GTlsDatabase            *self,
+                                                                           GTlsCertificate         *certificate);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate*     g_tls_database_lookup_certificate_for_handle         (GTlsDatabase            *self,
+                                                                           const gchar             *handle,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseLookupFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_tls_database_lookup_certificate_for_handle_async   (GTlsDatabase            *self,
+                                                                           const gchar             *handle,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseLookupFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GAsyncReadyCallback      callback,
+                                                                           gpointer                 user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate*     g_tls_database_lookup_certificate_for_handle_finish  (GTlsDatabase            *self,
+                                                                           GAsyncResult            *result,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate*     g_tls_database_lookup_certificate_issuer             (GTlsDatabase            *self,
+                                                                           GTlsCertificate         *certificate,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseLookupFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_tls_database_lookup_certificate_issuer_async       (GTlsDatabase            *self,
+                                                                           GTlsCertificate         *certificate,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseLookupFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GAsyncReadyCallback      callback,
+                                                                           gpointer                 user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsCertificate*     g_tls_database_lookup_certificate_issuer_finish      (GTlsDatabase            *self,
+                                                                           GAsyncResult            *result,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+GList*               g_tls_database_lookup_certificates_issued_by         (GTlsDatabase            *self,
+                                                                           GByteArray              *issuer_raw_dn,
+                                                                           GTlsInteraction         *interaction,
+                                                                           GTlsDatabaseLookupFlags  flags,
+                                                                           GCancellable            *cancellable,
+                                                                           GError                 **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                 g_tls_database_lookup_certificates_issued_by_async    (GTlsDatabase            *self,
+                                                                            GByteArray              *issuer_raw_dn,
+                                                                            GTlsInteraction         *interaction,
+                                                                            GTlsDatabaseLookupFlags  flags,
+                                                                            GCancellable            *cancellable,
+                                                                            GAsyncReadyCallback      callback,
+                                                                            gpointer                 user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GList*               g_tls_database_lookup_certificates_issued_by_finish   (GTlsDatabase            *self,
+                                                                            GAsyncResult            *result,
+                                                                            GError                 **error);
+
+G_END_DECLS
+
+#endif /* __G_TLS_DATABASE_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsfiledatabase.h b/dist/usr/include/glib-2.0/gio/gtlsfiledatabase.h
new file mode 100644
index 0000000..5024949
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsfiledatabase.h
@@ -0,0 +1,58 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2010 Collabora, Ltd.
+ *
+ * This program 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 licence or (at
+ * your option) any later version.
+ *
+ * See the included COPYING file for more information.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#ifndef __G_TLS_FILE_DATABASE_H__
+#define __G_TLS_FILE_DATABASE_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_FILE_DATABASE                (g_tls_file_database_get_type ())
+#define G_TLS_FILE_DATABASE(inst)               (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_FILE_DATABASE, GTlsFileDatabase))
+#define G_IS_TLS_FILE_DATABASE(inst)            (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_FILE_DATABASE))
+#define G_TLS_FILE_DATABASE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_FILE_DATABASE, GTlsFileDatabaseInterface))
+
+typedef struct _GTlsFileDatabaseInterface GTlsFileDatabaseInterface;
+
+/**
+ * GTlsFileDatabaseInterface:
+ * @g_iface: The parent interface.
+ *
+ * Provides an interface for #GTlsFileDatabase implementations.
+ *
+ */
+struct _GTlsFileDatabaseInterface
+{
+  GTypeInterface g_iface;
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[8];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                        g_tls_file_database_get_type              (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsDatabase*                g_tls_file_database_new                   (const gchar  *anchors,
+                                                                        GError      **error);
+
+G_END_DECLS
+
+#endif /* __G_TLS_FILE_DATABASE_H___ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsinteraction.h b/dist/usr/include/glib-2.0/gio/gtlsinteraction.h
new file mode 100644
index 0000000..283464e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsinteraction.h
@@ -0,0 +1,107 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2011 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#ifndef __G_TLS_INTERACTION_H__
+#define __G_TLS_INTERACTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_INTERACTION         (g_tls_interaction_get_type ())
+#define G_TLS_INTERACTION(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TLS_INTERACTION, GTlsInteraction))
+#define G_TLS_INTERACTION_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TLS_INTERACTION, GTlsInteractionClass))
+#define G_IS_TLS_INTERACTION(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TLS_INTERACTION))
+#define G_IS_TLS_INTERACTION_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TLS_INTERACTION))
+#define G_TLS_INTERACTION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TLS_INTERACTION, GTlsInteractionClass))
+
+typedef struct _GTlsInteractionClass   GTlsInteractionClass;
+typedef struct _GTlsInteractionPrivate GTlsInteractionPrivate;
+
+struct _GTlsInteraction
+{
+  /*< private >*/
+  GObject parent_instance;
+  GTlsInteractionPrivate *priv;
+};
+
+struct _GTlsInteractionClass
+{
+  /*< private >*/
+  GObjectClass parent_class;
+
+  /*< public >*/
+  GTlsInteractionResult  (* ask_password)        (GTlsInteraction    *interaction,
+                                                  GTlsPassword       *password,
+                                                  GCancellable       *cancellable,
+                                                  GError            **error);
+
+  void                   (* ask_password_async)  (GTlsInteraction    *interaction,
+                                                  GTlsPassword       *password,
+                                                  GCancellable       *cancellable,
+                                                  GAsyncReadyCallback callback,
+                                                  gpointer            user_data);
+
+  GTlsInteractionResult  (* ask_password_finish) (GTlsInteraction    *interaction,
+                                                  GAsyncResult       *result,
+                                                  GError            **error);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[24];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                  g_tls_interaction_get_type            (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsInteractionResult  g_tls_interaction_invoke_ask_password (GTlsInteraction    *interaction,
+                                                              GTlsPassword       *password,
+                                                              GCancellable       *cancellable,
+                                                              GError            **error);
+
+
+GLIB_AVAILABLE_IN_ALL
+GTlsInteractionResult  g_tls_interaction_ask_password        (GTlsInteraction    *interaction,
+                                                              GTlsPassword       *password,
+                                                              GCancellable       *cancellable,
+                                                              GError            **error);
+
+GLIB_AVAILABLE_IN_ALL
+void                   g_tls_interaction_ask_password_async  (GTlsInteraction    *interaction,
+                                                              GTlsPassword       *password,
+                                                              GCancellable       *cancellable,
+                                                              GAsyncReadyCallback callback,
+                                                              gpointer            user_data);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsInteractionResult  g_tls_interaction_ask_password_finish (GTlsInteraction    *interaction,
+                                                              GAsyncResult       *result,
+                                                              GError            **error);
+
+G_END_DECLS
+
+#endif /* __G_TLS_INTERACTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlspassword.h b/dist/usr/include/glib-2.0/gio/gtlspassword.h
new file mode 100644
index 0000000..3db365d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlspassword.h
@@ -0,0 +1,112 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2011 Collabora, Ltd.
+ *
+ * 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.
+ *
+ * Author: Stef Walter <stefw@collabora.co.uk>
+ */
+
+#ifndef __G_TLS_PASSWORD_H__
+#define __G_TLS_PASSWORD_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_PASSWORD         (g_tls_password_get_type ())
+#define G_TLS_PASSWORD(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_TLS_PASSWORD, GTlsPassword))
+#define G_TLS_PASSWORD_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_TLS_PASSWORD, GTlsPasswordClass))
+#define G_IS_TLS_PASSWORD(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_TLS_PASSWORD))
+#define G_IS_TLS_PASSWORD_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_TLS_PASSWORD))
+#define G_TLS_PASSWORD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_TLS_PASSWORD, GTlsPasswordClass))
+
+typedef struct _GTlsPasswordClass   GTlsPasswordClass;
+typedef struct _GTlsPasswordPrivate GTlsPasswordPrivate;
+
+struct _GTlsPassword
+{
+  GObject parent_instance;
+
+  GTlsPasswordPrivate *priv;
+};
+
+struct _GTlsPasswordClass
+{
+  GObjectClass parent_class;
+
+  /* methods */
+
+  const guchar *    ( *get_value)            (GTlsPassword  *password,
+                                              gsize         *length);
+
+  void              ( *set_value)            (GTlsPassword  *password,
+                                              guchar        *value,
+                                              gssize         length,
+                                              GDestroyNotify destroy);
+
+  const gchar*      ( *get_default_warning)  (GTlsPassword  *password);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  gpointer padding[4];
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType             g_tls_password_get_type            (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GTlsPassword *    g_tls_password_new                 (GTlsPasswordFlags  flags,
+                                                      const gchar       *description);
+
+GLIB_AVAILABLE_IN_ALL
+const guchar *    g_tls_password_get_value           (GTlsPassword      *password,
+                                                      gsize             *length);
+GLIB_AVAILABLE_IN_ALL
+void              g_tls_password_set_value           (GTlsPassword      *password,
+                                                      const guchar      *value,
+                                                      gssize             length);
+GLIB_AVAILABLE_IN_ALL
+void              g_tls_password_set_value_full      (GTlsPassword      *password,
+                                                      guchar            *value,
+                                                      gssize             length,
+                                                      GDestroyNotify     destroy);
+
+GLIB_AVAILABLE_IN_ALL
+GTlsPasswordFlags g_tls_password_get_flags           (GTlsPassword      *password);
+GLIB_AVAILABLE_IN_ALL
+void              g_tls_password_set_flags           (GTlsPassword      *password,
+                                                      GTlsPasswordFlags  flags);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar*      g_tls_password_get_description     (GTlsPassword      *password);
+GLIB_AVAILABLE_IN_ALL
+void              g_tls_password_set_description     (GTlsPassword      *password,
+                                                      const gchar       *description);
+
+GLIB_AVAILABLE_IN_ALL
+const gchar *     g_tls_password_get_warning         (GTlsPassword      *password);
+GLIB_AVAILABLE_IN_ALL
+void              g_tls_password_set_warning         (GTlsPassword      *password,
+                                                      const gchar       *warning);
+
+G_END_DECLS
+
+#endif /* __G_TLS_PASSWORD_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gtlsserverconnection.h b/dist/usr/include/glib-2.0/gio/gtlsserverconnection.h
new file mode 100644
index 0000000..6550d19
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gtlsserverconnection.h
@@ -0,0 +1,63 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2010 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_TLS_SERVER_CONNECTION_H__
+#define __G_TLS_SERVER_CONNECTION_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gtlsconnection.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_TLS_SERVER_CONNECTION                (g_tls_server_connection_get_type ())
+#define G_TLS_SERVER_CONNECTION(inst)               (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TLS_SERVER_CONNECTION, GTlsServerConnection))
+#define G_IS_TLS_SERVER_CONNECTION(inst)            (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TLS_SERVER_CONNECTION))
+#define G_TLS_SERVER_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TLS_SERVER_CONNECTION, GTlsServerConnectionInterface))
+
+/**
+ * GTlsServerConnection:
+ *
+ * TLS server-side connection. This is the server-side implementation
+ * of a #GTlsConnection.
+ *
+ * Since: 2.28
+ */
+typedef struct _GTlsServerConnectionInterface GTlsServerConnectionInterface;
+
+struct _GTlsServerConnectionInterface
+{
+  GTypeInterface g_iface;
+
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_tls_server_connection_get_type                 (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GIOStream *           g_tls_server_connection_new                      (GIOStream        *base_io_stream,
+									GTlsCertificate  *certificate,
+									GError          **error);
+
+G_END_DECLS
+
+#endif /* __G_TLS_SERVER_CONNECTION_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gvfs.h b/dist/usr/include/glib-2.0/gio/gvfs.h
new file mode 100644
index 0000000..4150ae9
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gvfs.h
@@ -0,0 +1,134 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_VFS_H__
+#define __G_VFS_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_VFS         (g_vfs_get_type ())
+#define G_VFS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_VFS, GVfs))
+#define G_VFS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_VFS, GVfsClass))
+#define G_VFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_VFS, GVfsClass))
+#define G_IS_VFS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_VFS))
+#define G_IS_VFS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_VFS))
+
+/**
+ * G_VFS_EXTENSION_POINT_NAME:
+ *
+ * Extension point for #GVfs functionality.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ */
+#define G_VFS_EXTENSION_POINT_NAME "gio-vfs"
+
+/**
+ * GVfs:
+ *
+ * Virtual File System object.
+ **/
+typedef struct _GVfsClass    GVfsClass;
+
+struct _GVfs
+{
+  GObject parent_instance;
+};
+
+struct _GVfsClass
+{
+  GObjectClass parent_class;
+
+  /* Virtual Table */
+
+  gboolean              (* is_active)                 (GVfs       *vfs);
+  GFile               * (* get_file_for_path)         (GVfs       *vfs,
+                                                       const char *path);
+  GFile               * (* get_file_for_uri)          (GVfs       *vfs,
+                                                       const char *uri);
+  const gchar * const * (* get_supported_uri_schemes) (GVfs       *vfs);
+  GFile               * (* parse_name)                (GVfs       *vfs,
+                                                       const char *parse_name);
+
+  /*< private >*/
+  void                  (* local_file_add_info)       (GVfs       *vfs,
+						       const char *filename,
+						       guint64     device,
+						       GFileAttributeMatcher *attribute_matcher,
+						       GFileInfo  *info,
+						       GCancellable *cancellable,
+						       gpointer   *extra_data,
+						       GDestroyNotify *free_extra_data);
+  void                  (* add_writable_namespaces)   (GVfs       *vfs,
+						       GFileAttributeInfoList *list);
+  gboolean              (* local_file_set_attributes) (GVfs       *vfs,
+						       const char *filename,
+						       GFileInfo  *info,
+                                                       GFileQueryInfoFlags flags,
+                                                       GCancellable *cancellable,
+						       GError    **error);
+  void                  (* local_file_removed)        (GVfs       *vfs,
+						       const char *filename);
+  void                  (* local_file_moved)          (GVfs       *vfs,
+						       const char *source,
+						       const char *dest);
+  GIcon *               (* deserialize_icon)          (GVfs       *vfs,
+                                                       GVariant   *value);
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_vfs_get_type                  (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_vfs_is_active                 (GVfs       *vfs);
+GLIB_AVAILABLE_IN_ALL
+GFile *               g_vfs_get_file_for_path         (GVfs       *vfs,
+                                                       const char *path);
+GLIB_AVAILABLE_IN_ALL
+GFile *               g_vfs_get_file_for_uri          (GVfs       *vfs,
+                                                       const char *uri);
+GLIB_AVAILABLE_IN_ALL
+const gchar* const * g_vfs_get_supported_uri_schemes  (GVfs       *vfs);
+
+GLIB_AVAILABLE_IN_ALL
+GFile *               g_vfs_parse_name                (GVfs       *vfs,
+                                                       const char *parse_name);
+
+GLIB_AVAILABLE_IN_ALL
+GVfs *                g_vfs_get_default               (void);
+GLIB_AVAILABLE_IN_ALL
+GVfs *                g_vfs_get_local                 (void);
+
+G_END_DECLS
+
+#endif /* __G_VFS_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gvolume.h b/dist/usr/include/glib-2.0/gio/gvolume.h
new file mode 100644
index 0000000..0a4abe0
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gvolume.h
@@ -0,0 +1,256 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ *         David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_VOLUME_H__
+#define __G_VOLUME_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_HAL_UDI:
+ *
+ * The string used to obtain a Hal UDI with g_volume_get_identifier().
+ */
+#define G_VOLUME_IDENTIFIER_KIND_HAL_UDI "hal-udi"
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE:
+ *
+ * The string used to obtain a Unix device path with g_volume_get_identifier().
+ */
+#define G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE "unix-device"
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_LABEL:
+ *
+ * The string used to obtain a filesystem label with g_volume_get_identifier().
+ */
+#define G_VOLUME_IDENTIFIER_KIND_LABEL "label"
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_UUID:
+ *
+ * The string used to obtain a UUID with g_volume_get_identifier().
+ */
+#define G_VOLUME_IDENTIFIER_KIND_UUID "uuid"
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT:
+ *
+ * The string used to obtain a NFS mount with g_volume_get_identifier().
+ */
+#define G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT "nfs-mount"
+
+/**
+ * G_VOLUME_IDENTIFIER_KIND_CLASS:
+ *
+ * The string used to obtain the volume <emphasis>class</emphasis>
+ * with g_volume_get_identifier().
+ *
+ * Known volume classes include <literal>device</literal> and
+ * <literal>network</literal>. Other classes may be added in the
+ * future.
+ *
+ * This is intended to be used by applications to classify #GVolume
+ * instances into different sections - for example a file manager or
+ * file chooser can use this information to show
+ * <literal>network</literal> volumes under a "Network" heading and
+ * <literal>device</literal> volumes under a "Devices" heading.
+ */
+#define G_VOLUME_IDENTIFIER_KIND_CLASS "class"
+
+
+#define G_TYPE_VOLUME            (g_volume_get_type ())
+#define G_VOLUME(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_VOLUME, GVolume))
+#define G_IS_VOLUME(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_VOLUME))
+#define G_VOLUME_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_VOLUME, GVolumeIface))
+
+/**
+ * GVolumeIface:
+ * @g_iface: The parent interface.
+ * @changed: Changed signal that is emitted when the volume's state has changed.
+ * @removed: The removed signal that is emitted when the #GVolume have been removed. If the recipient is holding references to the object they should release them so the object can be finalized.
+ * @get_name: Gets a string containing the name of the #GVolume.
+ * @get_icon: Gets a #GIcon for the #GVolume.
+ * @get_uuid: Gets the UUID for the #GVolume. The reference is typically based on the file system UUID for the mount in question and should be considered an opaque string. Returns %NULL if there is no UUID available.
+ * @get_drive: Gets a #GDrive the volume is located on. Returns %NULL if the #GVolume is not associated with a #GDrive.
+ * @get_mount: Gets a #GMount representing the mounted volume. Returns %NULL if the #GVolume is not mounted.
+ * @can_mount: Returns %TRUE if the #GVolume can be mounted.
+ * @can_eject: Checks if a #GVolume can be ejected.
+ * @mount_fn: Mounts a given #GVolume. 
+ *     #GVolume implementations must emit the #GMountOperation::aborted 
+ *     signal before completing a mount operation that is aborted while 
+ *     awaiting input from the user through a #GMountOperation instance.
+ * @mount_finish: Finishes a mount operation.
+ * @eject: Ejects a given #GVolume.
+ * @eject_finish: Finishes an eject operation.
+ * @get_identifier: Returns the <link linkend="volume-identifier">identifier</link> of the given kind, or %NULL if
+ *    the #GVolume doesn't have one.
+ * @enumerate_identifiers: Returns an array strings listing the kinds
+ *    of <link linkend="volume-identifier">identifiers</link> which the #GVolume has.
+ * @should_automount: Returns %TRUE if the #GVolume should be automatically mounted.
+ * @get_activation_root: Returns the activation root for the #GVolume if it is known in advance or %NULL if
+ *   it is not known.
+ * @eject_with_operation: Starts ejecting a #GVolume using a #GMountOperation. Since 2.22.
+ * @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
+ * @get_sort_key: Gets a key used for sorting #GVolume instance or %NULL if no such key exists. Since 2.32.
+ * @get_symbolic_icon: Gets a symbolic #GIcon for the #GVolume. Since 2.34.
+ *
+ * Interface for implementing operations for mountable volumes.
+ **/
+typedef struct _GVolumeIface    GVolumeIface;
+
+struct _GVolumeIface
+{
+  GTypeInterface g_iface;
+
+  /* signals */
+
+  void        (* changed)               (GVolume             *volume);
+  void        (* removed)               (GVolume             *volume);
+
+  /* Virtual Table */
+
+  char      * (* get_name)              (GVolume             *volume);
+  GIcon     * (* get_icon)              (GVolume             *volume);
+  char      * (* get_uuid)              (GVolume             *volume);
+  GDrive    * (* get_drive)             (GVolume             *volume);
+  GMount    * (* get_mount)             (GVolume             *volume);
+  gboolean    (* can_mount)             (GVolume             *volume);
+  gboolean    (* can_eject)             (GVolume             *volume);
+  void        (* mount_fn)              (GVolume             *volume,
+                                         GMountMountFlags     flags,
+                                         GMountOperation     *mount_operation,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean    (* mount_finish)          (GVolume             *volume,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+  void        (* eject)                 (GVolume             *volume,
+                                         GMountUnmountFlags   flags,
+                                         GCancellable        *cancellable,
+                                         GAsyncReadyCallback  callback,
+                                         gpointer             user_data);
+  gboolean    (* eject_finish)          (GVolume             *volume,
+                                         GAsyncResult        *result,
+                                         GError             **error);
+
+  char      * (* get_identifier)        (GVolume             *volume,
+                                         const char          *kind);
+  char     ** (* enumerate_identifiers) (GVolume             *volume);
+
+  gboolean    (* should_automount)      (GVolume             *volume);
+
+  GFile     * (* get_activation_root)   (GVolume             *volume);
+
+  void        (* eject_with_operation)      (GVolume             *volume,
+                                             GMountUnmountFlags   flags,
+                                             GMountOperation     *mount_operation,
+                                             GCancellable        *cancellable,
+                                             GAsyncReadyCallback  callback,
+                                             gpointer             user_data);
+  gboolean    (* eject_with_operation_finish) (GVolume           *volume,
+                                             GAsyncResult        *result,
+                                             GError             **error);
+
+  const gchar * (* get_sort_key)        (GVolume             *volume);
+  GIcon       * (* get_symbolic_icon)   (GVolume             *volume);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_volume_get_type              (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+char *   g_volume_get_name              (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+GIcon *  g_volume_get_icon              (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+GIcon *  g_volume_get_symbolic_icon     (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+char *   g_volume_get_uuid              (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+GDrive * g_volume_get_drive             (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+GMount * g_volume_get_mount             (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_volume_can_mount             (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_volume_can_eject             (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_volume_should_automount      (GVolume              *volume);
+GLIB_AVAILABLE_IN_ALL
+void     g_volume_mount                 (GVolume              *volume,
+					 GMountMountFlags      flags,
+					 GMountOperation      *mount_operation,
+					 GCancellable         *cancellable,
+					 GAsyncReadyCallback   callback,
+					 gpointer              user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_volume_mount_finish          (GVolume              *volume,
+					 GAsyncResult         *result,
+					 GError              **error);
+GLIB_DEPRECATED_FOR(g_volume_eject_with_operation)
+void     g_volume_eject                 (GVolume              *volume,
+                                         GMountUnmountFlags    flags,
+                                         GCancellable         *cancellable,
+                                         GAsyncReadyCallback   callback,
+                                         gpointer              user_data);
+
+GLIB_DEPRECATED_FOR(g_volume_eject_with_operation_finish)
+gboolean g_volume_eject_finish          (GVolume              *volume,
+                                         GAsyncResult         *result,
+                                         GError              **error);
+GLIB_AVAILABLE_IN_ALL
+char *   g_volume_get_identifier        (GVolume              *volume,
+					 const char           *kind);
+GLIB_AVAILABLE_IN_ALL
+char **  g_volume_enumerate_identifiers (GVolume              *volume);
+
+GLIB_AVAILABLE_IN_ALL
+GFile *  g_volume_get_activation_root   (GVolume              *volume);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_volume_eject_with_operation     (GVolume             *volume,
+                                               GMountUnmountFlags   flags,
+                                               GMountOperation     *mount_operation,
+                                               GCancellable        *cancellable,
+                                               GAsyncReadyCallback  callback,
+                                               gpointer             user_data);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_volume_eject_with_operation_finish (GVolume          *volume,
+                                               GAsyncResult        *result,
+                                               GError             **error);
+
+GLIB_AVAILABLE_IN_2_32
+const gchar *g_volume_get_sort_key            (GVolume              *volume);
+
+G_END_DECLS
+
+#endif /* __G_VOLUME_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gvolumemonitor.h b/dist/usr/include/glib-2.0/gio/gvolumemonitor.h
new file mode 100644
index 0000000..0a37e12
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gvolumemonitor.h
@@ -0,0 +1,156 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ *         David Zeuthen <davidz@redhat.com>
+ */
+
+#ifndef __G_VOLUME_MONITOR_H__
+#define __G_VOLUME_MONITOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_VOLUME_MONITOR         (g_volume_monitor_get_type ())
+#define G_VOLUME_MONITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_VOLUME_MONITOR, GVolumeMonitor))
+#define G_VOLUME_MONITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_VOLUME_MONITOR, GVolumeMonitorClass))
+#define G_VOLUME_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_VOLUME_MONITOR, GVolumeMonitorClass))
+#define G_IS_VOLUME_MONITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_VOLUME_MONITOR))
+#define G_IS_VOLUME_MONITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_VOLUME_MONITOR))
+
+/**
+ * G_VOLUME_MONITOR_EXTENSION_POINT_NAME:
+ *
+ * Extension point for volume monitor functionality.
+ * See <link linkend="extending-gio">Extending GIO</link>.
+ */
+#define G_VOLUME_MONITOR_EXTENSION_POINT_NAME "gio-volume-monitor"
+
+/**
+ * GVolumeMonitor:
+ *
+ * A Volume Monitor that watches for volume events.
+ **/
+typedef struct _GVolumeMonitorClass GVolumeMonitorClass;
+
+struct _GVolumeMonitor
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  gpointer priv;
+};
+
+struct _GVolumeMonitorClass
+{
+  GObjectClass parent_class;
+
+  /*< public >*/
+  /* signals */
+  void      (* volume_added)         (GVolumeMonitor *volume_monitor,
+                                      GVolume        *volume);
+  void      (* volume_removed)       (GVolumeMonitor *volume_monitor,
+                                      GVolume        *volume);
+  void      (* volume_changed)       (GVolumeMonitor *volume_monitor,
+                                      GVolume        *volume);
+
+  void      (* mount_added)          (GVolumeMonitor *volume_monitor,
+                                      GMount         *mount);
+  void      (* mount_removed)        (GVolumeMonitor *volume_monitor,
+                                      GMount         *mount);
+  void      (* mount_pre_unmount)    (GVolumeMonitor *volume_monitor,
+                                      GMount         *mount);
+  void      (* mount_changed)        (GVolumeMonitor *volume_monitor,
+                                      GMount         *mount);
+
+  void      (* drive_connected)      (GVolumeMonitor *volume_monitor,
+                                      GDrive	     *drive);
+  void      (* drive_disconnected)   (GVolumeMonitor *volume_monitor,
+                                      GDrive         *drive);
+  void      (* drive_changed)        (GVolumeMonitor *volume_monitor,
+                                      GDrive         *drive);
+
+  /* Vtable */
+
+  gboolean  (* is_supported)         (void);
+
+  GList   * (* get_connected_drives) (GVolumeMonitor *volume_monitor);
+  GList   * (* get_volumes)          (GVolumeMonitor *volume_monitor);
+  GList   * (* get_mounts)           (GVolumeMonitor *volume_monitor);
+
+  GVolume * (* get_volume_for_uuid)  (GVolumeMonitor *volume_monitor,
+                                      const char     *uuid);
+
+  GMount  * (* get_mount_for_uuid)   (GVolumeMonitor *volume_monitor,
+                                      const char     *uuid);
+
+
+  /* These arguments are unfortunately backwards by mistake (bug #520169). Deprecated in 2.20. */
+  GVolume * (* adopt_orphan_mount)   (GMount         *mount,
+                                      GVolumeMonitor *volume_monitor);
+
+  /* signal added in 2.17 */
+  void      (* drive_eject_button)   (GVolumeMonitor *volume_monitor,
+                                      GDrive         *drive);
+
+  /* signal added in 2.21 */
+  void      (* drive_stop_button)   (GVolumeMonitor *volume_monitor,
+                                     GDrive         *drive);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*_g_reserved1) (void);
+  void (*_g_reserved2) (void);
+  void (*_g_reserved3) (void);
+  void (*_g_reserved4) (void);
+  void (*_g_reserved5) (void);
+  void (*_g_reserved6) (void);
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType           g_volume_monitor_get_type             (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GVolumeMonitor *g_volume_monitor_get                  (void);
+GLIB_AVAILABLE_IN_ALL
+GList *         g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor);
+GLIB_AVAILABLE_IN_ALL
+GList *         g_volume_monitor_get_volumes          (GVolumeMonitor *volume_monitor);
+GLIB_AVAILABLE_IN_ALL
+GList *         g_volume_monitor_get_mounts           (GVolumeMonitor *volume_monitor);
+GLIB_AVAILABLE_IN_ALL
+GVolume *       g_volume_monitor_get_volume_for_uuid  (GVolumeMonitor *volume_monitor,
+                                                       const char     *uuid);
+GLIB_AVAILABLE_IN_ALL
+GMount *        g_volume_monitor_get_mount_for_uuid   (GVolumeMonitor *volume_monitor,
+                                                       const char     *uuid);
+
+GLIB_DEPRECATED
+GVolume *       g_volume_monitor_adopt_orphan_mount   (GMount         *mount);
+
+G_END_DECLS
+
+#endif /* __G_VOLUME_MONITOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gzlibcompressor.h b/dist/usr/include/glib-2.0/gio/gzlibcompressor.h
new file mode 100644
index 0000000..609e42f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gzlibcompressor.h
@@ -0,0 +1,64 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_ZLIB_COMPRESSOR_H__
+#define __G_ZLIB_COMPRESSOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gconverter.h>
+#include <gio/gfileinfo.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ZLIB_COMPRESSOR         (g_zlib_compressor_get_type ())
+#define G_ZLIB_COMPRESSOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressor))
+#define G_ZLIB_COMPRESSOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressorClass))
+#define G_IS_ZLIB_COMPRESSOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_ZLIB_COMPRESSOR))
+#define G_IS_ZLIB_COMPRESSOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_ZLIB_COMPRESSOR))
+#define G_ZLIB_COMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_ZLIB_COMPRESSOR, GZlibCompressorClass))
+
+typedef struct _GZlibCompressorClass   GZlibCompressorClass;
+
+struct _GZlibCompressorClass
+{
+  GObjectClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType            g_zlib_compressor_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GZlibCompressor *g_zlib_compressor_new (GZlibCompressorFormat format,
+					int level);
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo       *g_zlib_compressor_get_file_info (GZlibCompressor *compressor);
+GLIB_AVAILABLE_IN_ALL
+void             g_zlib_compressor_set_file_info (GZlibCompressor *compressor,
+                                                  GFileInfo       *file_info);
+
+G_END_DECLS
+
+#endif /* __G_ZLIB_COMPRESSOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gio/gzlibdecompressor.h b/dist/usr/include/glib-2.0/gio/gzlibdecompressor.h
new file mode 100644
index 0000000..ecc4f4e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gio/gzlibdecompressor.h
@@ -0,0 +1,60 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2009 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.
+ *
+ * Author: Alexander Larsson <alexl@redhat.com>
+ */
+
+#ifndef __G_ZLIB_DECOMPRESSOR_H__
+#define __G_ZLIB_DECOMPRESSOR_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/gconverter.h>
+#include <gio/gfileinfo.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_ZLIB_DECOMPRESSOR         (g_zlib_decompressor_get_type ())
+#define G_ZLIB_DECOMPRESSOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressor))
+#define G_ZLIB_DECOMPRESSOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressorClass))
+#define G_IS_ZLIB_DECOMPRESSOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_ZLIB_DECOMPRESSOR))
+#define G_IS_ZLIB_DECOMPRESSOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_ZLIB_DECOMPRESSOR))
+#define G_ZLIB_DECOMPRESSOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_ZLIB_DECOMPRESSOR, GZlibDecompressorClass))
+
+typedef struct _GZlibDecompressorClass   GZlibDecompressorClass;
+
+struct _GZlibDecompressorClass
+{
+  GObjectClass parent_class;
+};
+
+GLIB_AVAILABLE_IN_ALL
+GType              g_zlib_decompressor_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GZlibDecompressor *g_zlib_decompressor_new (GZlibCompressorFormat format);
+
+GLIB_AVAILABLE_IN_ALL
+GFileInfo         *g_zlib_decompressor_get_file_info (GZlibDecompressor *decompressor);
+
+G_END_DECLS
+
+#endif /* __G_ZLIB_DECOMPRESSOR_H__ */
diff --git a/dist/usr/include/glib-2.0/glib-object.h b/dist/usr/include/glib-2.0/glib-object.h
new file mode 100644
index 0000000..336ba93
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib-object.h
@@ -0,0 +1,42 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998, 1999, 2000 Tim Janik and 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 __GLIB_GOBJECT_H__
+#define __GLIB_GOBJECT_H__
+
+#define __GLIB_GOBJECT_H_INSIDE__
+
+/* topmost include file for GObject header files */
+#include <gobject/gbinding.h>
+#include <gobject/gboxed.h>
+#include <gobject/genums.h>
+#include <gobject/gobject.h>
+#include <gobject/gparam.h>
+#include <gobject/gparamspecs.h>
+#include <gobject/gsignal.h>
+#include <gobject/gsourceclosure.h>
+#include <gobject/gtype.h>
+#include <gobject/gtypemodule.h>
+#include <gobject/gtypeplugin.h>
+#include <gobject/gvalue.h>
+#include <gobject/gvaluearray.h>
+#include <gobject/gvaluetypes.h>
+
+#undef __GLIB_GOBJECT_H_INSIDE__
+
+#endif /* __GLIB_GOBJECT_H__ */
diff --git a/dist/usr/include/glib-2.0/glib-unix.h b/dist/usr/include/glib-2.0/glib-unix.h
new file mode 100644
index 0000000..66ccf74
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib-unix.h
@@ -0,0 +1,123 @@
+/* glib-unix.h - Unix specific integration
+ * Copyright (C) 2011 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_UNIX_H__
+#define __G_UNIX_H__
+
+/* We need to include the UNIX headers needed to use the APIs below,
+ * but we also take this opportunity to include a wide selection of
+ * other UNIX headers.  If one of the headers below is broken on some
+ * system, work around it here (or better, fix the system or tell
+ * people to use a better one).
+ */
+#include <unistd.h>
+#include <errno.h>
+#include <sys/wait.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+#include <glib.h>
+
+#ifndef G_OS_UNIX
+#error "This header may only be used on UNIX"
+#endif
+
+G_BEGIN_DECLS
+
+/**
+ * G_UNIX_ERROR:
+ *
+ * Error domain for API in the "g_unix_" namespace.  Note that there is
+ * no exported enumeration mapping %errno.  Instead, all functions
+ * ensure that %errno is relevant.  The code for all #G_UNIX_ERROR is
+ * always <literal>0</literal>, and the error message is always
+ * generated via g_strerror().
+ *
+ * It is expected that most code will not look at %errno from these
+ * APIs. Important cases where one would want to differentiate between
+ * errors are already covered by existing cross-platform GLib API,
+ * such as e.g. #GFile wrapping <literal>ENOENT</literal>.  However, it is
+ * provided for completeness, at least.
+ */
+#define G_UNIX_ERROR (g_unix_error_quark())
+
+GLIB_AVAILABLE_IN_2_30
+GQuark g_unix_error_quark (void);
+
+GLIB_AVAILABLE_IN_2_30
+gboolean g_unix_open_pipe (gint    *fds,
+                           gint     flags,
+                           GError **error);
+
+GLIB_AVAILABLE_IN_2_30
+gboolean g_unix_set_fd_nonblocking (gint       fd,
+                                    gboolean   nonblock,
+                                    GError   **error);
+
+GLIB_AVAILABLE_IN_2_30
+GSource *g_unix_signal_source_new  (gint signum);
+
+GLIB_AVAILABLE_IN_2_30
+guint    g_unix_signal_add_full    (gint           priority,
+                                    gint           signum,
+                                    GSourceFunc    handler,
+                                    gpointer       user_data,
+                                    GDestroyNotify notify);
+
+GLIB_AVAILABLE_IN_2_30
+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/dist/usr/include/glib-2.0/glib.h b/dist/usr/include/glib-2.0/glib.h
new file mode 100644
index 0000000..ce7447e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib.h
@@ -0,0 +1,114 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#ifndef __G_LIB_H__
+#define __G_LIB_H__
+
+#define __GLIB_H_INSIDE__
+
+#include <glib/galloca.h>
+#include <glib/garray.h>
+#include <glib/gasyncqueue.h>
+#include <glib/gatomic.h>
+#include <glib/gbacktrace.h>
+#include <glib/gbase64.h>
+#include <glib/gbitlock.h>
+#include <glib/gbookmarkfile.h>
+#include <glib/gbytes.h>
+#include <glib/gcharset.h>
+#include <glib/gchecksum.h>
+#include <glib/gconvert.h>
+#include <glib/gdataset.h>
+#include <glib/gdate.h>
+#include <glib/gdatetime.h>
+#include <glib/gdir.h>
+#include <glib/genviron.h>
+#include <glib/gerror.h>
+#include <glib/gfileutils.h>
+#include <glib/ggettext.h>
+#include <glib/ghash.h>
+#include <glib/ghmac.h>
+#include <glib/ghook.h>
+#include <glib/ghostutils.h>
+#include <glib/giochannel.h>
+#include <glib/gkeyfile.h>
+#include <glib/glist.h>
+#include <glib/gmacros.h>
+#include <glib/gmain.h>
+#include <glib/gmappedfile.h>
+#include <glib/gmarkup.h>
+#include <glib/gmem.h>
+#include <glib/gmessages.h>
+#include <glib/gnode.h>
+#include <glib/goption.h>
+#include <glib/gpattern.h>
+#include <glib/gpoll.h>
+#include <glib/gprimes.h>
+#include <glib/gqsort.h>
+#include <glib/gquark.h>
+#include <glib/gqueue.h>
+#include <glib/grand.h>
+#include <glib/gregex.h>
+#include <glib/gscanner.h>
+#include <glib/gsequence.h>
+#include <glib/gshell.h>
+#include <glib/gslice.h>
+#include <glib/gslist.h>
+#include <glib/gspawn.h>
+#include <glib/gstrfuncs.h>
+#include <glib/gstring.h>
+#include <glib/gstringchunk.h>
+#include <glib/gtestutils.h>
+#include <glib/gthread.h>
+#include <glib/gthreadpool.h>
+#include <glib/gtimer.h>
+#include <glib/gtimezone.h>
+#include <glib/gtrashstack.h>
+#include <glib/gtree.h>
+#include <glib/gtypes.h>
+#include <glib/gunicode.h>
+#include <glib/gurifuncs.h>
+#include <glib/gutils.h>
+#include <glib/gvarianttype.h>
+#include <glib/gvariant.h>
+#include <glib/gversion.h>
+#include <glib/gversionmacros.h>
+#ifdef G_PLATFORM_WIN32
+#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__
+
+#endif /* __G_LIB_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/gallocator.h b/dist/usr/include/glib-2.0/glib/deprecated/gallocator.h
new file mode 100644
index 0000000..a3dc2a1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/gallocator.h
@@ -0,0 +1,90 @@
+/*
+ * 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 licence, 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_ALLOCATOR_H__
+#define __G_ALLOCATOR_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GAllocator GAllocator;
+typedef struct _GMemChunk  GMemChunk;
+
+#define G_ALLOC_ONLY                    1
+#define G_ALLOC_AND_FREE                2
+#define G_ALLOCATOR_LIST                1
+#define G_ALLOCATOR_SLIST               2
+#define G_ALLOCATOR_NODE                3
+
+#define g_chunk_new(type, chunk)        ((type *) g_mem_chunk_alloc (chunk))
+#define g_chunk_new0(type, chunk)       ((type *) g_mem_chunk_alloc0 (chunk))
+#define g_chunk_free(mem, mem_chunk)    (g_mem_chunk_free (mem_chunk, mem))
+#define g_mem_chunk_create(type, x, y)  (g_mem_chunk_new (NULL, sizeof (type), 0, 0))
+
+
+GLIB_DEPRECATED
+GMemChunk *     g_mem_chunk_new         (const gchar  *name,
+                                         gint          atom_size,
+                                         gsize         area_size,
+                                         gint          type);
+GLIB_DEPRECATED
+void            g_mem_chunk_destroy     (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+gpointer        g_mem_chunk_alloc       (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+gpointer        g_mem_chunk_alloc0      (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+void            g_mem_chunk_free        (GMemChunk    *mem_chunk,
+                                         gpointer      mem);
+GLIB_DEPRECATED
+void            g_mem_chunk_clean       (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+void            g_mem_chunk_reset       (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+void            g_mem_chunk_print       (GMemChunk    *mem_chunk);
+GLIB_DEPRECATED
+void            g_mem_chunk_info        (void);
+GLIB_DEPRECATED
+void            g_blow_chunks           (void);
+
+
+GLIB_DEPRECATED
+GAllocator *    g_allocator_new         (const gchar  *name,
+                                         guint         n_preallocs);
+GLIB_DEPRECATED
+void            g_allocator_free        (GAllocator   *allocator);
+GLIB_DEPRECATED
+void            g_list_push_allocator   (GAllocator   *allocator);
+GLIB_DEPRECATED
+void            g_list_pop_allocator    (void);
+GLIB_DEPRECATED
+void            g_slist_push_allocator  (GAllocator   *allocator);
+GLIB_DEPRECATED
+void            g_slist_pop_allocator   (void);
+GLIB_DEPRECATED
+void            g_node_push_allocator   (GAllocator   *allocator);
+GLIB_DEPRECATED
+void            g_node_pop_allocator    (void);
+
+G_END_DECLS
+
+#endif /* __G_ALLOCATOR_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/gcache.h b/dist/usr/include/glib-2.0/glib/deprecated/gcache.h
new file mode 100644
index 0000000..a7854e0
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/gcache.h
@@ -0,0 +1,73 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/glist.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GCache          GCache;
+
+typedef gpointer        (*GCacheNewFunc)        (gpointer       key);
+typedef gpointer        (*GCacheDupFunc)        (gpointer       value);
+typedef void            (*GCacheDestroyFunc)    (gpointer       value);
+
+/* Caches
+ */
+GLIB_DEPRECATED
+GCache*  g_cache_new           (GCacheNewFunc      value_new_func,
+                                GCacheDestroyFunc  value_destroy_func,
+                                GCacheDupFunc      key_dup_func,
+                                GCacheDestroyFunc  key_destroy_func,
+                                GHashFunc          hash_key_func,
+                                GHashFunc          hash_value_func,
+                                GEqualFunc         key_equal_func);
+GLIB_DEPRECATED
+void     g_cache_destroy       (GCache            *cache);
+GLIB_DEPRECATED
+gpointer g_cache_insert        (GCache            *cache,
+                                gpointer           key);
+GLIB_DEPRECATED
+void     g_cache_remove        (GCache            *cache,
+                                gconstpointer      value);
+GLIB_DEPRECATED
+void     g_cache_key_foreach   (GCache            *cache,
+                                GHFunc             func,
+                                gpointer           user_data);
+GLIB_DEPRECATED
+void     g_cache_value_foreach (GCache            *cache,
+                                GHFunc             func,
+                                gpointer           user_data);
+
+G_END_DECLS
+
+#endif /* __G_CACHE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/gcompletion.h b/dist/usr/include/glib-2.0/glib/deprecated/gcompletion.h
new file mode 100644
index 0000000..fa77596
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/gcompletion.h
@@ -0,0 +1,85 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/glist.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GCompletion     GCompletion;
+
+typedef gchar*          (*GCompletionFunc)      (gpointer);
+
+/* GCompletion
+ */
+
+typedef gint (*GCompletionStrncmpFunc) (const gchar *s1,
+                                        const gchar *s2,
+                                        gsize        n);
+
+struct _GCompletion
+{
+  GList* items;
+  GCompletionFunc func;
+ 
+  gchar* prefix;
+  GList* cache;
+  GCompletionStrncmpFunc strncmp_func;
+};
+
+GLIB_DEPRECATED_IN_2_26
+GCompletion* g_completion_new           (GCompletionFunc func);
+GLIB_DEPRECATED_IN_2_26
+void         g_completion_add_items     (GCompletion*    cmp,
+                                         GList*          items);
+GLIB_DEPRECATED_IN_2_26
+void         g_completion_remove_items  (GCompletion*    cmp,
+                                         GList*          items);
+GLIB_DEPRECATED_IN_2_26
+void         g_completion_clear_items   (GCompletion*    cmp);
+GLIB_DEPRECATED_IN_2_26
+GList*       g_completion_complete      (GCompletion*    cmp,
+                                         const gchar*    prefix,
+                                         gchar**         new_prefix);
+GLIB_DEPRECATED_IN_2_26
+GList*       g_completion_complete_utf8 (GCompletion  *cmp,
+                                         const gchar*    prefix,
+                                         gchar**         new_prefix);
+GLIB_DEPRECATED_IN_2_26
+void         g_completion_set_compare   (GCompletion *cmp,
+                                         GCompletionStrncmpFunc strncmp_func);
+GLIB_DEPRECATED_IN_2_26
+void         g_completion_free          (GCompletion*    cmp);
+
+G_END_DECLS
+
+#endif /* __G_COMPLETION_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/gmain.h b/dist/usr/include/glib-2.0/glib/deprecated/gmain.h
new file mode 100644
index 0000000..bb62240
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/gmain.h
@@ -0,0 +1,138 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gmain.h>
+
+G_BEGIN_DECLS
+
+/* ============== Compat main loop stuff ================== */
+
+/**
+ * g_main_new:
+ * @is_running: set to %TRUE to indicate that the loop is running. This
+ *     is not very important since calling g_main_run() will set this
+ *     to %TRUE anyway.
+ *
+ * Creates a new #GMainLoop for th default main context.
+ *
+ * Returns: a new #GMainLoop
+ *
+ * Deprecated: 2.2: Use g_main_loop_new() instead
+ */
+#define         g_main_new(is_running)  g_main_loop_new (NULL, is_running)
+
+/**
+ * g_main_run:
+ * @loop: a #GMainLoop
+ *
+ * Runs a main loop until it stops running.
+ *
+ * Deprecated: 2.2: Use g_main_loop_run() instead
+ */
+#define         g_main_run(loop)        g_main_loop_run(loop)
+
+/**
+ * g_main_quit:
+ * @loop: a #GMainLoop
+ *
+ * Stops the #GMainLoop.
+ * If g_main_run() was called to run the #GMainLoop, it will now return.
+ *
+ * Deprecated: 2.2: Use g_main_loop_quit() instead
+ */
+#define g_main_quit(loop)       g_main_loop_quit(loop)
+
+/**
+ * g_main_destroy:
+ * @loop: a #GMainLoop
+ *
+ * Frees the memory allocated for the #GMainLoop.
+ *
+ * Deprecated: 2.2: Use g_main_loop_unref() instead
+ */
+#define g_main_destroy(loop)    g_main_loop_unref(loop)
+
+/**
+ * g_main_is_running:
+ * @loop: a #GMainLoop
+ *
+ * Checks if the main loop is running.
+ *
+ * Returns: %TRUE if the main loop is running
+ *
+ * Deprecated: 2.2: Use g_main_loop_is_running() instead
+ */
+#define g_main_is_running(loop) g_main_loop_is_running(loop)
+
+/**
+ * g_main_iteration:
+ * @may_block: set to %TRUE if it should block (i.e. wait) until an event
+ *     source becomes ready. It will return after an event source has been
+ *     processed. If set to %FALSE it will return immediately if no event
+ *     source is ready to be processed.
+ *
+ * Runs a single iteration for the default #GMainContext.
+ *
+ * Returns: %TRUE if more events are pending.
+ *
+ * Deprecated: 2.2: Use g_main_context_iteration() instead.
+ */
+#define g_main_iteration(may_block) g_main_context_iteration (NULL, may_block)
+
+/**
+ * g_main_pending:
+ *
+ * Checks if any events are pending for the default #GMainContext
+ * (i.e. ready to be processed).
+ *
+ * Returns: %TRUE if any events are pending.
+ *
+ * Deprected: 2.2: Use g_main_context_pending() instead.
+ */
+#define g_main_pending()            g_main_context_pending (NULL)
+
+/**
+ * g_main_set_poll_func:
+ * @func: the function to call to poll all file descriptors
+ *
+ * Sets the function to use for the handle polling of file descriptors
+ * for the default main context.
+ *
+ * Deprecated: 2.2: Use g_main_context_set_poll_func() again
+ */
+#define g_main_set_poll_func(func)  g_main_context_set_poll_func (NULL, func)
+
+
+G_END_DECLS
+
+#endif /* __G_DEPRECATED_MAIN_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/grel.h b/dist/usr/include/glib-2.0/glib/deprecated/grel.h
new file mode 100644
index 0000000..b76e006
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/grel.h
@@ -0,0 +1,107 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GRelation       GRelation;
+typedef struct _GTuples         GTuples;
+
+struct _GTuples
+{
+  guint len;
+};
+
+/* GRelation
+ *
+ * Indexed Relations.  Imagine a really simple table in a
+ * database.  Relations are not ordered.  This data type is meant for
+ * maintaining a N-way mapping.
+ *
+ * g_relation_new() creates a relation with FIELDS fields
+ *
+ * g_relation_destroy() frees all resources
+ * g_tuples_destroy() frees the result of g_relation_select()
+ *
+ * g_relation_index() indexes relation FIELD with the provided
+ *   equality and hash functions.  this must be done before any
+ *   calls to insert are made.
+ *
+ * g_relation_insert() inserts a new tuple.  you are expected to
+ *   provide the right number of fields.
+ *
+ * g_relation_delete() deletes all relations with KEY in FIELD
+ * g_relation_select() returns ...
+ * g_relation_count() counts ...
+ */
+
+GLIB_DEPRECATED_IN_2_26
+GRelation* g_relation_new     (gint         fields);
+GLIB_DEPRECATED_IN_2_26
+void       g_relation_destroy (GRelation   *relation);
+GLIB_DEPRECATED_IN_2_26
+void       g_relation_index   (GRelation   *relation,
+                               gint         field,
+                               GHashFunc    hash_func,
+                               GEqualFunc   key_equal_func);
+GLIB_DEPRECATED_IN_2_26
+void       g_relation_insert  (GRelation   *relation,
+                               ...);
+GLIB_DEPRECATED_IN_2_26
+gint       g_relation_delete  (GRelation   *relation,
+                               gconstpointer  key,
+                               gint         field);
+GLIB_DEPRECATED_IN_2_26
+GTuples*   g_relation_select  (GRelation   *relation,
+                               gconstpointer  key,
+                               gint         field);
+GLIB_DEPRECATED_IN_2_26
+gint       g_relation_count   (GRelation   *relation,
+                               gconstpointer  key,
+                               gint         field);
+GLIB_DEPRECATED_IN_2_26
+gboolean   g_relation_exists  (GRelation   *relation,
+                               ...);
+GLIB_DEPRECATED_IN_2_26
+void       g_relation_print   (GRelation   *relation);
+GLIB_DEPRECATED_IN_2_26
+void       g_tuples_destroy   (GTuples     *tuples);
+GLIB_DEPRECATED_IN_2_26
+gpointer   g_tuples_index     (GTuples     *tuples,
+                               gint         index_,
+                               gint         field);
+
+G_END_DECLS
+
+#endif /* __G_REL_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/deprecated/gthread.h b/dist/usr/include/glib-2.0/glib/deprecated/gthread.h
new file mode 100644
index 0000000..462bb8f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/deprecated/gthread.h
@@ -0,0 +1,286 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gthread.h>
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+  G_THREAD_PRIORITY_LOW,
+  G_THREAD_PRIORITY_NORMAL,
+  G_THREAD_PRIORITY_HIGH,
+  G_THREAD_PRIORITY_URGENT
+} GThreadPriority;
+
+struct  _GThread
+{
+  /*< private >*/
+  GThreadFunc func;
+  gpointer data;
+  gboolean joinable;
+  GThreadPriority priority;
+};
+
+typedef struct _GThreadFunctions GThreadFunctions;
+struct _GThreadFunctions
+{
+  GMutex*  (*mutex_new)           (void);
+  void     (*mutex_lock)          (GMutex               *mutex);
+  gboolean (*mutex_trylock)       (GMutex               *mutex);
+  void     (*mutex_unlock)        (GMutex               *mutex);
+  void     (*mutex_free)          (GMutex               *mutex);
+  GCond*   (*cond_new)            (void);
+  void     (*cond_signal)         (GCond                *cond);
+  void     (*cond_broadcast)      (GCond                *cond);
+  void     (*cond_wait)           (GCond                *cond,
+                                   GMutex               *mutex);
+  gboolean (*cond_timed_wait)     (GCond                *cond,
+                                   GMutex               *mutex,
+                                   GTimeVal             *end_time);
+  void      (*cond_free)          (GCond                *cond);
+  GPrivate* (*private_new)        (GDestroyNotify        destructor);
+  gpointer  (*private_get)        (GPrivate             *private_key);
+  void      (*private_set)        (GPrivate             *private_key,
+                                   gpointer              data);
+  void      (*thread_create)      (GThreadFunc           func,
+                                   gpointer              data,
+                                   gulong                stack_size,
+                                   gboolean              joinable,
+                                   gboolean              bound,
+                                   GThreadPriority       priority,
+                                   gpointer              thread,
+                                   GError              **error);
+  void      (*thread_yield)       (void);
+  void      (*thread_join)        (gpointer              thread);
+  void      (*thread_exit)        (void);
+  void      (*thread_set_priority)(gpointer              thread,
+                                   GThreadPriority       priority);
+  void      (*thread_self)        (gpointer              thread);
+  gboolean  (*thread_equal)       (gpointer              thread1,
+                                   gpointer              thread2);
+};
+
+GLIB_VAR GThreadFunctions       g_thread_functions_for_glib_use;
+GLIB_VAR gboolean               g_thread_use_default_impl;
+
+GLIB_VAR guint64   (*g_thread_gettime) (void);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new)
+GThread *g_thread_create       (GThreadFunc       func,
+                                gpointer          data,
+                                gboolean          joinable,
+                                GError          **error);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_thread_new)
+GThread *g_thread_create_full  (GThreadFunc       func,
+                                gpointer          data,
+                                gulong            stack_size,
+                                gboolean          joinable,
+                                gboolean          bound,
+                                GThreadPriority   priority,
+                                GError          **error);
+
+GLIB_DEPRECATED_IN_2_32
+void     g_thread_set_priority (GThread          *thread,
+                                GThreadPriority   priority);
+
+GLIB_DEPRECATED_IN_2_32
+void     g_thread_foreach      (GFunc             thread_func,
+                                gpointer          user_data);
+
+#ifndef G_OS_WIN32
+#include <pthread.h>
+#endif
+
+#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl
+#define G_STATIC_MUTEX_INIT { NULL }
+typedef struct
+{
+  GMutex *mutex;
+#ifndef G_OS_WIN32
+  /* only for ABI compatibility reasons */
+  pthread_mutex_t unused;
+#endif
+} GStaticMutex;
+
+#define g_static_mutex_lock(mutex) \
+    g_mutex_lock (g_static_mutex_get_mutex (mutex))
+#define g_static_mutex_trylock(mutex) \
+    g_mutex_trylock (g_static_mutex_get_mutex (mutex))
+#define g_static_mutex_unlock(mutex) \
+    g_mutex_unlock (g_static_mutex_get_mutex (mutex))
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_mutex_init)
+void    g_static_mutex_init           (GStaticMutex *mutex);
+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;
+struct _GStaticRecMutex
+{
+  /*< private >*/
+  GStaticMutex mutex;
+  guint depth;
+
+  /* ABI compat only */
+  union {
+#ifdef G_OS_WIN32
+    void *owner;
+#else
+    pthread_t owner;
+#endif
+    gdouble dummy;
+  } unused;
+};
+
+#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
+GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_init)
+void     g_static_rec_mutex_init        (GStaticRecMutex *mutex);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_lock)
+void     g_static_rec_mutex_lock        (GStaticRecMutex *mutex);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_try_lock)
+gboolean g_static_rec_mutex_trylock     (GStaticRecMutex *mutex);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_unlock)
+void     g_static_rec_mutex_unlock      (GStaticRecMutex *mutex);
+
+GLIB_DEPRECATED_IN_2_32
+void     g_static_rec_mutex_lock_full   (GStaticRecMutex *mutex,
+                                         guint            depth);
+
+GLIB_DEPRECATED_IN_2_32
+guint    g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rec_mutex_free)
+void     g_static_rec_mutex_free        (GStaticRecMutex *mutex);
+
+typedef struct _GStaticRWLock GStaticRWLock;
+struct _GStaticRWLock
+{
+  /*< private >*/
+  GStaticMutex mutex;
+  GCond *read_cond;
+  GCond *write_cond;
+  guint read_counter;
+  gboolean have_writer;
+  guint want_to_read;
+  guint want_to_write;
+};
+
+#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 }
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_init)
+void      g_static_rw_lock_init           (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_lock)
+void      g_static_rw_lock_reader_lock    (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_trylock)
+gboolean  g_static_rw_lock_reader_trylock (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_reader_unlock)
+void      g_static_rw_lock_reader_unlock  (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_lock)
+void      g_static_rw_lock_writer_lock    (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_trylock)
+gboolean  g_static_rw_lock_writer_trylock (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_writer_unlock)
+void      g_static_rw_lock_writer_unlock  (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_rw_lock_free)
+void      g_static_rw_lock_free           (GStaticRWLock *lock);
+
+GLIB_DEPRECATED_IN_2_32
+GPrivate *      g_private_new             (GDestroyNotify notify);
+
+typedef struct _GStaticPrivate  GStaticPrivate;
+struct _GStaticPrivate
+{
+  /*< private >*/
+  guint index;
+};
+
+#define G_STATIC_PRIVATE_INIT { 0 }
+GLIB_DEPRECATED_IN_2_32
+void     g_static_private_init           (GStaticPrivate *private_key);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_private_get)
+gpointer g_static_private_get            (GStaticPrivate *private_key);
+
+GLIB_DEPRECATED_IN_2_32_FOR(g_private_set)
+void     g_static_private_set            (GStaticPrivate *private_key,
+                                          gpointer        data,
+                                          GDestroyNotify  notify);
+
+GLIB_DEPRECATED_IN_2_32
+void     g_static_private_free           (GStaticPrivate *private_key);
+
+GLIB_DEPRECATED_IN_2_32
+gboolean g_once_init_enter_impl          (volatile gsize *location);
+
+GLIB_DEPRECATED_IN_2_32
+void     g_thread_init                   (gpointer vtable);
+GLIB_DEPRECATED_IN_2_32
+void    g_thread_init_with_errorcheck_mutexes (gpointer vtable);
+
+GLIB_DEPRECATED_IN_2_32
+gboolean g_thread_get_initialized        (void);
+
+GLIB_VAR gboolean g_threads_got_initialized;
+
+#define g_thread_supported()     (1)
+
+GLIB_DEPRECATED_IN_2_32
+GMutex *        g_mutex_new             (void);
+GLIB_DEPRECATED_IN_2_32
+void            g_mutex_free            (GMutex *mutex);
+GLIB_DEPRECATED_IN_2_32
+GCond *         g_cond_new              (void);
+GLIB_DEPRECATED_IN_2_32
+void            g_cond_free             (GCond  *cond);
+GLIB_DEPRECATED_IN_2_32
+gboolean        g_cond_timed_wait       (GCond          *cond,
+                                         GMutex         *mutex,
+                                         GTimeVal       *timeval);
+
+G_END_DECLS
+
+#endif /* __G_DEPRECATED_THREAD_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/galloca.h b/dist/usr/include/glib-2.0/glib/galloca.h
new file mode 100644
index 0000000..8ece1b2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/galloca.h
@@ -0,0 +1,112 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+#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)
+#elif defined (GLIB_HAVE_ALLOCA_H)
+/* a native and working alloca.h is there */ 
+# include <alloca.h>
+#else /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */
+# if defined(_MSC_VER) || defined(__DMC__)
+#  include <malloc.h>
+#  define alloca _alloca
+# else /* !_MSC_VER && !__DMC__ */
+#  ifdef _AIX
+#   pragma alloca
+#  else /* !_AIX */
+#   ifndef alloca /* predefined by HP cc +Olibcalls */
+G_BEGIN_DECLS
+char *alloca ();
+G_END_DECLS
+#   endif /* !alloca */
+#  endif /* !_AIX */
+# endif /* !_MSC_VER && !__DMC__ */
+#endif /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */
+
+/**
+ * g_alloca:
+ * @size: number of bytes to allocate.
+ * 
+ * Allocates @size bytes on the stack; these bytes will be freed when the current
+ * stack frame is cleaned up. This macro essentially just wraps the alloca()
+ * function present on most UNIX variants.
+ * Thus it provides the same advantages and pitfalls as alloca():
+ * <variablelist>
+ *   <varlistentry><term></term><listitem><para>
+ *     + alloca() is very fast, as on most systems it's implemented by just adjusting
+ *     the stack pointer register.
+ *   </para></listitem></varlistentry>
+ *   <varlistentry><term></term><listitem><para>
+ *     + It doesn't cause any memory fragmentation, within its scope, separate alloca()
+ *     blocks just build up and are released together at function end.
+ *   </para></listitem></varlistentry>
+ *   <varlistentry><term></term><listitem><para>
+ *     - Allocation sizes have to fit into the current stack frame. For instance in a
+ *       threaded environment on Linux, the per-thread stack size is limited to 2 Megabytes,
+ *       so be sparse with alloca() uses.
+ *   </para></listitem></varlistentry>
+ *   <varlistentry><term></term><listitem><para>
+ *     - Allocation failure due to insufficient stack space is not indicated with a %NULL
+ *       return like e.g. with malloc(). Instead, most systems probably handle it the same
+ *       way as out of stack space situations from infinite function recursion, i.e.
+ *       with a segmentation fault.
+ *   </para></listitem></varlistentry>
+ *   <varlistentry><term></term><listitem><para>
+ *     - Special care has to be taken when mixing alloca() with GNU C variable sized arrays.
+ *       Stack space allocated with alloca() in the same scope as a variable sized array
+ *       will be freed together with the variable sized array upon exit of that scope, and
+ *       not upon exit of the enclosing function scope.
+ *   </para></listitem></varlistentry>
+ * </variablelist>
+ * 
+ * Returns: space for @size bytes, allocated on the stack
+ */
+#define g_alloca(size)		 alloca (size)
+/**
+ * g_newa:
+ * @struct_type: Type of memory chunks to be allocated
+ * @n_structs: Number of chunks to be allocated
+ * 
+ * Wraps g_alloca() in a more typesafe manner.
+ * 
+ * Returns: Pointer to stack space for @n_structs chunks of type @struct_type
+ */
+#define g_newa(struct_type, n_structs)	((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs)))
+
+#endif /* __G_ALLOCA_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/garray.h b/dist/usr/include/glib-2.0/glib/garray.h
new file mode 100644
index 0000000..f3d7cee
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/garray.h
@@ -0,0 +1,236 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GBytes          GBytes;
+typedef struct _GArray		GArray;
+typedef struct _GByteArray	GByteArray;
+typedef struct _GPtrArray	GPtrArray;
+
+struct _GArray
+{
+  gchar *data;
+  guint len;
+};
+
+struct _GByteArray
+{
+  guint8 *data;
+  guint	  len;
+};
+
+struct _GPtrArray
+{
+  gpointer *pdata;
+  guint	    len;
+};
+
+/* Resizable arrays. remove fills any cleared spot and shortens the
+ * array, while preserving the order. remove_fast will distort the
+ * order by moving the last element to the position of the removed.
+ */
+
+#define g_array_append_val(a,v)	  g_array_append_vals (a, &(v), 1)
+#define g_array_prepend_val(a,v)  g_array_prepend_vals (a, &(v), 1)
+#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);
+
+/* Resizable pointer array.  This interface is much less complicated
+ * than the above.  Add appends a pointer.  Remove fills any cleared 
+ * 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);
+
+
+/* Byte arrays, an array of guint8.  Implemented as a GArray,
+ * 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);
+
+G_END_DECLS
+
+#endif /* __G_ARRAY_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gasyncqueue.h b/dist/usr/include/glib-2.0/glib/gasyncqueue.h
new file mode 100644
index 0000000..3d4b38f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gasyncqueue.h
@@ -0,0 +1,111 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#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)
+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);
+
+GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop)
+gpointer     g_async_queue_timed_pop            (GAsyncQueue      *queue,
+                                                 GTimeVal         *end_time);
+GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop_unlocked)
+gpointer     g_async_queue_timed_pop_unlocked   (GAsyncQueue      *queue,
+                                                 GTimeVal         *end_time);
+
+G_END_DECLS
+
+#endif /* __G_ASYNCQUEUE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gatomic.h b/dist/usr/include/glib-2.0/glib/gatomic.h
new file mode 100644
index 0000000..e7fd1f2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gatomic.h
@@ -0,0 +1,232 @@
+/*
+ * Copyright © 2011 Ryan Lortie
+ *
+ * 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
+ * licence, 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.
+ *
+ * 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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+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
+guint                   g_atomic_int_and                      (volatile guint *atomic,
+                                                               guint           val);
+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);
+
+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
+gsize                   g_atomic_pointer_and                  (volatile void  *atomic,
+                                                               gsize           val);
+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);
+
+GLIB_DEPRECATED_IN_2_30_FOR(g_atomic_add)
+gint                    g_atomic_int_exchange_and_add         (volatile gint  *atomic,
+                                                               gint            val);
+
+G_END_DECLS
+
+#if defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
+
+#define g_atomic_int_get(atomic) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ *(atomic) : 0);                                  \
+    __sync_synchronize ();                                                   \
+    (gint) *(atomic);                                                        \
+  }))
+#define g_atomic_int_set(atomic, newval) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (newval) : 0);                                   \
+    *(atomic) = (newval);                                                    \
+    __sync_synchronize ();                                                   \
+  }))
+#define g_atomic_int_inc(atomic) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ *(atomic) : 0);                                  \
+    (void) __sync_fetch_and_add ((atomic), 1);                               \
+  }))
+#define g_atomic_int_dec_and_test(atomic) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ *(atomic) : 0);                                  \
+    __sync_fetch_and_sub ((atomic), 1) == 1;                                 \
+  }))
+#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 0);                        \
+    (gboolean) __sync_bool_compare_and_swap ((atomic), (oldval), (newval));  \
+  }))
+#define g_atomic_int_add(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 0);                                      \
+    (gint) __sync_fetch_and_add ((atomic), (val));                           \
+  }))
+#define g_atomic_int_and(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 0);                                      \
+    (guint) __sync_fetch_and_and ((atomic), (val));                          \
+  }))
+#define g_atomic_int_or(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 0);                                      \
+    (guint) __sync_fetch_and_or ((atomic), (val));                           \
+  }))
+#define g_atomic_int_xor(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (val) : 0);                                      \
+    (guint) __sync_fetch_and_xor ((atomic), (val));                          \
+  }))
+
+#define g_atomic_pointer_get(atomic) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    __sync_synchronize ();                                                   \
+    (gpointer) *(atomic);                                                    \
+  }))
+#define g_atomic_pointer_set(atomic, newval) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    *(atomic) = (__typeof__ (*(atomic))) (gsize) (newval);                   \
+    __sync_synchronize ();                                                   \
+  }))
+#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    (gboolean) __sync_bool_compare_and_swap ((atomic), (oldval), (newval));  \
+  }))
+#define g_atomic_pointer_add(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    (void) (0 ? (val) ^ (val) : 0);                                          \
+    (gssize) __sync_fetch_and_add ((atomic), (val));                         \
+  }))
+#define g_atomic_pointer_and(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    (void) (0 ? (val) ^ (val) : 0);                                          \
+    (gsize) __sync_fetch_and_and ((atomic), (val));                          \
+  }))
+#define g_atomic_pointer_or(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    (void) (0 ? (val) ^ (val) : 0);                                          \
+    (gsize) __sync_fetch_and_or ((atomic), (val));                           \
+  }))
+#define g_atomic_pointer_xor(atomic, val) \
+  (G_GNUC_EXTENSION ({                                                          \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
+    (void) (0 ? (gpointer) *(atomic) : 0);                                   \
+    (void) (0 ? (val) ^ (val) : 0);                                          \
+    (gsize) __sync_fetch_and_xor ((atomic), (val));                          \
+  }))
+
+#else /* defined(G_ATOMIC_LOCK_FREE) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) */
+
+#define g_atomic_int_get(atomic) \
+  (g_atomic_int_get ((gint *) (atomic)))
+#define g_atomic_int_set(atomic, newval) \
+  (g_atomic_int_set ((gint *) (atomic), (gint) (newval)))
+#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \
+  (g_atomic_int_compare_and_exchange ((gint *) (atomic), (oldval), (newval)))
+#define g_atomic_int_add(atomic, val) \
+  (g_atomic_int_add ((gint *) (atomic), (val)))
+#define g_atomic_int_and(atomic, val) \
+  (g_atomic_int_and ((guint *) (atomic), (val)))
+#define g_atomic_int_or(atomic, val) \
+  (g_atomic_int_or ((guint *) (atomic), (val)))
+#define g_atomic_int_xor(atomic, val) \
+  (g_atomic_int_xor ((guint *) (atomic), (val)))
+#define g_atomic_int_inc(atomic) \
+  (g_atomic_int_inc ((gint *) (atomic)))
+#define g_atomic_int_dec_and_test(atomic) \
+  (g_atomic_int_dec_and_test ((gint *) (atomic)))
+
+#define g_atomic_pointer_get(atomic) \
+  (g_atomic_pointer_get (atomic))
+#define g_atomic_pointer_set(atomic, newval) \
+  (g_atomic_pointer_set ((atomic), (gpointer) (newval)))
+#define g_atomic_pointer_compare_and_exchange(atomic, oldval, newval) \
+  (g_atomic_pointer_compare_and_exchange ((atomic), (gpointer) (oldval), (gpointer) (newval)))
+#define g_atomic_pointer_add(atomic, val) \
+  (g_atomic_pointer_add ((atomic), (gssize) (val)))
+#define g_atomic_pointer_and(atomic, val) \
+  (g_atomic_pointer_and ((atomic), (gsize) (val)))
+#define g_atomic_pointer_or(atomic, val) \
+  (g_atomic_pointer_or ((atomic), (gsize) (val)))
+#define g_atomic_pointer_xor(atomic, val) \
+  (g_atomic_pointer_xor ((atomic), (gsize) (val)))
+
+#endif /* defined(__GNUC__) && defined(G_ATOMIC_OP_USE_GCC_BUILTINS) */
+
+#endif /* __G_ATOMIC_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gbacktrace.h b/dist/usr/include/glib-2.0/glib/gbacktrace.h
new file mode 100644
index 0000000..47dd2ee
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gbacktrace.h
@@ -0,0 +1,66 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#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);
+
+/**
+ * G_BREAKPOINT:
+ *
+ * Inserts a breakpoint instruction into the code.
+ *
+ * On x86 and alpha systems this is implemented as a soft interrupt
+ * and on other architectures it raises a <literal>SIGTRAP</literal> signal.
+ */
+#if (defined (__i386__) || defined (__x86_64__)) && defined (__GNUC__) && __GNUC__ >= 2
+#  define G_BREAKPOINT()        G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
+#elif (defined (_MSC_VER) || defined (__DMC__)) && defined (_M_IX86)
+#  define G_BREAKPOINT()        G_STMT_START{ __asm int 3h }G_STMT_END
+#elif defined (_MSC_VER)
+#  define G_BREAKPOINT()        G_STMT_START{ __debugbreak(); }G_STMT_END
+#elif defined (__alpha__) && !defined(__osf__) && defined (__GNUC__) && __GNUC__ >= 2
+#  define G_BREAKPOINT()        G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
+#else   /* !__i386__ && !__alpha__ */
+#  define G_BREAKPOINT()        G_STMT_START{ raise (SIGTRAP); }G_STMT_END
+#endif  /* __i386__ */
+
+G_END_DECLS
+
+#endif /* __G_BACKTRACE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gbase64.h b/dist/usr/include/glib-2.0/glib/gbase64.h
new file mode 100644
index 0000000..b53fca5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gbase64.h
@@ -0,0 +1,63 @@
+/* gbase64.h - Base64 coding functions
+ *
+ *  Copyright (C) 2005  Alexander Larsson <alexl@redhat.com>
+ *
+ * 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_BASE64_H__
+#define __G_BASE64_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#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);
+
+
+G_END_DECLS
+
+#endif /* __G_BASE64_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gbitlock.h b/dist/usr/include/glib-2.0/glib/gbitlock.h
new file mode 100644
index 0000000..7485dfa
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gbitlock.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright © 2008 Ryan Lortie
+ * Copyright © 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ */
+
+#ifndef __G_BITLOCK_H__
+#define __G_BITLOCK_H__
+
+#include <glib/gtypes.h>
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+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);
+
+#ifdef __GNUC__
+
+#define g_pointer_bit_lock(address, lock_bit) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
+    g_pointer_bit_lock ((address), (lock_bit));                              \
+  }))
+
+#define g_pointer_bit_trylock(address, lock_bit) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
+    g_pointer_bit_trylock ((address), (lock_bit));                           \
+  }))
+
+#define g_pointer_bit_unlock(address, lock_bit) \
+  (G_GNUC_EXTENSION ({                                                       \
+    G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer));                \
+    g_pointer_bit_unlock ((address), (lock_bit));                            \
+  }))
+
+#endif
+
+G_END_DECLS
+
+#endif /* __G_BITLOCK_H_ */
diff --git a/dist/usr/include/glib-2.0/glib/gbookmarkfile.h b/dist/usr/include/glib-2.0/glib/gbookmarkfile.h
new file mode 100644
index 0000000..4d94efe
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gbookmarkfile.h
@@ -0,0 +1,255 @@
+/* gbookmarkfile.h: parsing and building desktop bookmarks
+ *
+ * Copyright (C) 2005-2006 Emmanuele Bassi
+ *
+ * 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,
+ */
+
+#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
+
+#include <glib/gerror.h>
+#include <time.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_BOOKMARK_FILE_ERROR:
+ *
+ * Error domain for bookmark file parsing.
+ * Errors in this domain will be from the #GBookmarkFileError
+ * enumeration. See #GError for information on error domains.
+ */
+#define G_BOOKMARK_FILE_ERROR	(g_bookmark_file_error_quark ())
+
+
+/**
+ * GBookmarkFileError:
+ * @G_BOOKMARK_FILE_ERROR_INVALID_URI: URI was ill-formed
+ * @G_BOOKMARK_FILE_ERROR_INVALID_VALUE: a requested field was not found
+ * @G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED: a requested application did
+ *     not register a bookmark
+ * @G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND: a requested URI was not found
+ * @G_BOOKMARK_FILE_ERROR_READ: document was ill formed
+ * @G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING: the text being parsed was
+ *     in an unknown encoding
+ * @G_BOOKMARK_FILE_ERROR_WRITE: an error occurred while writing
+ * @G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND: requested file was not found
+ *
+ * Error codes returned by bookmark file parsing.
+ */
+typedef enum
+{
+  G_BOOKMARK_FILE_ERROR_INVALID_URI,
+  G_BOOKMARK_FILE_ERROR_INVALID_VALUE,
+  G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED,
+  G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND,
+  G_BOOKMARK_FILE_ERROR_READ,
+  G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING,
+  G_BOOKMARK_FILE_ERROR_WRITE,
+  G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND
+} GBookmarkFileError;
+
+GLIB_AVAILABLE_IN_ALL
+GQuark g_bookmark_file_error_quark (void);
+
+/**
+ * GBookmarkFile:
+ *
+ * The <structname>GBookmarkFile</structname> struct contains only
+ * private data and should not be directly accessed.
+ */
+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,
+						    const gchar    *exec,
+						    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,
+						    gchar         **exec,
+						    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,
+						    GError        **error);
+
+G_END_DECLS
+
+#endif /* __G_BOOKMARK_FILE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gbytes.h b/dist/usr/include/glib-2.0/glib/gbytes.h
new file mode 100644
index 0000000..c89f6eb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gbytes.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright © 2009, 2010 Codethink Limited
+ * Copyright © 2011 Collabora Ltd.
+ *
+ * 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 licence, 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.
+ *
+ * Author: Ryan Lortie <desrt@desrt.ca>
+ *         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
+
+#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);
+
+G_END_DECLS
+
+#endif /* __G_BYTES_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gcharset.h b/dist/usr/include/glib-2.0/glib/gcharset.h
new file mode 100644
index 0000000..f3b306d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gcharset.h
@@ -0,0 +1,44 @@
+/* gcharset.h - Charset functions
+ *
+ *  Copyright (C) 2011 Red Hat, Inc.
+ *
+ * The GLib 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.
+ *
+ * The GLib 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 the Gnome Library; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#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
+
+#endif  /* __G_CHARSET_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gchecksum.h b/dist/usr/include/glib-2.0/glib/gchecksum.h
new file mode 100644
index 0000000..ba500a2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gchecksum.h
@@ -0,0 +1,103 @@
+/* gchecksum.h - data hashing functions
+ *
+ * Copyright (C) 2007  Emmanuele Bassi  <ebassi@gnome.org>
+ *
+ * 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_CHECKSUM_H__
+#define __G_CHECKSUM_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gtypes.h>
+#include <glib/gbytes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GChecksumType:
+ * @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.
+ *
+ * Note that the #GChecksumType enumeration may be extended at a later
+ * date to include new hashing algorithm types.
+ *
+ * Since: 2.16
+ */
+typedef enum {
+  G_CHECKSUM_MD5,
+  G_CHECKSUM_SHA1,
+  G_CHECKSUM_SHA256,
+  G_CHECKSUM_SHA512
+} GChecksumType;
+
+/**
+ * GChecksum:
+ *
+ * An opaque structure representing a checksumming operation.
+ * To create a new GChecksum, use g_checksum_new(). To free
+ * a GChecksum, use g_checksum_free().
+ *
+ * Since: 2.16
+ */
+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/dist/usr/include/glib-2.0/glib/gconvert.h b/dist/usr/include/glib-2.0/glib/gconvert.h
new file mode 100644
index 0000000..1945c07
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gconvert.h
@@ -0,0 +1,200 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GConvertError:
+ * @G_CONVERT_ERROR_NO_CONVERSION: Conversion between the requested character
+ *     sets is not supported.
+ * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input.
+ * @G_CONVERT_ERROR_FAILED: Conversion failed for some reason.
+ * @G_CONVERT_ERROR_PARTIAL_INPUT: Partial character sequence at end of input.
+ * @G_CONVERT_ERROR_BAD_URI: URI is invalid.
+ * @G_CONVERT_ERROR_NOT_ABSOLUTE_PATH: Pathname is not an absolute path.
+ *
+ * Error codes returned by character set conversion routines.
+ */
+typedef enum
+{
+  G_CONVERT_ERROR_NO_CONVERSION,
+  G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+  G_CONVERT_ERROR_FAILED,
+  G_CONVERT_ERROR_PARTIAL_INPUT,
+  G_CONVERT_ERROR_BAD_URI,
+  G_CONVERT_ERROR_NOT_ABSOLUTE_PATH
+} GConvertError;
+
+/**
+ * G_CONVERT_ERROR:
+ *
+ * Error domain for character set conversions. Errors in this domain will
+ * be from the #GConvertError enumeration. See #GError for information on
+ * error domains.
+ */
+#define G_CONVERT_ERROR g_convert_error_quark()
+GLIB_AVAILABLE_IN_ALL
+GQuark g_convert_error_quark (void);
+
+/**
+ * GIconv:
+ *
+ * The <structname>GIConv</structname> struct wraps an
+ * iconv() conversion descriptor. It contains private data
+ * and should only be accessed using the following functions.
+ */
+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,
+				const gchar  *from_codeset,
+				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,
+				const gchar  *from_codeset,
+				const gchar  *fallback,
+				gsize        *bytes_read,     
+				gsize        *bytes_written,  
+				GError      **error) G_GNUC_MALLOC;
+
+
+/* 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,     
+			   gsize        *bytes_written,  
+			   GError      **error) G_GNUC_MALLOC;
+
+/* Convert between the operating system (or C runtime)
+ * representation of file names and UTF-8.
+ */
+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/dist/usr/include/glib-2.0/glib/gdataset.h b/dist/usr/include/glib-2.0/glib/gdataset.h
new file mode 100644
index 0000000..6d69e60
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gdataset.h
@@ -0,0 +1,152 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gquark.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GData           GData;
+
+typedef void            (*GDataForeachFunc)     (GQuark         key_id,
+                                                 gpointer       data,
+                                                 gpointer       user_data);
+
+/* 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);
+
+/**
+ * G_DATALIST_FLAGS_MASK:
+ *
+ * A bitmask that restricts the possible flags passed to
+ * g_datalist_set_flags(). Passing a flags value where
+ * flags & ~G_DATALIST_FLAGS_MASK != 0 is an error.
+ */
+#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)      \
+     g_datalist_id_set_data_full ((dl), (q), (d), NULL)
+#define   g_datalist_id_remove_data(dl, q)      \
+     g_datalist_id_set_data ((dl), (q), NULL)
+#define   g_datalist_set_data_full(dl, k, d, f) \
+     g_datalist_id_set_data_full ((dl), g_quark_from_string (k), (d), (f))
+#define   g_datalist_remove_no_notify(dl, k)    \
+     g_datalist_id_remove_no_notify ((dl), g_quark_try_string (k))
+#define   g_datalist_set_data(dl, k, d)         \
+     g_datalist_set_data_full ((dl), (k), (d), NULL)
+#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);
+#define   g_dataset_id_set_data(l, k, d)        \
+     g_dataset_id_set_data_full ((l), (k), (d), NULL)
+#define   g_dataset_id_remove_data(l, k)        \
+     g_dataset_id_set_data ((l), (k), NULL)
+#define   g_dataset_get_data(l, k)              \
+     (g_dataset_id_get_data ((l), g_quark_try_string (k)))
+#define   g_dataset_set_data_full(l, k, d, f)   \
+     g_dataset_id_set_data_full ((l), g_quark_from_string (k), (d), (f))
+#define   g_dataset_remove_no_notify(l, k)      \
+     g_dataset_id_remove_no_notify ((l), g_quark_try_string (k))
+#define   g_dataset_set_data(l, k, d)           \
+     g_dataset_set_data_full ((l), (k), (d), NULL)
+#define   g_dataset_remove_data(l, k)           \
+     g_dataset_id_set_data ((l), g_quark_try_string (k), NULL)
+
+G_END_DECLS
+
+#endif /* __G_DATASET_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gdate.h b/dist/usr/include/glib-2.0/glib/gdate.h
new file mode 100644
index 0000000..ad02879
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gdate.h
@@ -0,0 +1,311 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <time.h>
+
+#include <glib/gtypes.h>
+#include <glib/gquark.h>
+
+G_BEGIN_DECLS
+
+/* GDate
+ *
+ * Date calculations (not time for now, to be resolved). These are a
+ * mutant combination of Steffen Beyer's DateCalc routines
+ * (http://www.perl.com/CPAN/authors/id/STBEY/) and Jon Trowbridge's
+ * date routines (written for in-house software).  Written by Havoc
+ * Pennington <hp@pobox.com>
+ */
+
+typedef gint32  GTime;
+typedef guint16 GDateYear;
+typedef guint8  GDateDay;   /* day of the month */
+typedef struct _GDate GDate;
+
+/* enum used to specify order of appearance in parsed date strings */
+typedef enum
+{
+  G_DATE_DAY   = 0,
+  G_DATE_MONTH = 1,
+  G_DATE_YEAR  = 2
+} GDateDMY;
+
+/* actual week and month values */
+typedef enum
+{
+  G_DATE_BAD_WEEKDAY  = 0,
+  G_DATE_MONDAY       = 1,
+  G_DATE_TUESDAY      = 2,
+  G_DATE_WEDNESDAY    = 3,
+  G_DATE_THURSDAY     = 4,
+  G_DATE_FRIDAY       = 5,
+  G_DATE_SATURDAY     = 6,
+  G_DATE_SUNDAY       = 7
+} GDateWeekday;
+typedef enum
+{
+  G_DATE_BAD_MONTH = 0,
+  G_DATE_JANUARY   = 1,
+  G_DATE_FEBRUARY  = 2,
+  G_DATE_MARCH     = 3,
+  G_DATE_APRIL     = 4,
+  G_DATE_MAY       = 5,
+  G_DATE_JUNE      = 6,
+  G_DATE_JULY      = 7,
+  G_DATE_AUGUST    = 8,
+  G_DATE_SEPTEMBER = 9,
+  G_DATE_OCTOBER   = 10,
+  G_DATE_NOVEMBER  = 11,
+  G_DATE_DECEMBER  = 12
+} GDateMonth;
+
+#define G_DATE_BAD_JULIAN 0U
+#define G_DATE_BAD_DAY    0U
+#define G_DATE_BAD_YEAR   0U
+
+/* Note: directly manipulating structs is generally a bad idea, but
+ * in this case it's an *incredibly* bad idea, because all or part
+ * of this struct can be invalid at any given time. Use the functions,
+ * or you will get hosed, I promise.
+ */
+struct _GDate
+{
+  guint julian_days : 32; /* julian days representation - we use a
+                           *  bitfield hoping that 64 bit platforms
+                           *  will pack this whole struct in one big
+                           *  int
+                           */
+
+  guint julian : 1;    /* julian is valid */
+  guint dmy    : 1;    /* dmy is valid */
+
+  /* DMY representation */
+  guint day    : 6;
+  guint month  : 4;
+  guint year   : 16;
+};
+
+/* g_date_new() returns an invalid date, you then have to _set() stuff
+ * 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
+ * _parse.  Almost all g_date operations are undefined on invalid
+ * 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
+ * routine needs to be added.
+ * 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);
+
+/* The parse routine is meant for dates typed in by a user, so it
+ * 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
+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,
+                                           const GDate *date);
+
+#ifndef G_DISABLE_DEPRECATED
+
+#define g_date_weekday 			g_date_get_weekday
+#define g_date_month 			g_date_get_month
+#define g_date_year 			g_date_get_year
+#define g_date_day 			g_date_get_day
+#define g_date_julian 			g_date_get_julian
+#define g_date_day_of_year 		g_date_get_day_of_year
+#define g_date_monday_week_of_year 	g_date_get_monday_week_of_year
+#define g_date_sunday_week_of_year 	g_date_get_sunday_week_of_year
+#define g_date_days_in_month 		g_date_get_days_in_month
+#define g_date_monday_weeks_in_year 	g_date_get_monday_weeks_in_year
+#define g_date_sunday_weeks_in_year	g_date_get_sunday_weeks_in_year
+
+#endif /* G_DISABLE_DEPRECATED */
+
+G_END_DECLS
+
+#endif /* __G_DATE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gdatetime.h b/dist/usr/include/glib-2.0/glib/gdatetime.h
new file mode 100644
index 0000000..cbaf190
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gdatetime.h
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2009-2010 Christian Hergert <chris@dronelabs.com>
+ * Copyright © 2010 Codethink Limited
+ *
+ * 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.1 of the
+ * licence, or (at your option) any later version.
+ *
+ * This 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ *
+ * Authors: Christian Hergert <chris@dronelabs.com>
+ *          Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+ *          Emmanuele Bassi <ebassi@linux.intel.com>
+ *          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
+
+#include <glib/gtimezone.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_TIME_SPAN_DAY:
+ *
+ * Evaluates to a time span of one day.
+ *
+ * Since: 2.26
+ */
+#define G_TIME_SPAN_DAY                 (G_GINT64_CONSTANT (86400000000))
+
+/**
+ * G_TIME_SPAN_HOUR:
+ *
+ * Evaluates to a time span of one hour.
+ *
+ * Since: 2.26
+ */
+#define G_TIME_SPAN_HOUR                (G_GINT64_CONSTANT (3600000000))
+
+/**
+ * G_TIME_SPAN_MINUTE:
+ *
+ * Evaluates to a time span of one minute.
+ *
+ * Since: 2.26
+ */
+#define G_TIME_SPAN_MINUTE              (G_GINT64_CONSTANT (60000000))
+
+/**
+ * G_TIME_SPAN_SECOND:
+ *
+ * Evaluates to a time span of one second.
+ *
+ * Since: 2.26
+ */
+#define G_TIME_SPAN_SECOND              (G_GINT64_CONSTANT (1000000))
+
+/**
+ * G_TIME_SPAN_MILLISECOND:
+ *
+ * Evaluates to a time span of one millisecond.
+ *
+ * Since: 2.26
+ */
+#define G_TIME_SPAN_MILLISECOND         (G_GINT64_CONSTANT (1000))
+
+/**
+ * GTimeSpan:
+ *
+ * A value representing an interval of time, in microseconds.
+ *
+ * Since: 2.26
+ */
+typedef gint64 GTimeSpan;
+
+/**
+ * GDateTime:
+ *
+ * <structname>GDateTime</structname> is an opaque structure whose members
+ * cannot be accessed directly.
+ *
+ * Since: 2.26
+ */
+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,
+                                                                         gint            day,
+                                                                         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,
+                                                                         gint            hour,
+                                                                         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,
+                                                                         gint            months,
+                                                                         gint            days,
+                                                                         gint            hours,
+                                                                         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;
+
+G_END_DECLS
+
+#endif /* __G_DATE_TIME_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gdir.h b/dist/usr/include/glib-2.0/glib/gdir.h
new file mode 100644
index 0000000..0b7c4af
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gdir.h
@@ -0,0 +1,62 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * gdir.c: Simplified wrapper around the DIRENT functions.
+ *
+ * Copyright 2001 Hans Breuer
+ *
+ * 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_DIR_H__
+#define __G_DIR_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GDir GDir;
+
+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/dist/usr/include/glib-2.0/glib/genviron.h b/dist/usr/include/glib-2.0/glib/genviron.h
new file mode 100644
index 0000000..1fcc225
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/genviron.h
@@ -0,0 +1,80 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+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/dist/usr/include/glib-2.0/glib/gerror.h b/dist/usr/include/glib-2.0/glib/gerror.h
new file mode 100644
index 0000000..6224b87
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gerror.h
@@ -0,0 +1,119 @@
+/* gerror.h - Error reporting system
+ *
+ *  Copyright 2000 Red Hat, Inc.
+ *
+ * The Gnome 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.
+ *
+ * The Gnome 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 the Gnome Library; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#include <stdarg.h>
+
+#include <glib/gquark.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GError:
+ * @domain: error domain, e.g. #G_FILE_ERROR
+ * @code: error code, e.g. %G_FILE_ERROR_NOENT
+ * @message: human-readable informative error message
+ *
+ * The <structname>GError</structname> structure contains
+ * information about an error that has occurred.
+ */
+typedef struct _GError GError;
+
+struct _GError
+{
+  GQuark       domain;
+  gint         code;
+  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) 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);
+
+/* 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,
+                                const gchar   *message);
+
+/* 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,
+                                       ...) G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS
+
+#endif /* __G_ERROR_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gfileutils.h b/dist/usr/include/glib-2.0/glib/gfileutils.h
new file mode 100644
index 0000000..93dbde3
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gfileutils.h
@@ -0,0 +1,208 @@
+/* gfileutils.h - File utility functions
+ *
+ *  Copyright 2000 Red Hat, Inc.
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+#define G_FILE_ERROR g_file_error_quark ()
+
+typedef enum
+{
+  G_FILE_ERROR_EXIST,
+  G_FILE_ERROR_ISDIR,
+  G_FILE_ERROR_ACCES,
+  G_FILE_ERROR_NAMETOOLONG,
+  G_FILE_ERROR_NOENT,
+  G_FILE_ERROR_NOTDIR,
+  G_FILE_ERROR_NXIO,
+  G_FILE_ERROR_NODEV,
+  G_FILE_ERROR_ROFS,
+  G_FILE_ERROR_TXTBSY,
+  G_FILE_ERROR_FAULT,
+  G_FILE_ERROR_LOOP,
+  G_FILE_ERROR_NOSPC,
+  G_FILE_ERROR_NOMEM,
+  G_FILE_ERROR_MFILE,
+  G_FILE_ERROR_NFILE,
+  G_FILE_ERROR_BADF,
+  G_FILE_ERROR_INVAL,
+  G_FILE_ERROR_PIPE,
+  G_FILE_ERROR_AGAIN,
+  G_FILE_ERROR_INTR,
+  G_FILE_ERROR_IO,
+  G_FILE_ERROR_PERM,
+  G_FILE_ERROR_NOSYS,
+  G_FILE_ERROR_FAILED
+} GFileError;
+
+/* For backward-compat reasons, these are synced to an old
+ * anonymous enum in libgnome. But don't use that enum
+ * in new code.
+ */
+typedef enum
+{
+  G_FILE_TEST_IS_REGULAR    = 1 << 0,
+  G_FILE_TEST_IS_SYMLINK    = 1 << 1,
+  G_FILE_TEST_IS_DIR        = 1 << 2,
+  G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
+  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);
+
+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);
+
+/* Wrapper / workalike for mkdtemp() */
+GLIB_AVAILABLE_IN_2_30
+gchar   *g_mkdtemp            (gchar        *tmpl);
+GLIB_AVAILABLE_IN_2_30
+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);
+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);
+
+#ifdef G_OS_WIN32
+
+/* On Win32, the canonical directory separator is the backslash, and
+ * the search path separator is the semicolon. Note that also the
+ * (forward) slash works as directory separator.
+ */
+#define G_DIR_SEPARATOR '\\'
+#define G_DIR_SEPARATOR_S "\\"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
+#define G_SEARCHPATH_SEPARATOR ';'
+#define G_SEARCHPATH_SEPARATOR_S ";"
+
+#else  /* !G_OS_WIN32 */
+
+#define G_DIR_SEPARATOR '/'
+#define G_DIR_SEPARATOR_S "/"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
+#define G_SEARCHPATH_SEPARATOR ':'
+#define G_SEARCHPATH_SEPARATOR_S ":"
+
+#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)
+const gchar *g_basename         (const gchar *file_name);
+#ifndef G_DISABLE_DEPRECATED
+#define g_dirname g_path_get_dirname
+#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/dist/usr/include/glib-2.0/glib/ggettext.h b/dist/usr/include/glib-2.0/glib/ggettext.h
new file mode 100644
index 0000000..e1ef576
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/ggettext.h
@@ -0,0 +1,65 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#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);
+
+G_END_DECLS
+
+#endif /* __G_GETTEXT_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/ghash.h b/dist/usr/include/glib-2.0/glib/ghash.h
new file mode 100644
index 0000000..19054bb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/ghash.h
@@ -0,0 +1,184 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+#include <glib/glist.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GHashTable  GHashTable;
+
+typedef gboolean  (*GHRFunc)  (gpointer  key,
+                               gpointer  value,
+                               gpointer  user_data);
+
+typedef struct _GHashTableIter GHashTableIter;
+
+struct _GHashTableIter
+{
+  /*< private >*/
+  gpointer      dummy1;
+  gpointer      dummy2;
+  gpointer      dummy3;
+  int           dummy4;
+  gboolean      dummy5;
+  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
+#define g_hash_table_freeze(hash_table) ((void)0)
+#define g_hash_table_thaw(hash_table) ((void)0)
+#endif
+
+/* 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;
+
+G_END_DECLS
+
+#endif /* __G_HASH_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/ghmac.h b/dist/usr/include/glib-2.0/glib/ghmac.h
new file mode 100644
index 0000000..94bc427
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/ghmac.h
@@ -0,0 +1,80 @@
+/* ghmac.h - secure data hashing
+ *
+ * Copyright (C) 2011  Stef Walter  <stefw@collabora.co.uk>
+ *
+ * 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_HMAC_H__
+#define __G_HMAC_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gtypes.h>
+#include "gchecksum.h"
+
+G_BEGIN_DECLS
+
+/**
+ * GHmac:
+ *
+ * An opaque structure representing a HMAC operation.
+ * To create a new GHmac, use g_hmac_new(). To free
+ * a GHmac, use g_hmac_unref().
+ *
+ * Since: 2.30
+ */
+typedef struct _GHmac       GHmac;
+
+GLIB_AVAILABLE_IN_2_30
+GHmac *               g_hmac_new                    (GChecksumType  digest_type,
+                                                     const guchar  *key,
+                                                     gsize          key_len);
+GLIB_AVAILABLE_IN_2_30
+GHmac *               g_hmac_copy                   (const GHmac   *hmac);
+GLIB_AVAILABLE_IN_2_30
+GHmac *               g_hmac_ref                    (GHmac         *hmac);
+GLIB_AVAILABLE_IN_2_30
+void                  g_hmac_unref                  (GHmac         *hmac);
+GLIB_AVAILABLE_IN_2_30
+void                  g_hmac_update                 (GHmac         *hmac,
+                                                     const guchar  *data,
+                                                     gssize         length);
+GLIB_AVAILABLE_IN_2_30
+const gchar *         g_hmac_get_string             (GHmac         *hmac);
+GLIB_AVAILABLE_IN_2_30
+void                  g_hmac_get_digest             (GHmac         *hmac,
+                                                     guint8        *buffer,
+                                                     gsize         *digest_len);
+
+GLIB_AVAILABLE_IN_2_30
+gchar                *g_compute_hmac_for_data       (GChecksumType  digest_type,
+                                                     const guchar  *key,
+                                                     gsize          key_len,
+                                                     const guchar  *data,
+                                                     gsize          length);
+GLIB_AVAILABLE_IN_2_30
+gchar                *g_compute_hmac_for_string     (GChecksumType  digest_type,
+                                                     const guchar  *key,
+                                                     gsize          key_len,
+                                                     const gchar   *str,
+                                                     gssize         length);
+
+G_END_DECLS
+
+#endif /* __G_CHECKSUM_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/ghook.h b/dist/usr/include/glib-2.0/glib/ghook.h
new file mode 100644
index 0000000..45e1e27
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/ghook.h
@@ -0,0 +1,204 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gmem.h>
+
+G_BEGIN_DECLS
+
+
+/* --- typedefs --- */
+typedef struct _GHook		GHook;
+typedef struct _GHookList	GHookList;
+
+typedef gint		(*GHookCompareFunc)	(GHook		*new_hook,
+						 GHook		*sibling);
+typedef gboolean	(*GHookFindFunc)	(GHook		*hook,
+						 gpointer	 data);
+typedef void		(*GHookMarshaller)	(GHook		*hook,
+						 gpointer	 marshal_data);
+typedef gboolean	(*GHookCheckMarshaller)	(GHook		*hook,
+						 gpointer	 marshal_data);
+typedef void		(*GHookFunc)		(gpointer	 data);
+typedef gboolean	(*GHookCheckFunc)	(gpointer	 data);
+typedef void		(*GHookFinalizeFunc)	(GHookList      *hook_list,
+						 GHook          *hook);
+typedef enum
+{
+  G_HOOK_FLAG_ACTIVE	    = 1 << 0,
+  G_HOOK_FLAG_IN_CALL	    = 1 << 1,
+  G_HOOK_FLAG_MASK	    = 0x0f
+} GHookFlagMask;
+#define G_HOOK_FLAG_USER_SHIFT	(4)
+
+
+/* --- structures --- */
+struct _GHookList
+{
+  gulong	    seq_id;
+  guint		    hook_size : 16;
+  guint		    is_setup : 1;
+  GHook		   *hooks;
+  gpointer	    dummy3;
+  GHookFinalizeFunc finalize_hook;
+  gpointer	    dummy[2];
+};
+struct _GHook
+{
+  gpointer	 data;
+  GHook		*next;
+  GHook		*prev;
+  guint		 ref_count;
+  gulong	 hook_id;
+  guint		 flags;
+  gpointer	 func;
+  GDestroyNotify destroy;
+};
+
+
+/* --- macros --- */
+#define	G_HOOK(hook)			((GHook*) (hook))
+#define	G_HOOK_FLAGS(hook)		(G_HOOK (hook)->flags)
+#define	G_HOOK_ACTIVE(hook)		((G_HOOK_FLAGS (hook) & \
+					  G_HOOK_FLAG_ACTIVE) != 0)
+#define	G_HOOK_IN_CALL(hook)		((G_HOOK_FLAGS (hook) & \
+					  G_HOOK_FLAG_IN_CALL) != 0)
+#define G_HOOK_IS_VALID(hook)		(G_HOOK (hook)->hook_id != 0 && \
+					 (G_HOOK_FLAGS (hook) & \
+                                          G_HOOK_FLAG_ACTIVE))
+#define G_HOOK_IS_UNLINKED(hook)	(G_HOOK (hook)->next == NULL && \
+					 G_HOOK (hook)->prev == NULL && \
+					 G_HOOK (hook)->hook_id == 0 && \
+					 G_HOOK (hook)->ref_count == 0)
+
+
+/* --- 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 */
+#define	 g_hook_append( hook_list, 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,
+					 gpointer		 marshal_data);
+
+G_END_DECLS
+
+#endif /* __G_HOOK_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/ghostutils.h b/dist/usr/include/glib-2.0/glib/ghostutils.h
new file mode 100644
index 0000000..dfb64e5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/ghostutils.h
@@ -0,0 +1,45 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 2008 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_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
+
+#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
+
+#endif /* __G_HOST_UTILS_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gi18n-lib.h b/dist/usr/include/glib-2.0/glib/gi18n-lib.h
new file mode 100644
index 0000000..ca002a7
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gi18n-lib.h
@@ -0,0 +1,38 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997, 2002  Peter Mattis, 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_I18N_LIB_H__
+#define __G_I18N_LIB_H__
+
+#include <glib.h>
+
+#include <libintl.h>
+#include <string.h>
+
+#ifndef GETTEXT_PACKAGE
+#error You must define GETTEXT_PACKAGE before including gi18n-lib.h.  Did you forget to include config.h?
+#endif
+
+#define  _(String) ((char *) g_dgettext (GETTEXT_PACKAGE, String))
+#define Q_(String) g_dpgettext (GETTEXT_PACKAGE, String, 0)
+#define N_(String) (String)
+#define C_(Context,String) g_dpgettext (GETTEXT_PACKAGE, Context "\004" String, strlen (Context) + 1)
+#define NC_(Context, String) (String)
+
+#endif  /* __G_I18N_LIB_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gi18n.h b/dist/usr/include/glib-2.0/glib/gi18n.h
new file mode 100644
index 0000000..c710046
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gi18n.h
@@ -0,0 +1,34 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997, 2002  Peter Mattis, 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_I18N_H__
+#define __G_I18N_H__
+
+#include <glib.h>
+
+#include <libintl.h>
+#include <string.h>
+
+#define  _(String) gettext (String)
+#define Q_(String) g_dpgettext (NULL, String, 0)
+#define N_(String) (String)
+#define C_(Context,String) g_dpgettext (NULL, Context "\004" String, strlen (Context) + 1)
+#define NC_(Context, String) (String)
+
+#endif  /* __G_I18N_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/giochannel.h b/dist/usr/include/glib-2.0/glib/giochannel.h
new file mode 100644
index 0000000..75fa1ef
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/giochannel.h
@@ -0,0 +1,415 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gconvert.h>
+#include <glib/gmain.h>
+#include <glib/gstring.h>
+
+G_BEGIN_DECLS
+
+/* GIOChannel
+ */
+
+typedef struct _GIOChannel	GIOChannel;
+typedef struct _GIOFuncs        GIOFuncs;
+
+typedef enum
+{
+  G_IO_ERROR_NONE,
+  G_IO_ERROR_AGAIN,
+  G_IO_ERROR_INVAL,
+  G_IO_ERROR_UNKNOWN
+} GIOError;
+
+#define G_IO_CHANNEL_ERROR g_io_channel_error_quark()
+
+typedef enum
+{
+  /* Derived from errno */
+  G_IO_CHANNEL_ERROR_FBIG,
+  G_IO_CHANNEL_ERROR_INVAL,
+  G_IO_CHANNEL_ERROR_IO,
+  G_IO_CHANNEL_ERROR_ISDIR,
+  G_IO_CHANNEL_ERROR_NOSPC,
+  G_IO_CHANNEL_ERROR_NXIO,
+  G_IO_CHANNEL_ERROR_OVERFLOW,
+  G_IO_CHANNEL_ERROR_PIPE,
+  /* Other */
+  G_IO_CHANNEL_ERROR_FAILED
+} GIOChannelError;
+
+typedef enum
+{
+  G_IO_STATUS_ERROR,
+  G_IO_STATUS_NORMAL,
+  G_IO_STATUS_EOF,
+  G_IO_STATUS_AGAIN
+} GIOStatus;
+
+typedef enum
+{
+  G_SEEK_CUR,
+  G_SEEK_SET,
+  G_SEEK_END
+} GSeekType;
+
+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;
+
+struct _GIOChannel
+{
+  /*< private >*/
+  gint ref_count;
+  GIOFuncs *funcs;
+
+  gchar *encoding;
+  GIConv read_cd;
+  GIConv write_cd;
+  gchar *line_term;		/* String which indicates the end of a line of text */
+  guint line_term_len;		/* So we can have null in the line term */
+
+  gsize buf_size;
+  GString *read_buf;		/* Raw data from the channel */
+  GString *encoded_read_buf;    /* Channel data converted to UTF-8 */
+  GString *write_buf;		/* Data ready to be written to the file */
+  gchar partial_write_buf[6];	/* UTF-8 partial characters, null terminated */
+
+  /* Group the flags together, immediately after partial_write_buf, to save memory */
+
+  guint use_buffer     : 1;	/* The encoding uses the buffers */
+  guint do_encode      : 1;	/* The encoding uses the GIConv coverters */
+  guint close_on_unref : 1;	/* Close the channel on final unref */
+  guint is_readable    : 1;	/* Cached GIOFlag */
+  guint is_writeable   : 1;	/* ditto */
+  guint is_seekable    : 1;	/* ditto */
+
+  gpointer reserved1;	
+  gpointer reserved2;	
+};
+
+typedef gboolean (*GIOFunc) (GIOChannel   *source,
+			     GIOCondition  condition,
+			     gpointer      data);
+struct _GIOFuncs
+{
+  GIOStatus (*io_read)           (GIOChannel   *channel, 
+			          gchar        *buf, 
+				  gsize         count,
+				  gsize        *bytes_read,
+				  GError      **err);
+  GIOStatus (*io_write)          (GIOChannel   *channel, 
+				  const gchar  *buf, 
+				  gsize         count,
+				  gsize        *bytes_written,
+				  GError      **err);
+  GIOStatus (*io_seek)           (GIOChannel   *channel, 
+				  gint64        offset, 
+				  GSeekType     type,
+				  GError      **err);
+  GIOStatus  (*io_close)         (GIOChannel   *channel,
+				  GError      **err);
+  GSource*   (*io_create_watch)  (GIOChannel   *channel,
+				  GIOCondition  condition);
+  void       (*io_free)          (GIOChannel   *channel);
+  GIOStatus  (*io_set_flags)     (GIOChannel   *channel,
+                                  GIOFlags      flags,
+				  GError      **err);
+  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_chars)
+GIOError    g_io_channel_read   (GIOChannel    *channel,
+                                 gchar         *buf,
+                                 gsize          count,
+                                 gsize         *bytes_read);
+
+GLIB_DEPRECATED_FOR(g_io_channel_write_chars)
+GIOError  g_io_channel_write    (GIOChannel    *channel,
+                                 const gchar   *buf,
+                                 gsize          count,
+                                 gsize         *bytes_written);
+
+GLIB_DEPRECATED_FOR(g_io_channel_seek_position)
+GIOError  g_io_channel_seek     (GIOChannel    *channel,
+                                 gint64         offset,
+                                 GSeekType      type);
+
+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,
+				 gpointer         user_data);
+
+/* 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);
+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
+ * descriptor or socket.
+ *
+ * On Win32, this can be used either for files opened with the MSVCRT
+ * (the Microsoft run-time C library) _open() or _pipe, including file
+ * descriptors 0, 1 and 2 (corresponding to stdin, stdout and stderr),
+ * or for Winsock SOCKETs. If the parameter is a legal file
+ * descriptor, it is assumed to be such, otherwise it should be a
+ * SOCKET. This relies on SOCKETs and file descriptors not
+ * overlapping. If you want to be certain, call either
+ * g_io_channel_win32_new_fd() or g_io_channel_win32_new_socket()
+ * instead as appropriate.
+ *
+ * The term file descriptor as used in the context of Win32 refers to
+ * the emulated Unix-like file descriptors MSVCRT provides. The native
+ * 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);
+
+
+/* Hook for GClosure / GSource integration. Don't touch */
+GLIB_VAR GSourceFuncs g_io_watch_funcs;
+
+#ifdef G_OS_WIN32
+
+/* You can use this "pseudo file descriptor" in a GPollFD to add
+ * polling for Windows messages. GTK applications should not do that.
+ */
+
+#define G_WIN32_MSG_HANDLE 19981206
+
+/* Use this to get a GPollFD from a GIOChannel, so that you can call
+ * g_io_channel_win32_poll(). After calling this you should only use
+ * g_io_channel_read() to read from the GIOChannel, i.e. never read()
+ * 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);
+
+/* 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_);
+
+/* Create an IO channel for Windows messages for window handle hwnd. */
+#if GLIB_SIZEOF_VOID_P == 8
+/* We use gsize here so that it is still an integer type and not a
+ * 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
+
+/* Create an IO channel for C runtime (emulated Unix-like) file
+ * descriptors. After calling g_io_add_watch() on a IO channel
+ * returned by this function, you shouldn't call read() on the file
+ * descriptor. This is because adding polling for a file descriptor is
+ * implemented on Win32 by starting a thread that sits blocked in a
+ * read() from the file descriptor most of the time. All reads from
+ * 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
+ * a SOCKET. Contrary to IO channels for file descriptors (on *Win32),
+ * 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
+
+#endif /* __G_IOCHANNEL_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gkeyfile.h b/dist/usr/include/glib-2.0/glib/gkeyfile.h
new file mode 100644
index 0000000..eaf0cce
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gkeyfile.h
@@ -0,0 +1,316 @@
+/* gkeyfile.h - desktop entry file parser
+ *
+ *  Copyright 2004 Red Hat, Inc.
+ *
+ *  Ray Strode <halfline@hawaii.rr.com>
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+  G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
+  G_KEY_FILE_ERROR_PARSE,
+  G_KEY_FILE_ERROR_NOT_FOUND,
+  G_KEY_FILE_ERROR_KEY_NOT_FOUND,
+  G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
+  G_KEY_FILE_ERROR_INVALID_VALUE
+} GKeyFileError;
+
+#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;
+
+typedef enum
+{
+  G_KEY_FILE_NONE              = 0,
+  G_KEY_FILE_KEEP_COMMENTS     = 1 << 0,
+  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);
+
+/* Defines for handling freedesktop.org Desktop files */
+#define G_KEY_FILE_DESKTOP_GROUP                "Desktop Entry"
+
+#define G_KEY_FILE_DESKTOP_KEY_TYPE             "Type"
+#define G_KEY_FILE_DESKTOP_KEY_VERSION          "Version"
+#define G_KEY_FILE_DESKTOP_KEY_NAME             "Name"
+#define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME     "GenericName"
+#define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY       "NoDisplay"
+#define G_KEY_FILE_DESKTOP_KEY_COMMENT          "Comment"
+#define G_KEY_FILE_DESKTOP_KEY_ICON             "Icon"
+#define G_KEY_FILE_DESKTOP_KEY_HIDDEN           "Hidden"
+#define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN     "OnlyShowIn"
+#define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN      "NotShowIn"
+#define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC         "TryExec"
+#define G_KEY_FILE_DESKTOP_KEY_EXEC             "Exec"
+#define G_KEY_FILE_DESKTOP_KEY_PATH             "Path"
+#define G_KEY_FILE_DESKTOP_KEY_TERMINAL         "Terminal"
+#define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE        "MimeType"
+#define G_KEY_FILE_DESKTOP_KEY_CATEGORIES       "Categories"
+#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_TYPE_APPLICATION     "Application"
+#define G_KEY_FILE_DESKTOP_TYPE_LINK            "Link"
+#define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY       "Directory"
+
+G_END_DECLS
+
+#endif /* __G_KEY_FILE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/glist.h b/dist/usr/include/glib-2.0/glib/glist.h
new file mode 100644
index 0000000..120e788
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/glist.h
@@ -0,0 +1,154 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gmem.h>
+#include <glib/gnode.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GList GList;
+
+struct _GList
+{
+  gpointer data;
+  GList *next;
+  GList *prev;
+};
+
+/* 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);
+
+
+#define g_list_previous(list)	        ((list) ? (((GList *)(list))->prev) : NULL)
+#define g_list_next(list)	        ((list) ? (((GList *)(list))->next) : NULL)
+
+G_END_DECLS
+
+#endif /* __G_LIST_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gmacros.h b/dist/usr/include/glib-2.0/glib/gmacros.h
new file mode 100644
index 0000000..6149067
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmacros.h
@@ -0,0 +1,347 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+/* This file must not include any other glib header file and must thus
+ * 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
+
+/* We include stddef.h to get the system's definition of NULL
+ */
+#include <stddef.h>
+
+/* Here we provide G_GNUC_EXTENSION as an alias for __extension__,
+ * where this is valid. This allows for warningless compilation of
+ * "long long" types even in the presence of '-ansi -pedantic'. 
+ */
+#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
+#  define G_GNUC_EXTENSION __extension__
+#else
+#  define G_GNUC_EXTENSION
+#endif
+
+/* Provide macros to feature the GCC function attribute.
+ */
+#if    __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+#define G_GNUC_PURE                            \
+  __attribute__((__pure__))
+#define G_GNUC_MALLOC    			\
+  __attribute__((__malloc__))
+#else
+#define G_GNUC_PURE
+#define G_GNUC_MALLOC
+#endif
+
+#if     __GNUC__ >= 4
+#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
+#else
+#define G_GNUC_NULL_TERMINATED
+#endif
+
+#if     (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+#define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
+#define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
+#else
+#define G_GNUC_ALLOC_SIZE(x)
+#define G_GNUC_ALLOC_SIZE2(x,y)
+#endif
+
+#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#define G_GNUC_PRINTF( format_idx, arg_idx )    \
+  __attribute__((__format__ (__printf__, format_idx, arg_idx)))
+#define G_GNUC_SCANF( format_idx, arg_idx )     \
+  __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
+#define G_GNUC_FORMAT( arg_idx )                \
+  __attribute__((__format_arg__ (arg_idx)))
+#define G_GNUC_NORETURN                         \
+  __attribute__((__noreturn__))
+#define G_GNUC_CONST                            \
+  __attribute__((__const__))
+#define G_GNUC_UNUSED                           \
+  __attribute__((__unused__))
+#define G_GNUC_NO_INSTRUMENT			\
+  __attribute__((__no_instrument_function__))
+#else   /* !__GNUC__ */
+#define G_GNUC_PRINTF( format_idx, arg_idx )
+#define G_GNUC_SCANF( format_idx, arg_idx )
+#define G_GNUC_FORMAT( arg_idx )
+#define G_GNUC_NORETURN
+#define G_GNUC_CONST
+#define G_GNUC_UNUSED
+#define G_GNUC_NO_INSTRUMENT
+#endif  /* !__GNUC__ */
+
+#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+#define G_GNUC_DEPRECATED                            \
+  __attribute__((__deprecated__))
+#else
+#define G_GNUC_DEPRECATED
+#endif /* __GNUC__ */
+
+#if    __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#define G_GNUC_DEPRECATED_FOR(f)                        \
+  __attribute__((deprecated("Use " #f " instead")))
+#else
+#define G_GNUC_DEPRECATED_FOR(f)        G_GNUC_DEPRECATED
+#endif /* __GNUC__ */
+
+#if    __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS		\
+  _Pragma ("GCC diagnostic push")			\
+  _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+#define G_GNUC_END_IGNORE_DEPRECATIONS			\
+  _Pragma ("GCC diagnostic pop")
+#else
+#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+#define G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#if     __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+#  define G_GNUC_MAY_ALIAS __attribute__((may_alias))
+#else
+#  define G_GNUC_MAY_ALIAS
+#endif
+
+#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#define G_GNUC_WARN_UNUSED_RESULT 		\
+  __attribute__((warn_unused_result))
+#else
+#define G_GNUC_WARN_UNUSED_RESULT
+#endif /* __GNUC__ */
+
+#ifndef G_DISABLE_DEPRECATED
+/* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with
+ * macros, so we can refer to them as strings unconditionally.
+ * usage not-recommended since gcc-3.0
+ */
+#if defined (__GNUC__) && (__GNUC__ < 3)
+#define G_GNUC_FUNCTION         __FUNCTION__
+#define G_GNUC_PRETTY_FUNCTION  __PRETTY_FUNCTION__
+#else   /* !__GNUC__ */
+#define G_GNUC_FUNCTION         ""
+#define G_GNUC_PRETTY_FUNCTION  ""
+#endif  /* !__GNUC__ */
+#endif  /* !G_DISABLE_DEPRECATED */
+
+#define G_STRINGIFY(macro_or_string)	G_STRINGIFY_ARG (macro_or_string)
+#define	G_STRINGIFY_ARG(contents)	#contents
+
+#ifndef __GI_SCANNER__ /* The static assert macro really confuses the introspection parser */
+#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] G_GNUC_UNUSED
+#else
+#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
+
+/* Provide a string identifying the current code position */
+#if defined(__GNUC__) && (__GNUC__ < 3) && !defined(__cplusplus)
+#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__) ":" __PRETTY_FUNCTION__ "()"
+#else
+#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+
+/* Provide a string identifying the current function, non-concatenatable */
+#if defined (__GNUC__)
+#  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)
+#  define G_STRFUNC     ((const char*) (__FUNCTION__))
+#else
+#  define G_STRFUNC     ((const char*) ("???"))
+#endif
+
+/* Guard C code in headers, while including them from C++ */
+#ifdef  __cplusplus
+# define G_BEGIN_DECLS  extern "C" {
+# define G_END_DECLS    }
+#else
+# define G_BEGIN_DECLS
+# define G_END_DECLS
+#endif
+
+/* Provide definitions for some commonly used macros.
+ *  Some of them are only provided if they haven't already
+ *  been defined. It is assumed that if they are already
+ *  defined then the current definition is correct.
+ */
+#ifndef NULL
+#  ifdef __cplusplus
+#    define NULL        (0L)
+#  else /* !__cplusplus */
+#    define NULL        ((void*) 0)
+#  endif /* !__cplusplus */
+#endif
+
+#ifndef	FALSE
+#define	FALSE	(0)
+#endif
+
+#ifndef	TRUE
+#define	TRUE	(!FALSE)
+#endif
+
+#undef	MAX
+#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
+
+#undef	MIN
+#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
+
+#undef	ABS
+#define ABS(a)	   (((a) < 0) ? -(a) : (a))
+
+#undef	CLAMP
+#define CLAMP(x, low, high)  (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
+
+/* Count the number of elements in an array. The array must be defined
+ * as such; using this with a dynamically allocated array will give
+ * incorrect results.
+ */
+#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
+
+/* Macros by analogy to GINT_TO_POINTER, GPOINTER_TO_INT
+ */
+#define GPOINTER_TO_SIZE(p)	((gsize) (p))
+#define GSIZE_TO_POINTER(s)	((gpointer) (gsize) (s))
+
+/* Provide convenience macros for handling structure
+ * fields through their offsets.
+ */
+
+#if defined(__GNUC__)  && __GNUC__ >= 4
+#  define G_STRUCT_OFFSET(struct_type, member) \
+      ((glong) offsetof (struct_type, member))
+#else
+#  define G_STRUCT_OFFSET(struct_type, member)	\
+      ((glong) ((guint8*) &((struct_type*) 0)->member))
+#endif
+
+#define G_STRUCT_MEMBER_P(struct_p, struct_offset)   \
+    ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
+#define G_STRUCT_MEMBER(member_type, struct_p, struct_offset)   \
+    (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
+
+/* Provide simple macro statement wrappers:
+ *   G_STMT_START { statements; } G_STMT_END;
+ * This can be used as a single statement, like:
+ *   if (x) G_STMT_START { ... } G_STMT_END; else ...
+ * This intentionally does not use compiler extensions like GCC's '({...})' to
+ * avoid portability issue or side effects when compiled with different compilers.
+ */
+#if !(defined (G_STMT_START) && defined (G_STMT_END))
+#  define G_STMT_START  do
+#  define G_STMT_END    while (0)
+#endif
+
+/* Deprecated -- do not use. */
+#ifndef G_DISABLE_DEPRECATED
+#ifdef G_DISABLE_CONST_RETURNS
+#define G_CONST_RETURN
+#else
+#define G_CONST_RETURN const
+#endif
+#endif
+
+/*
+ * The G_LIKELY and G_UNLIKELY macros let the programmer give hints to 
+ * the compiler about the expected result of an expression. Some compilers
+ * can use this information for optimizations.
+ *
+ * The _G_BOOLEAN_EXPR macro is intended to trigger a gcc warning when
+ * putting assignments in g_return_if_fail ().  
+ */
+#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
+#define _G_BOOLEAN_EXPR(expr)                   \
+ G_GNUC_EXTENSION ({                            \
+   int _g_boolean_var_;                         \
+   if (expr)                                    \
+      _g_boolean_var_ = 1;                      \
+   else                                         \
+      _g_boolean_var_ = 0;                      \
+   _g_boolean_var_;                             \
+})
+#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
+#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
+#else
+#define G_LIKELY(expr) (expr)
+#define G_UNLIKELY(expr) (expr)
+#endif
+
+#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+#define G_DEPRECATED __attribute__((__deprecated__))
+#elif defined(_MSC_VER) && (_MSC_VER >= 1300)
+#define G_DEPRECATED __declspec(deprecated)
+#else
+#define G_DEPRECATED
+#endif
+
+#if    __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
+#elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320)
+#define G_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead"))
+#else
+#define G_DEPRECATED_FOR(f) G_DEPRECATED
+#endif
+
+#if    __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#define G_UNAVAILABLE(maj,min) __attribute__((deprecated("Not available before " #maj "." #min)))
+#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) G_DEPRECATED
+#endif
+
+#ifndef _GLIB_EXTERN
+#define _GLIB_EXTERN extern
+#endif
+
+/* These macros are used to mark deprecated functions in GLib headers,
+ * and thus have to be exposed in installed headers. But please
+ * do *not* use them in other projects. Instead, use G_DEPRECATED
+ * or define your own wrappers around it.
+ */
+
+#ifdef GLIB_DISABLE_DEPRECATION_WARNINGS
+#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 _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/dist/usr/include/glib-2.0/glib/gmain.h b/dist/usr/include/glib-2.0/glib/gmain.h
new file mode 100644
index 0000000..47b4ecf
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmain.h
@@ -0,0 +1,611 @@
+/* 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_MAIN_H__
+#define __G_MAIN_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#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:
+ *
+ * The <structname>GMainContext</structname> struct is an opaque data
+ * type representing a set of sources to be handled in a main loop.
+ */
+typedef struct _GMainContext            GMainContext;
+
+/**
+ * GMainLoop:
+ *
+ * The <structname>GMainLoop</structname> struct is an opaque data type
+ * representing the main event loop of a GLib or GTK+ application.
+ */
+typedef struct _GMainLoop               GMainLoop;
+
+/**
+ * GSource:
+ *
+ * The <structname>GSource</structname> struct is an opaque data type
+ * representing an event source.
+ */
+typedef struct _GSource                 GSource;
+typedef struct _GSourcePrivate          GSourcePrivate;
+
+/**
+ * GSourceCallbackFuncs:
+ * @ref: Called when a reference is added to the callback object
+ * @unref: Called when a reference to the callback object is dropped
+ * @get: Called to extract the callback function and data from the
+ *     callback object.
+
+ * The <structname>GSourceCallbackFuncs</structname> struct contains
+ * functions for managing callback objects.
+ */
+typedef struct _GSourceCallbackFuncs    GSourceCallbackFuncs;
+
+/**
+ * GSourceFuncs:
+ * @prepare: Called before all the file descriptors are polled. If the
+ *     source can determine that it is ready here (without waiting for the
+ *     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.  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.  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
+ *     function may be %NULL if the source was never connected to a callback
+ *     using g_source_set_callback(). The @dispatch function should call the
+ *     callback function with @user_data and whatever additional parameters
+ *     are needed for this type of event source.
+ * @finalize: Called when the source is finalized.
+ *
+ * The <structname>GSourceFuncs</structname> struct contains a table of
+ * functions used to handle event sources in a generic manner.
+ *
+ * For idle sources, the prepare and check functions always return %TRUE
+ * to indicate that the source is always ready to be processed. The prepare
+ * function also returns a timeout value of 0 to ensure that the poll() call
+ * doesn't block (since that would be time wasted which could have been spent
+ * running the idle function).
+ *
+ * For timeout sources, the prepare and check functions both return %TRUE
+ * if the timeout interval has expired. The prepare function also returns
+ * a timeout value to ensure that the poll() call doesn't block too long
+ * and miss the next timeout.
+ *
+ * For file descriptor sources, the prepare function typically returns %FALSE,
+ * since it must wait until poll() has been called before it knows whether
+ * any events need to be processed. It sets the returned timeout to -1 to
+ * indicate that it doesn't mind how long the poll() call blocks. In the
+ * check function, it tests the results of the poll() call to see if the
+ * required condition has been met, and returns %TRUE if so.
+ */
+typedef struct _GSourceFuncs            GSourceFuncs;
+
+/**
+ * GPid:
+ *
+ * A type which is used to hold a process identification.
+ *
+ * On UNIX, processes are identified by a process id (an integer),
+ * while Windows uses process handles (which are pointers).
+ *
+ * GPid is used in GLib only for descendant processes spawned with
+ * the g_spawn functions.
+ */
+
+/**
+ * GSourceFunc:
+ * @user_data: data passed to the function, set when the source was
+ *     created with one of the above functions
+ *
+ * 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
+ */
+typedef gboolean (*GSourceFunc)       (gpointer user_data);
+
+/**
+ * GChildWatchFunc:
+ * @pid: the process id of the child process
+ * @status: Status information about the child process, encoded
+ *     in a platform-specific manner
+ * @user_data: user data passed to g_child_watch_add()
+ *
+ * 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,
+                                       gpointer user_data);
+struct _GSource
+{
+  /*< private >*/
+  gpointer callback_data;
+  GSourceCallbackFuncs *callback_funcs;
+
+  const GSourceFuncs *source_funcs;
+  guint ref_count;
+
+  GMainContext *context;
+
+  gint priority;
+  guint flags;
+  guint source_id;
+
+  GSList *poll_fds;
+  
+  GSource *prev;
+  GSource *next;
+
+  char    *name;
+
+  GSourcePrivate *priv;
+};
+
+struct _GSourceCallbackFuncs
+{
+  void (*ref)   (gpointer     cb_data);
+  void (*unref) (gpointer     cb_data);
+  void (*get)   (gpointer     cb_data,
+                 GSource     *source, 
+                 GSourceFunc *func,
+                 gpointer    *data);
+};
+
+/**
+ * GSourceDummyMarshal:
+ *
+ * This is just a placeholder for #GClosureMarshal,
+ * which cannot be used here for dependency reasons.
+ */
+typedef void (*GSourceDummyMarshal) (void);
+
+struct _GSourceFuncs
+{
+  gboolean (*prepare)  (GSource    *source,
+                        gint       *timeout_);
+  gboolean (*check)    (GSource    *source);
+  gboolean (*dispatch) (GSource    *source,
+                        GSourceFunc callback,
+                        gpointer    user_data);
+  void     (*finalize) (GSource    *source); /* Can be NULL */
+
+  /*< private >*/
+  /* For use by g_source_set_closure */
+  GSourceFunc     closure_callback;        
+  GSourceDummyMarshal closure_marshal; /* Really is of type GClosureMarshal */
+};
+
+/* Standard priorities */
+
+/**
+ * G_PRIORITY_HIGH:
+ *
+ * Use this for high priority event sources.
+ *
+ * It is not used within GLib or GTK+.
+ */
+#define G_PRIORITY_HIGH            -100
+
+/**
+ * G_PRIORITY_DEFAULT:
+ *
+ * Use this for default priority event sources.
+ *
+ * In GLib this priority is used when adding timeout functions
+ * with g_timeout_add(). In GDK this priority is used for events
+ * from the X server.
+ */
+#define G_PRIORITY_DEFAULT          0
+
+/**
+ * G_PRIORITY_HIGH_IDLE:
+ *
+ * Use this for high priority idle functions.
+ *
+ * GTK+ uses #G_PRIORITY_HIGH_IDLE + 10 for resizing operations,
+ * and #G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is
+ * done to ensure that any pending resizes are processed before any
+ * pending redraws, so that widgets are not redrawn twice unnecessarily.)
+ */
+#define G_PRIORITY_HIGH_IDLE        100
+
+/**
+ * G_PRIORITY_DEFAULT_IDLE:
+ *
+ * Use this for default priority idle functions.
+ *
+ * In GLib this priority is used when adding idle functions with
+ * g_idle_add().
+ */
+#define G_PRIORITY_DEFAULT_IDLE     200
+
+/**
+ * G_PRIORITY_LOW:
+ *
+ * Use this for very low priority background tasks.
+ *
+ * It is not used within GLib or GTK+.
+ */
+#define G_PRIORITY_LOW              300
+
+/**
+ * G_SOURCE_REMOVE:
+ *
+ * Use this macro as the return value of a #GSourceFunc to remove
+ * the #GSource from the main loop.
+ *
+ * Since: 2.32
+ */
+#define G_SOURCE_REMOVE         FALSE
+
+/**
+ * G_SOURCE_CONTINUE:
+ *
+ * Use this macro as the return value of a #GSourceFunc to leave
+ * the #GSource in the main loop.
+ *
+ * Since: 2.32
+ */
+#define G_SOURCE_CONTINUE       TRUE
+
+/* 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);
+
+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,
+                                  GClosure       *closure);
+ */
+
+/* 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);
+
+/* Hook for GClosure / GSource integration. Don't touch */
+GLIB_VAR GSourceFuncs g_timeout_funcs;
+GLIB_VAR GSourceFuncs g_child_watch_funcs;
+GLIB_VAR GSourceFuncs g_idle_funcs;
+
+G_END_DECLS
+
+#endif /* __G_MAIN_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gmappedfile.h b/dist/usr/include/glib-2.0/glib/gmappedfile.h
new file mode 100644
index 0000000..a1c7ac7
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmappedfile.h
@@ -0,0 +1,60 @@
+/* GLIB - Library of useful routines for C programming
+ * gmappedfile.h: Simplified wrapper around the mmap function
+ *
+ * Copyright 2005 Matthias Clasen
+ *
+ * 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_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
+
+#include <glib/gbytes.h>
+#include <glib/gerror.h>
+
+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)
+void         g_mapped_file_free         (GMappedFile  *file);
+
+G_END_DECLS
+
+#endif /* __G_MAPPED_FILE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gmarkup.h b/dist/usr/include/glib-2.0/glib/gmarkup.h
new file mode 100644
index 0000000..eb7214d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmarkup.h
@@ -0,0 +1,257 @@
+/* gmarkup.h - Simple XML-like string parser/writer
+ *
+ *  Copyright 2000 Red Hat, Inc.
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#include <stdarg.h>
+
+#include <glib/gerror.h>
+#include <glib/gslist.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GMarkupError:
+ * @G_MARKUP_ERROR_BAD_UTF8: text being parsed was not valid UTF-8
+ * @G_MARKUP_ERROR_EMPTY: document contained nothing, or only whitespace
+ * @G_MARKUP_ERROR_PARSE: document was ill-formed
+ * @G_MARKUP_ERROR_UNKNOWN_ELEMENT: error should be set by #GMarkupParser
+ *     functions; element wasn't known
+ * @G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE: error should be set by #GMarkupParser
+ *     functions; attribute wasn't known
+ * @G_MARKUP_ERROR_INVALID_CONTENT: error should be set by #GMarkupParser
+ *     functions; content was invalid
+ * @G_MARKUP_ERROR_MISSING_ATTRIBUTE: error should be set by #GMarkupParser
+ *     functions; a required attribute was missing
+ *
+ * Error codes returned by markup parsing.
+ */
+typedef enum
+{
+  G_MARKUP_ERROR_BAD_UTF8,
+  G_MARKUP_ERROR_EMPTY,
+  G_MARKUP_ERROR_PARSE,
+  /* The following are primarily intended for specific GMarkupParser
+   * implementations to set.
+   */
+  G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+  G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
+  G_MARKUP_ERROR_INVALID_CONTENT,
+  G_MARKUP_ERROR_MISSING_ATTRIBUTE
+} GMarkupError;
+
+/**
+ * G_MARKUP_ERROR:
+ *
+ * Error domain for markup parsing.
+ * Errors in this domain will be from the #GMarkupError enumeration.
+ * See #GError for information on error domains.
+ */
+#define G_MARKUP_ERROR g_markup_error_quark ()
+
+GLIB_AVAILABLE_IN_ALL
+GQuark g_markup_error_quark (void);
+
+/**
+ * GMarkupParseFlags:
+ * @G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG: flag you should not use
+ * @G_MARKUP_TREAT_CDATA_AS_TEXT: When this flag is set, CDATA marked
+ *     sections are not passed literally to the @passthrough function of
+ *     the parser. Instead, the content of the section (without the
+ *     <literal>&lt;![CDATA[</literal> and <literal>]]&gt;</literal>) is
+ *     passed to the @text function. This flag was added in GLib 2.12
+ * @G_MARKUP_PREFIX_ERROR_POSITION: Normally errors caught by GMarkup
+ *     itself have line/column information prefixed to them to let the
+ *     caller know the location of the error. When this flag is set the
+ *     location information is also prefixed to errors generated by the
+ *     #GMarkupParser implementation functions
+ *
+ * Flags that affect the behaviour of the parser.
+ */
+typedef enum
+{
+  G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0,
+  G_MARKUP_TREAT_CDATA_AS_TEXT              = 1 << 1,
+  G_MARKUP_PREFIX_ERROR_POSITION            = 1 << 2
+} GMarkupParseFlags;
+
+/**
+ * GMarkupParseContext:
+ *
+ * A parse context is used to parse a stream of bytes that
+ * you expect to contain marked-up text.
+ *
+ * See g_markup_parse_context_new(), #GMarkupParser, and so
+ * on for more details.
+ */
+typedef struct _GMarkupParseContext GMarkupParseContext;
+typedef struct _GMarkupParser GMarkupParser;
+
+/**
+ * GMarkupParser:
+ * @start_element: Callback to invoke when the opening tag of an element
+ *     is seen.
+ * @end_element: Callback to invoke when the closing tag of an element
+ *     is seen. Note that this is also called for empty tags like
+ *     <literal>&lt;empty/&gt;</literal>.
+ * @text: Callback to invoke when some text is seen (text is always
+ *     inside an element). Note that the text of an element may be spread
+ *     over multiple calls of this function. If the
+ *     %G_MARKUP_TREAT_CDATA_AS_TEXT flag is set, this function is also
+ *     called for the content of CDATA marked sections.
+ * @passthrough: Callback to invoke for comments, processing instructions
+ *     and doctype declarations; if you're re-writing the parsed document,
+ *     write the passthrough text back out in the same position. If the
+ *     %G_MARKUP_TREAT_CDATA_AS_TEXT flag is not set, this function is also
+ *     called for CDATA marked sections.
+ * @error: Callback to invoke when an error occurs.
+ *
+ * Any of the fields in #GMarkupParser can be %NULL, in which case they
+ * will be ignored. Except for the @error function, any of these callbacks
+ * can set an error; in particular the %G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ * %G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, and %G_MARKUP_ERROR_INVALID_CONTENT
+ * errors are intended to be set from these callbacks. If you set an error
+ * from a callback, g_markup_parse_context_parse() will report that error
+ * back to its caller.
+ */
+struct _GMarkupParser
+{
+  /* Called for open tags <foo bar="baz"> */
+  void (*start_element)  (GMarkupParseContext *context,
+                          const gchar         *element_name,
+                          const gchar        **attribute_names,
+                          const gchar        **attribute_values,
+                          gpointer             user_data,
+                          GError             **error);
+
+  /* Called for close tags </foo> */
+  void (*end_element)    (GMarkupParseContext *context,
+                          const gchar         *element_name,
+                          gpointer             user_data,
+                          GError             **error);
+
+  /* Called for character data */
+  /* text is not nul-terminated */
+  void (*text)           (GMarkupParseContext *context,
+                          const gchar         *text,
+                          gsize                text_len,
+                          gpointer             user_data,
+                          GError             **error);
+
+  /* Called for strings that should be re-saved verbatim in this same
+   * position, but are not otherwise interpretable.  At the moment
+   * this includes comments and processing instructions.
+   */
+  /* text is not nul-terminated. */
+  void (*passthrough)    (GMarkupParseContext *context,
+                          const gchar         *passthrough_text,
+                          gsize                text_len,
+                          gpointer             user_data,
+                          GError             **error);
+
+  /* Called on error, including one set by other
+   * methods in the vtable. The GError should not be freed.
+   */
+  void (*error)          (GMarkupParseContext *context,
+                          GError              *error,
+                          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) G_GNUC_PRINTF(1, 0);
+
+typedef enum
+{
+  G_MARKUP_COLLECT_INVALID,
+  G_MARKUP_COLLECT_STRING,
+  G_MARKUP_COLLECT_STRDUP,
+  G_MARKUP_COLLECT_BOOLEAN,
+  G_MARKUP_COLLECT_TRISTATE,
+
+  G_MARKUP_COLLECT_OPTIONAL = (1 << 16)
+} GMarkupCollectType;
+
+
+/* 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,
+                                        GError             **error,
+                                        GMarkupCollectType   first_type,
+                                        const gchar         *first_attr,
+                                        ...);
+
+G_END_DECLS
+
+#endif /* __G_MARKUP_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gmem.h b/dist/usr/include/glib-2.0/glib/gmem.h
new file mode 100644
index 0000000..8795b67
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmem.h
@@ -0,0 +1,301 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GMemVTable:
+ * @malloc: function to use for allocating memory.
+ * @realloc: function to use for reallocating memory.
+ * @free: function to use to free memory.
+ * @calloc: function to use for allocating zero-filled memory.
+ * @try_malloc: function to use for allocating memory without a default error handler.
+ * @try_realloc: function to use for reallocating memory without a default error handler.
+ * 
+ * A set of functions used to perform memory allocation. The same #GMemVTable must
+ * be used for all allocations in the same program; a call to g_mem_set_vtable(),
+ * if it exists, should be prior to any use of GLib.
+ */
+typedef struct _GMemVTable GMemVTable;
+
+
+#if GLIB_SIZEOF_VOID_P > GLIB_SIZEOF_LONG
+/**
+ * G_MEM_ALIGN:
+ *
+ * Indicates the number of bytes to which memory will be aligned on the
+ * current platform.
+ */
+#  define G_MEM_ALIGN	GLIB_SIZEOF_VOID_P
+#else	/* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */
+#  define G_MEM_ALIGN	GLIB_SIZEOF_LONG
+#endif	/* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */
+
+
+/* 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.
+ */
+#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
+#  define _G_NEW(struct_type, n_structs, func) \
+	(struct_type *) (G_GNUC_EXTENSION ({			\
+	  gsize __n = (gsize) (n_structs);			\
+	  gsize __s = sizeof (struct_type);			\
+	  gpointer __p;						\
+	  if (__s == 1)						\
+	    __p = g_##func (__n);				\
+	  else if (__builtin_constant_p (__n) &&		\
+	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
+	    __p = g_##func (__n * __s);				\
+	  else							\
+	    __p = g_##func##_n (__n, __s);			\
+	  __p;							\
+	}))
+#  define _G_RENEW(struct_type, mem, n_structs, func) \
+	(struct_type *) (G_GNUC_EXTENSION ({			\
+	  gsize __n = (gsize) (n_structs);			\
+	  gsize __s = sizeof (struct_type);			\
+	  gpointer __p = (gpointer) (mem);			\
+	  if (__s == 1)						\
+	    __p = g_##func (__p, __n);				\
+	  else if (__builtin_constant_p (__n) &&		\
+	           (__s == 0 || __n <= G_MAXSIZE / __s))	\
+	    __p = g_##func (__p, __n * __s);			\
+	  else							\
+	    __p = g_##func##_n (__p, __n, __s);			\
+	  __p;							\
+	}))
+
+#else
+
+/* Unoptimised version: always call the _n() function. */
+
+#define _G_NEW(struct_type, n_structs, func) \
+        ((struct_type *) g_##func##_n ((n_structs), sizeof (struct_type)))
+#define _G_RENEW(struct_type, mem, n_structs, func) \
+        ((struct_type *) g_##func##_n (mem, (n_structs), sizeof (struct_type)))
+
+#endif
+
+/**
+ * g_new:
+ * @struct_type: the type of the elements to allocate
+ * @n_structs: the number of elements to allocate
+ * 
+ * Allocates @n_structs elements of type @struct_type.
+ * The returned pointer is cast to a pointer to the given type.
+ * If @n_structs is 0 it returns %NULL.
+ * Care is taken to avoid overflow when calculating the size of the allocated block.
+ * 
+ * Since the returned pointer is already casted to the right type,
+ * it is normally unnecessary to cast it explicitly, and doing
+ * so might hide memory allocation errors.
+ * 
+ * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type
+ */
+#define g_new(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc)
+/**
+ * g_new0:
+ * @struct_type: the type of the elements to allocate.
+ * @n_structs: the number of elements to allocate.
+ * 
+ * Allocates @n_structs elements of type @struct_type, initialized to 0's.
+ * The returned pointer is cast to a pointer to the given type.
+ * If @n_structs is 0 it returns %NULL.
+ * Care is taken to avoid overflow when calculating the size of the allocated block.
+ * 
+ * Since the returned pointer is already casted to the right type,
+ * it is normally unnecessary to cast it explicitly, and doing
+ * so might hide memory allocation errors.
+ * 
+ * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type.
+ */
+#define g_new0(struct_type, n_structs)			_G_NEW (struct_type, n_structs, malloc0)
+/**
+ * g_renew:
+ * @struct_type: the type of the elements to allocate
+ * @mem: the currently allocated memory
+ * @n_structs: the number of elements to allocate
+ * 
+ * Reallocates the memory pointed to by @mem, so that it now has space for
+ * @n_structs elements of type @struct_type. It returns the new address of
+ * the memory, which may have been moved.
+ * Care is taken to avoid overflow when calculating the size of the allocated block.
+ * 
+ * Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type
+ */
+#define g_renew(struct_type, mem, n_structs)		_G_RENEW (struct_type, mem, n_structs, realloc)
+/**
+ * g_try_new:
+ * @struct_type: the type of the elements to allocate
+ * @n_structs: the number of elements to allocate
+ * 
+ * Attempts to allocate @n_structs elements of type @struct_type, and returns
+ * %NULL on failure. Contrast with g_new(), which aborts the program on failure.
+ * The returned pointer is cast to a pointer to the given type.
+ * The function returns %NULL when @n_structs is 0 of if an overflow occurs.
+ * 
+ * Since: 2.8
+ * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type
+ */
+#define g_try_new(struct_type, n_structs)		_G_NEW (struct_type, n_structs, try_malloc)
+/**
+ * g_try_new0:
+ * @struct_type: the type of the elements to allocate
+ * @n_structs: the number of elements to allocate
+ * 
+ * Attempts to allocate @n_structs elements of type @struct_type, initialized
+ * to 0's, and returns %NULL on failure. Contrast with g_new0(), which aborts
+ * the program on failure.
+ * The returned pointer is cast to a pointer to the given type.
+ * The function returns %NULL when @n_structs is 0 of if an overflow occurs.
+ * 
+ * Since: 2.8
+ * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type
+ */
+#define g_try_new0(struct_type, n_structs)		_G_NEW (struct_type, n_structs, try_malloc0)
+/**
+ * g_try_renew:
+ * @struct_type: the type of the elements to allocate
+ * @mem: the currently allocated memory
+ * @n_structs: the number of elements to allocate
+ * 
+ * Attempts to reallocate the memory pointed to by @mem, so that it now has
+ * space for @n_structs elements of type @struct_type, and returns %NULL on
+ * failure. Contrast with g_renew(), which aborts the program on failure.
+ * It returns the new address of the memory, which may have been moved.
+ * The function returns %NULL if an overflow occurs.
+ * 
+ * Since: 2.8
+ * Returns: a pointer to the new allocated memory, cast to a pointer to @struct_type
+ */
+#define g_try_renew(struct_type, mem, n_structs)	_G_RENEW (struct_type, mem, n_structs, try_realloc)
+
+
+/* Memory allocation virtualization for debugging purposes
+ * g_mem_set_vtable() has to be the very first GLib function called
+ * if being used
+ */
+struct _GMemVTable {
+  gpointer (*malloc)      (gsize    n_bytes);
+  gpointer (*realloc)     (gpointer mem,
+			   gsize    n_bytes);
+  void     (*free)        (gpointer mem);
+  /* optional; set to NULL if not used ! */
+  gpointer (*calloc)      (gsize    n_blocks,
+			   gsize    n_block_bytes);
+  gpointer (*try_malloc)  (gsize    n_bytes);
+  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;
+
+/* 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
+
+#endif /* __G_MEM_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gmessages.h b/dist/usr/include/glib-2.0/glib/gmessages.h
new file mode 100644
index 0000000..8092078
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gmessages.h
@@ -0,0 +1,419 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <stdarg.h>
+#include <glib/gtypes.h>
+#include <glib/gmacros.h>
+
+/* Suppress warnings when GCC is in -pedantic mode and not -std=c99
+ */
+#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
+#pragma GCC system_header
+#endif
+
+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) G_GNUC_PRINTF(1, 0);
+
+/* Log level shift offset for user defined
+ * log levels (0-7 are used by GLib).
+ */
+#define G_LOG_LEVEL_USER_SHIFT  (8)
+
+/* Glib log levels and flags.
+ */
+typedef enum
+{
+  /* log flags */
+  G_LOG_FLAG_RECURSION          = 1 << 0,
+  G_LOG_FLAG_FATAL              = 1 << 1,
+
+  /* GLib log levels */
+  G_LOG_LEVEL_ERROR             = 1 << 2,       /* always fatal */
+  G_LOG_LEVEL_CRITICAL          = 1 << 3,
+  G_LOG_LEVEL_WARNING           = 1 << 4,
+  G_LOG_LEVEL_MESSAGE           = 1 << 5,
+  G_LOG_LEVEL_INFO              = 1 << 6,
+  G_LOG_LEVEL_DEBUG             = 1 << 7,
+
+  G_LOG_LEVEL_MASK              = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
+} GLogLevelFlags;
+
+/* GLib log levels that are considered fatal by default */
+#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
+
+typedef void            (*GLogFunc)             (const gchar   *log_domain,
+                                                 GLogLevelFlags log_level,
+                                                 const gchar   *message,
+                                                 gpointer       user_data);
+
+/* 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) 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 */
+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);
+GLIB_AVAILABLE_IN_ALL
+void g_warn_message           (const char     *domain,
+                               const char     *file,
+                               int             line,
+                               const char     *func,
+                               const char     *warnexpr);
+GLIB_DEPRECATED
+void g_assert_warning         (const char *log_domain,
+			       const char *file,
+			       const int   line,
+		               const char *pretty_function,
+		               const char *expression) G_GNUC_NORETURN;
+
+
+#ifndef G_LOG_DOMAIN
+#define G_LOG_DOMAIN    ((gchar*) 0)
+#endif  /* G_LOG_DOMAIN */
+#ifdef G_HAVE_ISO_VARARGS
+/* for(;;) ; so that GCC knows that control doesn't go past g_error().
+ * Put space before ending semicolon to avoid C++ build warnings.
+ */
+#define g_error(...)  G_STMT_START {                 \
+                        g_log (G_LOG_DOMAIN,         \
+                               G_LOG_LEVEL_ERROR,    \
+                               __VA_ARGS__);         \
+                        for (;;) ;                   \
+                      } G_STMT_END
+                        
+#define g_message(...)  g_log (G_LOG_DOMAIN,         \
+                               G_LOG_LEVEL_MESSAGE,  \
+                               __VA_ARGS__)
+#define g_critical(...) g_log (G_LOG_DOMAIN,         \
+                               G_LOG_LEVEL_CRITICAL, \
+                               __VA_ARGS__)
+#define g_warning(...)  g_log (G_LOG_DOMAIN,         \
+                               G_LOG_LEVEL_WARNING,  \
+                               __VA_ARGS__)
+#define g_debug(...)    g_log (G_LOG_DOMAIN,         \
+                               G_LOG_LEVEL_DEBUG,    \
+                               __VA_ARGS__)
+#elif defined(G_HAVE_GNUC_VARARGS)
+#define g_error(format...)    G_STMT_START {                 \
+                                g_log (G_LOG_DOMAIN,         \
+                                       G_LOG_LEVEL_ERROR,    \
+                                       format);              \
+                                for (;;) ;                   \
+                              } G_STMT_END
+                              
+#define g_message(format...)    g_log (G_LOG_DOMAIN,         \
+                                       G_LOG_LEVEL_MESSAGE,  \
+                                       format)
+#define g_critical(format...)   g_log (G_LOG_DOMAIN,         \
+                                       G_LOG_LEVEL_CRITICAL, \
+                                       format)
+#define g_warning(format...)    g_log (G_LOG_DOMAIN,         \
+                                       G_LOG_LEVEL_WARNING,  \
+                                       format)
+#define g_debug(format...)      g_log (G_LOG_DOMAIN,         \
+                                       G_LOG_LEVEL_DEBUG,    \
+                                       format)
+#else   /* no varargs macros */
+static void
+g_error (const gchar *format,
+         ...)
+{
+  va_list args;
+  va_start (args, format);
+  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
+  va_end (args);
+
+  for(;;) ;
+}
+static void
+g_message (const gchar *format,
+           ...)
+{
+  va_list args;
+  va_start (args, format);
+  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args);
+  va_end (args);
+}
+static void
+g_critical (const gchar *format,
+            ...)
+{
+  va_list args;
+  va_start (args, format);
+  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format, args);
+  va_end (args);
+}
+static void
+g_warning (const gchar *format,
+           ...)
+{
+  va_list args;
+  va_start (args, format);
+  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args);
+  va_end (args);
+}
+static void
+g_debug (const gchar *format,
+         ...)
+{
+  va_list args;
+  va_start (args, format);
+  g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args);
+  va_end (args);
+}
+#endif  /* !__GNUC__ */
+
+/**
+ * GPrintFunc:
+ * @string: the message to output
+ *
+ * Specifies the type of the print handler functions.
+ * 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);
+
+/**
+ * g_warn_if_reached:
+ *
+ * Logs a critical warning.
+ *
+ * Since: 2.16
+ */
+#define g_warn_if_reached() \
+  do { \
+    g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); \
+  } while (0)
+
+/**
+ * g_warn_if_fail:
+ * @expr: the expression to check
+ *
+ * Logs a warning if the expression is not true.
+ *
+ * Since: 2.16
+ */
+#define g_warn_if_fail(expr) \
+  do { \
+    if G_LIKELY (expr) ; \
+    else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); \
+  } while (0)
+
+#ifdef G_DISABLE_CHECKS
+
+/**
+ * g_return_if_fail:
+ * @expr: the expression to check
+ *
+ * Verifies that the expression evaluates to %TRUE.  If the expression
+ * evaluates to %FALSE, a critical message is logged and the current
+ * function returns.  This can only be used in functions which do not
+ * return a value.
+ *
+ * If G_DISABLE_CHECKS is defined then the check is not performed.  You
+ * should therefore not depend on any side effects of @expr.
+ */
+#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END
+
+/**
+ * g_return_val_if_fail:
+ * @expr: the expression to check
+ * @val: the value to return from the current function
+ *       if the expression is not true
+ *
+ * Verifies that the expression evaluates to %TRUE.  If the expression
+ * evaluates to %FALSE, a critical message is logged and @val is
+ * returned from the current function.
+ *
+ * If G_DISABLE_CHECKS is defined then the check is not performed.  You
+ * should therefore not depend on any side effects of @expr.
+ */
+#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END
+
+/**
+ * g_return_if_reached:
+ *
+ * Logs a critical message and returns from the current function.
+ * This can only be used in functions which do not return a value.
+ */
+#define g_return_if_reached() G_STMT_START{ return; }G_STMT_END
+
+/**
+ * g_return_val_if_reached:
+ * @val: the value to return from the current function
+ *
+ * Logs a critical message and returns @val.
+ */
+#define g_return_val_if_reached(val) G_STMT_START{ return (val); }G_STMT_END
+
+#else /* !G_DISABLE_CHECKS */
+
+#ifdef __GNUC__
+
+#define g_return_if_fail(expr)		G_STMT_START{			\
+     if G_LIKELY(expr) { } else       					\
+       {								\
+	 g_return_if_fail_warning (G_LOG_DOMAIN,			\
+		                   __PRETTY_FUNCTION__,		        \
+		                   #expr);				\
+	 return;							\
+       };				}G_STMT_END
+
+#define g_return_val_if_fail(expr,val)	G_STMT_START{			\
+     if G_LIKELY(expr) { } else						\
+       {								\
+	 g_return_if_fail_warning (G_LOG_DOMAIN,			\
+		                   __PRETTY_FUNCTION__,		        \
+		                   #expr);				\
+	 return (val);							\
+       };				}G_STMT_END
+
+#define g_return_if_reached()		G_STMT_START{			\
+     g_log (G_LOG_DOMAIN,						\
+	    G_LOG_LEVEL_CRITICAL,					\
+	    "file %s: line %d (%s): should not be reached",		\
+	    __FILE__,							\
+	    __LINE__,							\
+	    __PRETTY_FUNCTION__);					\
+     return;				}G_STMT_END
+
+#define g_return_val_if_reached(val)	G_STMT_START{			\
+     g_log (G_LOG_DOMAIN,						\
+	    G_LOG_LEVEL_CRITICAL,					\
+	    "file %s: line %d (%s): should not be reached",		\
+	    __FILE__,							\
+	    __LINE__,							\
+	    __PRETTY_FUNCTION__);					\
+     return (val);			}G_STMT_END
+
+#else /* !__GNUC__ */
+
+#define g_return_if_fail(expr)		G_STMT_START{		\
+     if (expr) { } else						\
+       {							\
+	 g_log (G_LOG_DOMAIN,					\
+		G_LOG_LEVEL_CRITICAL,				\
+		"file %s: line %d: assertion '%s' failed",	\
+		__FILE__,					\
+		__LINE__,					\
+		#expr);						\
+	 return;						\
+       };				}G_STMT_END
+
+#define g_return_val_if_fail(expr, val)	G_STMT_START{		\
+     if (expr) { } else						\
+       {							\
+	 g_log (G_LOG_DOMAIN,					\
+		G_LOG_LEVEL_CRITICAL,				\
+		"file %s: line %d: assertion '%s' failed",	\
+		__FILE__,					\
+		__LINE__,					\
+		#expr);						\
+	 return (val);						\
+       };				}G_STMT_END
+
+#define g_return_if_reached()		G_STMT_START{		\
+     g_log (G_LOG_DOMAIN,					\
+	    G_LOG_LEVEL_CRITICAL,				\
+	    "file %s: line %d: should not be reached",		\
+	    __FILE__,						\
+	    __LINE__);						\
+     return;				}G_STMT_END
+
+#define g_return_val_if_reached(val)	G_STMT_START{		\
+     g_log (G_LOG_DOMAIN,					\
+	    G_LOG_LEVEL_CRITICAL,				\
+	    "file %s: line %d: should not be reached",		\
+	    __FILE__,						\
+	    __LINE__);						\
+     return (val);			}G_STMT_END
+
+#endif /* !__GNUC__ */
+
+#endif /* !G_DISABLE_CHECKS */
+
+G_END_DECLS
+
+#endif /* __G_MESSAGES_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gnode.h b/dist/usr/include/glib-2.0/glib/gnode.h
new file mode 100644
index 0000000..71f60ab
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gnode.h
@@ -0,0 +1,324 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gmem.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GNode		GNode;
+
+/* Tree traverse flags */
+typedef enum
+{
+  G_TRAVERSE_LEAVES     = 1 << 0,
+  G_TRAVERSE_NON_LEAVES = 1 << 1,
+  G_TRAVERSE_ALL        = G_TRAVERSE_LEAVES | G_TRAVERSE_NON_LEAVES,
+  G_TRAVERSE_MASK       = 0x03,
+  G_TRAVERSE_LEAFS      = G_TRAVERSE_LEAVES,
+  G_TRAVERSE_NON_LEAFS  = G_TRAVERSE_NON_LEAVES
+} GTraverseFlags;
+
+/* Tree traverse orders */
+typedef enum
+{
+  G_IN_ORDER,
+  G_PRE_ORDER,
+  G_POST_ORDER,
+  G_LEVEL_ORDER
+} GTraverseType;
+
+typedef gboolean	(*GNodeTraverseFunc)	(GNode	       *node,
+						 gpointer	data);
+typedef void		(*GNodeForeachFunc)	(GNode	       *node,
+						 gpointer	data);
+
+/**
+ * GCopyFunc:
+ * @src: A pointer to the data which should be copied
+ * @data: Additional data
+ *
+ * A function of this signature is used to copy the node data 
+ * when doing a deep-copy of a tree.
+ *
+ * Returns: A pointer to the copy
+ *
+ * Since: 2.4
+ */
+typedef gpointer	(*GCopyFunc)            (gconstpointer  src,
+                                                 gpointer       data);
+
+/* N-way tree implementation
+ */
+struct _GNode
+{
+  gpointer data;
+  GNode	  *next;
+  GNode	  *prev;
+  GNode	  *parent;
+  GNode	  *children;
+};
+
+/**
+ * G_NODE_IS_ROOT:
+ * @node: a #GNode
+ *
+ * Returns %TRUE if a #GNode is the root of a tree.
+ *
+ * Returns: %TRUE if the #GNode is the root of a tree 
+ *     (i.e. it has no parent or siblings)
+ */
+#define	 G_NODE_IS_ROOT(node)	(((GNode*) (node))->parent == NULL && \
+				 ((GNode*) (node))->prev == NULL && \
+				 ((GNode*) (node))->next == NULL)
+
+/**
+ * G_NODE_IS_LEAF:
+ * @node: a #GNode
+ *
+ * Returns %TRUE if a #GNode is a leaf node.
+ *
+ * Returns: %TRUE if the #GNode is a leaf node 
+ *     (i.e. it has no children)
+ */
+#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,
+				 gpointer	   data);
+
+/* convenience macros */
+/**
+ * g_node_append:
+ * @parent: the #GNode to place the new #GNode under
+ * @node: the #GNode to insert
+ *
+ * Inserts a #GNode as the last child of the given parent.
+ *
+ * Returns: the inserted #GNode
+ */
+#define g_node_append(parent, node)				\
+     g_node_insert_before ((parent), NULL, (node))
+
+/**
+ * g_node_insert_data:
+ * @parent: the #GNode to place the new #GNode under
+ * @position: the position to place the new #GNode at. If position is -1, 
+ *     the new #GNode is inserted as the last child of @parent
+ * @data: the data for the new #GNode
+ *
+ * Inserts a new #GNode at the given position.
+ *
+ * Returns: the new #GNode
+ */
+#define	g_node_insert_data(parent, position, data)		\
+     g_node_insert ((parent), (position), g_node_new (data))
+
+/**
+ * g_node_insert_data_after:
+ * @parent: the #GNode to place the new #GNode under
+ * @sibling: the sibling #GNode to place the new #GNode after
+ * @data: the data for the new #GNode
+ *
+ * Inserts a new #GNode after the given sibling.
+ *
+ * Returns: the new #GNode
+ */
+
+#define	g_node_insert_data_after(parent, sibling, data)	\
+     g_node_insert_after ((parent), (sibling), g_node_new (data))
+/**
+ * g_node_insert_data_before:
+ * @parent: the #GNode to place the new #GNode under
+ * @sibling: the sibling #GNode to place the new #GNode before
+ * @data: the data for the new #GNode
+ *
+ * Inserts a new #GNode before the given sibling.
+ *
+ * Returns: the new #GNode
+ */
+#define	g_node_insert_data_before(parent, sibling, data)	\
+     g_node_insert_before ((parent), (sibling), g_node_new (data))
+
+/**
+ * g_node_prepend_data:
+ * @parent: the #GNode to place the new #GNode under
+ * @data: the data for the new #GNode
+ *
+ * Inserts a new #GNode as the first child of the given parent.
+ *
+ * Returns: the new #GNode
+ */
+#define	g_node_prepend_data(parent, data)			\
+     g_node_prepend ((parent), g_node_new (data))
+
+/**
+ * g_node_append_data:
+ * @parent: the #GNode to place the new #GNode under
+ * @data: the data for the new #GNode
+ *
+ * Inserts a new #GNode as the last child of the given parent.
+ *
+ * Returns: the new #GNode
+ */
+#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).
+ * 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,
+				 gint		   max_depth,
+				 GNodeTraverseFunc func,
+				 gpointer	   data);
+
+/* 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
+ * 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);
+
+/**
+ * g_node_prev_sibling:
+ * @node: a #GNode
+ *
+ * Gets the previous sibling of a #GNode.
+ *
+ * Returns: the previous sibling of @node, or %NULL if @node is the first
+ *     node or %NULL
+ */
+#define	 g_node_prev_sibling(node)	((node) ? \
+					 ((GNode*) (node))->prev : NULL)
+
+/**
+ * g_node_next_sibling:
+ * @node: a #GNode
+ *
+ * Gets the next sibling of a #GNode.
+ *
+ * Returns: the next sibling of @node, or %NULL if @node is the last node
+ *     or %NULL
+ */
+#define	 g_node_next_sibling(node)	((node) ? \
+					 ((GNode*) (node))->next : NULL)
+
+/**
+ * g_node_first_child:
+ * @node: a #GNode
+ *
+ * Gets the first child of a #GNode.
+ *
+ * Returns: the first child of @node, or %NULL if @node is %NULL 
+ *     or has no children
+ */
+#define	 g_node_first_child(node)	((node) ? \
+					 ((GNode*) (node))->children : NULL)
+
+G_END_DECLS
+
+#endif /* __G_NODE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/goption.h b/dist/usr/include/glib-2.0/glib/goption.h
new file mode 100644
index 0000000..ee01377
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/goption.h
@@ -0,0 +1,396 @@
+/* goption.h - Option parser
+ *
+ *  Copyright (C) 2004  Anders Carlsson <andersca@gnome.org>
+ *
+ * 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_OPTION_H__
+#define __G_OPTION_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gerror.h>
+#include <glib/gquark.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GOptionContext:
+ * 
+ * A <structname>GOptionContext</structname> struct defines which options
+ * are accepted by the commandline option parser. The struct has only private 
+ * fields and should not be directly accessed.
+ */
+typedef struct _GOptionContext GOptionContext;
+
+/**
+ * GOptionGroup:
+ *
+ * A <structname>GOptionGroup</structname> struct defines the options in a single
+ * group. The struct has only private fields and should not be directly accessed.
+ *
+ * All options in a group share the same translation function. Libraries which
+ * need to parse commandline options are expected to provide a function for
+ * getting a <structname>GOptionGroup</structname> holding their options, which
+ * the application can then add to its #GOptionContext.
+ */
+typedef struct _GOptionGroup   GOptionGroup;
+typedef struct _GOptionEntry   GOptionEntry;
+
+/**
+ * GOptionFlags:
+ * @G_OPTION_FLAG_HIDDEN: The option doesn't appear in <option>--help</option>
+ *  output.
+ * @G_OPTION_FLAG_IN_MAIN: The option appears in the main section of the
+ *  <option>--help</option> output, even if it is defined in a group.
+ * @G_OPTION_FLAG_REVERSE: For options of the %G_OPTION_ARG_NONE kind, this flag
+ *  indicates that the sense of the option is reversed.
+ * @G_OPTION_FLAG_NO_ARG: For options of the %G_OPTION_ARG_CALLBACK kind,
+ *  this flag indicates that the callback does not take any argument
+ *  (like a %G_OPTION_ARG_NONE option). Since 2.8
+ * @G_OPTION_FLAG_FILENAME: For options of the %G_OPTION_ARG_CALLBACK
+ *  kind, this flag indicates that the argument should be passed to the
+ *  callback in the GLib filename encoding rather than UTF-8. Since 2.8
+ * @G_OPTION_FLAG_OPTIONAL_ARG: For options of the %G_OPTION_ARG_CALLBACK 
+ *  kind, this flag indicates that the argument supply is optional. If no argument
+ *  is given then data of %GOptionParseFunc will be set to NULL. Since 2.8
+ * @G_OPTION_FLAG_NOALIAS: This flag turns off the automatic conflict resolution
+ *  which prefixes long option names with <literal>groupname-</literal> if 
+ *  there is a conflict. This option should only be used in situations where
+ *  aliasing is necessary to model some legacy commandline interface. It is
+ *  not safe to use this option, unless all option groups are under your 
+ *  direct control. Since 2.8.
+ * 
+ * Flags which modify individual options.
+ */
+typedef enum
+{
+  G_OPTION_FLAG_HIDDEN		= 1 << 0,
+  G_OPTION_FLAG_IN_MAIN		= 1 << 1,
+  G_OPTION_FLAG_REVERSE		= 1 << 2,
+  G_OPTION_FLAG_NO_ARG		= 1 << 3,
+  G_OPTION_FLAG_FILENAME	= 1 << 4,
+  G_OPTION_FLAG_OPTIONAL_ARG    = 1 << 5,
+  G_OPTION_FLAG_NOALIAS	        = 1 << 6
+} GOptionFlags;
+
+/**
+ * GOptionArg:
+ * @G_OPTION_ARG_NONE: No extra argument. This is useful for simple flags.
+ * @G_OPTION_ARG_STRING: The option takes a string argument.
+ * @G_OPTION_ARG_INT: The option takes an integer argument.
+ * @G_OPTION_ARG_CALLBACK: The option provides a callback to parse the
+ *  extra argument.
+ * @G_OPTION_ARG_FILENAME: The option takes a filename as argument.
+ * @G_OPTION_ARG_STRING_ARRAY: The option takes a string argument, multiple
+ *  uses of the option are collected into an array of strings.
+ * @G_OPTION_ARG_FILENAME_ARRAY: The option takes a filename as argument, 
+ *  multiple uses of the option are collected into an array of strings.
+ * @G_OPTION_ARG_DOUBLE: The option takes a double argument. The argument
+ *  can be formatted either for the user's locale or for the "C" locale. Since 2.12
+ * @G_OPTION_ARG_INT64: The option takes a 64-bit integer. Like %G_OPTION_ARG_INT
+ *  but for larger numbers. The number can be in decimal base, or in hexadecimal
+ *  (when prefixed with <literal>0x</literal>, for example, <literal>0xffffffff</literal>).
+ *  Since 2.12
+ * 
+ * The #GOptionArg enum values determine which type of extra argument the
+ * options expect to find. If an option expects an extra argument, it
+ * can be specified in several ways; with a short option:
+ * <option>-x arg</option>, with a long option: <option>--name arg</option>
+ * or combined in a single argument: <option>--name=arg</option>.
+ */
+typedef enum
+{
+  G_OPTION_ARG_NONE,
+  G_OPTION_ARG_STRING,
+  G_OPTION_ARG_INT,
+  G_OPTION_ARG_CALLBACK,
+  G_OPTION_ARG_FILENAME,
+  G_OPTION_ARG_STRING_ARRAY,
+  G_OPTION_ARG_FILENAME_ARRAY,
+  G_OPTION_ARG_DOUBLE,
+  G_OPTION_ARG_INT64
+} GOptionArg;
+
+/**
+ * GOptionArgFunc:
+ * @option_name: The name of the option being parsed. This will be either a 
+ *  single dash followed by a single letter (for a short name) or two dashes
+ *  followed by a long option name.
+ * @value: The value to be parsed.
+ * @data: User data added to the #GOptionGroup containing the option when it
+ *  was created with g_option_group_new()
+ * @error: A return location for errors. The error code %G_OPTION_ERROR_FAILED
+ *  is intended to be used for errors in #GOptionArgFunc callbacks.
+ * 
+ * The type of function to be passed as callback for %G_OPTION_ARG_CALLBACK
+ * options.
+ * 
+ * Returns: %TRUE if the option was successfully parsed, %FALSE if an error 
+ *  occurred, in which case @error should be set with g_set_error()
+ */
+typedef gboolean (*GOptionArgFunc) (const gchar    *option_name,
+				    const gchar    *value,
+				    gpointer        data,
+				    GError        **error);
+
+/**
+ * GOptionParseFunc:
+ * @context: The active #GOptionContext
+ * @group: The group to which the function belongs
+ * @data: User data added to the #GOptionGroup containing the option when it
+ *  was created with g_option_group_new()
+ * @error: A return location for error details
+ * 
+ * The type of function that can be called before and after parsing. 
+ * 
+ * Returns: %TRUE if the function completed successfully, %FALSE if an error 
+ *  occurred, in which case @error should be set with g_set_error()
+ */
+typedef gboolean (*GOptionParseFunc) (GOptionContext *context,
+				      GOptionGroup   *group,
+				      gpointer	      data,
+				      GError        **error);
+
+/**
+ * GOptionErrorFunc:
+ * @context: The active #GOptionContext
+ * @group: The group to which the function belongs
+ * @data: User data added to the #GOptionGroup containing the option when it
+ *  was created with g_option_group_new()
+ * @error: The #GError containing details about the parse error
+ * 
+ * The type of function to be used as callback when a parse error occurs.
+ */
+typedef void (*GOptionErrorFunc) (GOptionContext *context,
+				  GOptionGroup   *group,
+				  gpointer        data,
+				  GError        **error);
+
+/**
+ * G_OPTION_ERROR:
+ * 
+ * Error domain for option parsing. Errors in this domain will
+ * be from the #GOptionError enumeration. See #GError for information on 
+ * error domains.
+ */
+#define G_OPTION_ERROR (g_option_error_quark ())
+
+/**
+ * GOptionError:
+ * @G_OPTION_ERROR_UNKNOWN_OPTION: An option was not known to the parser.
+ *  This error will only be reported, if the parser hasn't been instructed
+ *  to ignore unknown options, see g_option_context_set_ignore_unknown_options().
+ * @G_OPTION_ERROR_BAD_VALUE: A value couldn't be parsed.
+ * @G_OPTION_ERROR_FAILED: A #GOptionArgFunc callback failed.
+ * 
+ * Error codes returned by option parsing.
+ */
+typedef enum
+{
+  G_OPTION_ERROR_UNKNOWN_OPTION,
+  G_OPTION_ERROR_BAD_VALUE,
+  G_OPTION_ERROR_FAILED
+} GOptionError;
+
+GLIB_AVAILABLE_IN_ALL
+GQuark g_option_error_quark (void);
+
+/**
+ * GOptionEntry:
+ * @long_name: The long name of an option can be used to specify it
+ *  in a commandline as --<replaceable>long_name</replaceable>. Every
+ *  option must have a long name. To resolve conflicts if multiple
+ *  option groups contain the same long name, it is also possible to
+ *  specify the option as 
+ *  --<replaceable>groupname</replaceable>-<replaceable>long_name</replaceable>.
+ * @short_name: If an option has a short name, it can be specified
+ *  -<replaceable>short_name</replaceable> in a commandline. @short_name must be 
+ *  a printable ASCII character different from '-', or zero if the option has no
+ *  short name.
+ * @flags: Flags from #GOptionFlags.
+ * @arg: The type of the option, as a #GOptionArg.
+ * @arg_data: If the @arg type is %G_OPTION_ARG_CALLBACK, then @arg_data must 
+ *  point to a #GOptionArgFunc callback function, which will be called to handle 
+ *  the extra argument. Otherwise, @arg_data is a pointer to a location to store 
+ *  the value, the required type of the location depends on the @arg type:
+ *  <variablelist>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_NONE</term>
+ *  <listitem><para>%gboolean</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_STRING</term>
+ *  <listitem><para>%gchar*</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_INT</term>
+ *  <listitem><para>%gint</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_FILENAME</term>
+ *  <listitem><para>%gchar*</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_STRING_ARRAY</term>
+ *  <listitem><para>%gchar**</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_FILENAME_ARRAY</term>
+ *  <listitem><para>%gchar**</para></listitem>
+ *  </varlistentry>
+ *  <varlistentry>
+ *  <term>%G_OPTION_ARG_DOUBLE</term>
+ *  <listitem><para>%gdouble</para></listitem>
+ *  </varlistentry>
+ *  </variablelist>
+ *  If @arg type is %G_OPTION_ARG_STRING or %G_OPTION_ARG_FILENAME the location
+ *  will contain a newly allocated string if the option was given. That string
+ *  needs to be freed by the callee using g_free(). Likewise if @arg type is
+ *  %G_OPTION_ARG_STRING_ARRAY or %G_OPTION_ARG_FILENAME_ARRAY, the data should
+ *  be freed using g_strfreev().
+ * @description: the description for the option in <option>--help</option>
+ *  output. The @description is translated using the @translate_func of the
+ *  group, see g_option_group_set_translation_domain().
+ * @arg_description: The placeholder to use for the extra argument parsed
+ *  by the option in <option>--help</option>
+ *  output. The @arg_description is translated using the @translate_func of the
+ *  group, see g_option_group_set_translation_domain().
+ * 
+ * A <structname>GOptionEntry</structname> defines a single option.
+ * To have an effect, they must be added to a #GOptionGroup with
+ * g_option_context_add_main_entries() or g_option_group_add_entries().
+ */
+struct _GOptionEntry
+{
+  const gchar *long_name;
+  gchar        short_name;
+  gint         flags;
+
+  GOptionArg   arg;
+  gpointer     arg_data;
+  
+  const gchar *description;
+  const gchar *arg_description;
+};
+
+/**
+ * G_OPTION_REMAINING:
+ * 
+ * If a long option in the main group has this name, it is not treated as a 
+ * regular option. Instead it collects all non-option arguments which would
+ * otherwise be left in <literal>argv</literal>. The option must be of type
+ * %G_OPTION_ARG_CALLBACK, %G_OPTION_ARG_STRING_ARRAY
+ * or %G_OPTION_ARG_FILENAME_ARRAY.
+ * 
+ * 
+ * Using #G_OPTION_REMAINING instead of simply scanning <literal>argv</literal>
+ * for leftover arguments has the advantage that GOption takes care of 
+ * necessary encoding conversions for strings or filenames.
+ * 
+ * Since: 2.6
+ */
+#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);
+
+G_END_DECLS
+
+#endif /* __G_OPTION_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gpattern.h b/dist/usr/include/glib-2.0/glib/gpattern.h
new file mode 100644
index 0000000..956b003
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gpattern.h
@@ -0,0 +1,55 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997, 1999  Peter Mattis, 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_PATTERN_H__
+#define __G_PATTERN_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gtypes.h>
+
+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);
+
+G_END_DECLS
+
+#endif /* __G_PATTERN_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gpoll.h b/dist/usr/include/glib-2.0/glib/gpoll.h
new file mode 100644
index 0000000..3ba8420
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gpoll.h
@@ -0,0 +1,121 @@
+/* gpoll.h - poll(2) support
+ * Copyright (C) 2008 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_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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/* Any definitions using GPollFD or GPollFunc are primarily
+ * for Unix and not guaranteed to be the compatible on all
+ * operating systems on which GLib runs. Right now, the
+ * GLib does use these functions on Win32 as well, but interprets
+ * them in a fairly different way than on Unix. If you use
+ * these definitions, you are should be prepared to recode
+ * for different operating systems.
+ *
+ * Note that on systems with a working poll(2), that function is used
+ * in place of g_poll(). Thus g_poll() must have the same signature as
+ * poll(), meaning GPollFD must have the same layout as struct pollfd.
+ *
+ *
+ * On Win32, the fd in a GPollFD should be Win32 HANDLE (*not* a file
+ * descriptor as provided by the C runtime) that can be used by
+ * MsgWaitForMultipleObjects. This does *not* include file handles
+ * from CreateFile, SOCKETs, nor pipe handles. (But you can use
+ * WSAEventSelect to signal events when a SOCKET is readable).
+ *
+ * On Win32, fd can also be the special value G_WIN32_MSG_HANDLE to
+ * indicate polling for messages.
+ *
+ * But note that G_WIN32_MSG_HANDLE GPollFDs should not be used by GDK
+ * (GTK) programs, as GDK itself wants to read messages and convert them
+ * to GDK events.
+ *
+ * So, unless you really know what you are doing, it's best not to try
+ * to use the main loop polling stuff for your own needs on
+ * Windows.
+ */
+typedef struct _GPollFD GPollFD;
+
+/**
+ * GPollFunc:
+ * @ufds: an array of #GPollFD elements
+ * @nfsd: the number of elements in @ufds
+ * @timeout_: the maximum time to wait for an event of the file descriptors.
+ *     A negative value indicates an infinite timeout.
+ *
+ * Specifies the type of function passed to g_main_context_set_poll_func().
+ * The semantics of the function should match those of the poll() system call.
+ *
+ * Returns: the number of #GPollFD elements which have events or errors
+ *     reported, or -1 if an error occurred.
+ */
+typedef gint    (*GPollFunc)    (GPollFD *ufds,
+                                 guint    nfsd,
+                                 gint     timeout_);
+
+/**
+ * GPollFD:
+ * @fd: the file descriptor to poll (or a <type>HANDLE</type> on Win32)
+ * @events: a bitwise combination from #GIOCondition, specifying which
+ *     events should be polled for. Typically for reading from a file
+ *     descriptor you would use %G_IO_IN | %G_IO_HUP | %G_IO_ERR, and
+ *     for writing you would use %G_IO_OUT | %G_IO_ERR.
+ * @revents: a bitwise combination of flags from #GIOCondition, returned
+ *     from the poll() function to indicate which events occurred.
+ *
+ * Represents a file descriptor, which events to poll for, and which events
+ * occurred.
+ */
+struct _GPollFD
+{
+#if defined (G_OS_WIN32) && GLIB_SIZEOF_VOID_P == 8
+  gint64	fd;
+#else
+  gint		fd;
+#endif
+  gushort 	events;
+  gushort 	revents;
+};
+
+#ifdef G_OS_WIN32
+#if GLIB_SIZEOF_VOID_P == 8
+#define G_POLLFD_FORMAT "%#I64x"
+#else
+#define G_POLLFD_FORMAT "%#x"
+#endif
+#else
+#define G_POLLFD_FORMAT "%d"
+#endif
+
+GLIB_AVAILABLE_IN_ALL
+gint g_poll (GPollFD *fds,
+	     guint    nfds,
+	     gint     timeout);
+
+G_END_DECLS
+
+#endif /* __G_POLL_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gprimes.h b/dist/usr/include/glib-2.0/glib/gprimes.h
new file mode 100644
index 0000000..536ace4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gprimes.h
@@ -0,0 +1,52 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/* Prime numbers.
+ */
+
+/* This function returns prime numbers spaced by approximately 1.5-2.0
+ * and is for use in resizing data structures which prefer
+ * prime-valued sizes.	The closest spaced prime function returns the
+ * 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
+
+#endif /* __G_PRIMES_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gprintf.h b/dist/usr/include/glib-2.0/glib/gprintf.h
new file mode 100644
index 0000000..0b01cc4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gprintf.h
@@ -0,0 +1,59 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997, 2002  Peter Mattis, 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_PRINTF_H__
+#define __G_PRINTF_H__
+
+#include <glib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+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) G_GNUC_PRINTF(1, 0);
+GLIB_AVAILABLE_IN_ALL
+gint                  g_vfprintf  (FILE        *file,
+				   gchar const *format,
+				   va_list      args) G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
+gint                  g_vsprintf  (gchar       *string,
+				   gchar const *format,
+				   va_list      args) G_GNUC_PRINTF(2, 0);
+GLIB_AVAILABLE_IN_ALL
+gint                  g_vasprintf (gchar      **string,
+				   gchar const *format,
+				   va_list      args) G_GNUC_PRINTF(2, 0);
+
+G_END_DECLS
+
+#endif /* __G_PRINTF_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gqsort.h b/dist/usr/include/glib-2.0/glib/gqsort.h
new file mode 100644
index 0000000..c67d949
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gqsort.h
@@ -0,0 +1,47 @@
+ /* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+void g_qsort_with_data (gconstpointer    pbase,
+			gint             total_elems,
+			gsize            size,
+			GCompareDataFunc compare_func,
+			gpointer         user_data);
+
+G_END_DECLS
+
+#endif /* __G_QSORT_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gquark.h b/dist/usr/include/glib-2.0/glib/gquark.h
new file mode 100644
index 0000000..617dbd2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gquark.h
@@ -0,0 +1,70 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+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
+
+#endif /* __G_QUARK_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gqueue.h b/dist/usr/include/glib-2.0/glib/gqueue.h
new file mode 100644
index 0000000..23536a4
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gqueue.h
@@ -0,0 +1,192 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/glist.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GQueue GQueue;
+
+/**
+ * GQueue:
+ * @head: a pointer to the first element of the queue
+ * @tail: a pointer to the last element of the queue
+ * @length: the number of elements in the queue
+ *
+ * Contains the public fields of a
+ * <link linkend="glib-Double-ended-Queues">Queue</link>.
+ */
+struct _GQueue
+{
+  GList *head;
+  GList *tail;
+  guint  length;
+};
+
+/**
+ * G_QUEUE_INIT:
+ *
+ * A statically-allocated #GQueue must be initialized with this
+ * macro before it can be used. This macro can be used to initialize
+ * a variable, but it cannot be assigned to a variable. In that case
+ * you have to use g_queue_init().
+ *
+ * |[
+ * GQueue my_queue = G_QUEUE_INIT;
+ * ]|
+ *
+ * Since: 2.14
+ */
+#define G_QUEUE_INIT { NULL, NULL, 0 }
+
+/* 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_);
+
+G_END_DECLS
+
+#endif /* __G_QUEUE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/grand.h b/dist/usr/include/glib-2.0/glib/grand.h
new file mode 100644
index 0000000..b121e50
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/grand.h
@@ -0,0 +1,101 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GRand           GRand;
+
+/* GRand - a good and fast random number generator: Mersenne Twister
+ * see http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html for more info.
+ * The range functions return a value in the intervall [begin, end).
+ * int          -> [0..2^32-1]
+ * int_range    -> [begin..end-1]
+ * double       -> [0..1)
+ * 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);
+
+
+G_END_DECLS
+
+#endif /* __G_RAND_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gregex.h b/dist/usr/include/glib-2.0/glib/gregex.h
new file mode 100644
index 0000000..c232eac
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gregex.h
@@ -0,0 +1,601 @@
+/* GRegex -- regular expression API wrapper around PCRE.
+ *
+ * Copyright (C) 1999, 2000 Scott Wimer
+ * Copyright (C) 2004, Matthias Clasen <mclasen@redhat.com>
+ * Copyright (C) 2005 - 2007, Marco Barisione <marco@barisione.org>
+ *
+ * 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.1 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __G_REGEX_H__
+#define __G_REGEX_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gerror.h>
+#include <glib/gstring.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GRegexError:
+ * @G_REGEX_ERROR_COMPILE: Compilation of the regular expression failed.
+ * @G_REGEX_ERROR_OPTIMIZE: Optimization of the regular expression failed.
+ * @G_REGEX_ERROR_REPLACE: Replacement failed due to an ill-formed replacement
+ *     string.
+ * @G_REGEX_ERROR_MATCH: The match process failed.
+ * @G_REGEX_ERROR_INTERNAL: Internal error of the regular expression engine.
+ *     Since 2.16
+ * @G_REGEX_ERROR_STRAY_BACKSLASH: "\\" at end of pattern. Since 2.16
+ * @G_REGEX_ERROR_MISSING_CONTROL_CHAR: "\\c" at end of pattern. Since 2.16
+ * @G_REGEX_ERROR_UNRECOGNIZED_ESCAPE: Unrecognized character follows "\\".
+ *     Since 2.16
+ * @G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER: Numbers out of order in "{}"
+ *     quantifier. Since 2.16
+ * @G_REGEX_ERROR_QUANTIFIER_TOO_BIG: Number too big in "{}" quantifier.
+ *     Since 2.16
+ * @G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS: Missing terminating "]" for
+ *     character class. Since 2.16
+ * @G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS: Invalid escape sequence
+ *     in character class. Since 2.16
+ * @G_REGEX_ERROR_RANGE_OUT_OF_ORDER: Range out of order in character class.
+ *     Since 2.16
+ * @G_REGEX_ERROR_NOTHING_TO_REPEAT: Nothing to repeat. Since 2.16
+ * @G_REGEX_ERROR_UNRECOGNIZED_CHARACTER: Unrecognized character after "(?",
+ *     "(?&lt;" or "(?P". Since 2.16
+ * @G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS: POSIX named classes are
+ *     supported only within a class. Since 2.16
+ * @G_REGEX_ERROR_UNMATCHED_PARENTHESIS: Missing terminating ")" or ")"
+ *     without opening "(". Since 2.16
+ * @G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE: Reference to non-existent
+ *     subpattern. Since 2.16
+ * @G_REGEX_ERROR_UNTERMINATED_COMMENT: Missing terminating ")" after comment.
+ *     Since 2.16
+ * @G_REGEX_ERROR_EXPRESSION_TOO_LARGE: Regular expression too large.
+ *     Since 2.16
+ * @G_REGEX_ERROR_MEMORY_ERROR: Failed to get memory. Since 2.16
+ * @G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND: Lookbehind assertion is not
+ *     fixed length. Since 2.16
+ * @G_REGEX_ERROR_MALFORMED_CONDITION: Malformed number or name after "(?(".
+ *     Since 2.16
+ * @G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES: Conditional group contains
+ *     more than two branches. Since 2.16
+ * @G_REGEX_ERROR_ASSERTION_EXPECTED: Assertion expected after "(?(".
+ *     Since 2.16
+ * @G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME: Unknown POSIX class name.
+ *     Since 2.16
+ * @G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED: POSIX collating
+ *     elements are not supported. Since 2.16
+ * @G_REGEX_ERROR_HEX_CODE_TOO_LARGE: Character value in "\\x{...}" sequence
+ *     is too large. Since 2.16
+ * @G_REGEX_ERROR_INVALID_CONDITION: Invalid condition "(?(0)". Since 2.16
+ * @G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND: \\C not allowed in
+ *     lookbehind assertion. Since 2.16
+ * @G_REGEX_ERROR_INFINITE_LOOP: Recursive call could loop indefinitely.
+ *     Since 2.16
+ * @G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR: Missing terminator
+ *     in subpattern name. Since 2.16
+ * @G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME: Two named subpatterns have
+ *     the same name. Since 2.16
+ * @G_REGEX_ERROR_MALFORMED_PROPERTY: Malformed "\\P" or "\\p" sequence.
+ *     Since 2.16
+ * @G_REGEX_ERROR_UNKNOWN_PROPERTY: Unknown property name after "\\P" or
+ *     "\\p". Since 2.16
+ * @G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG: Subpattern name is too long
+ *     (maximum 32 characters). Since 2.16
+ * @G_REGEX_ERROR_TOO_MANY_SUBPATTERNS: Too many named subpatterns (maximum
+ *     10,000). Since 2.16
+ * @G_REGEX_ERROR_INVALID_OCTAL_VALUE: Octal value is greater than "\\377".
+ *     Since 2.16
+ * @G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE: "DEFINE" group contains more
+ *     than one branch. Since 2.16
+ * @G_REGEX_ERROR_DEFINE_REPETION: Repeating a "DEFINE" group is not allowed.
+ *     This error is never raised. Since: 2.16 Deprecated: 2.34
+ * @G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS: Inconsistent newline options.
+ *     Since 2.16
+ * @G_REGEX_ERROR_MISSING_BACK_REFERENCE: "\\g" is not followed by a braced,
+ *      angle-bracketed, or quoted name or number, or by a plain number. Since: 2.16
+ * @G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE: relative reference must not be zero. Since: 2.34
+ * @G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN: the backtracing
+ *     control verb used does not allow an argument. Since: 2.34
+ * @G_REGEX_ERROR_UNKNOWN_BACKTRACKING_CONTROL_VERB: unknown backtracing 
+ *     control verb. Since: 2.34
+ * @G_REGEX_ERROR_NUMBER_TOO_BIG: number is too big in escape sequence. Since: 2.34
+ * @G_REGEX_ERROR_MISSING_SUBPATTERN_NAME: Missing subpattern name. Since: 2.34
+ * @G_REGEX_ERROR_MISSING_DIGIT: Missing digit. Since 2.34
+ * @G_REGEX_ERROR_INVALID_DATA_CHARACTER: In JavaScript compatibility mode,
+ *     "[" is an invalid data character. Since: 2.34
+ * @G_REGEX_ERROR_EXTRA_SUBPATTERN_NAME: different names for subpatterns of the 
+ *     same number are not allowed. Since: 2.34
+ * @G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED: the backtracing control
+ *     verb requires an argument. Since: 2.34
+ * @G_REGEX_ERROR_INVALID_CONTROL_CHAR: "\\c" must be followed by an ASCII 
+ *     character. Since: 2.34
+ * @G_REGEX_ERROR_MISSING_NAME: "\\k" is not followed by a braced, angle-bracketed, or 
+ *     quoted name. Since: 2.34
+ * @G_REGEX_ERROR_NOT_SUPPORTED_IN_CLASS: "\\N" is not supported in a class. Since: 2.34
+ * @G_REGEX_ERROR_TOO_MANY_FORWARD_REFERENCES: too many forward references. Since: 2.34
+ * @G_REGEX_ERROR_NAME_TOO_LONG: the name is too long in "(*MARK)", "(*PRUNE)", 
+ *     "(*SKIP)", or "(*THEN)". Since: 2.34
+ * @G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE: the character value in the \\u sequence is
+ *     too large. Since: 2.34
+ *
+ * Error codes returned by regular expressions functions.
+ *
+ * Since: 2.14
+ */
+typedef enum
+{
+  G_REGEX_ERROR_COMPILE,
+  G_REGEX_ERROR_OPTIMIZE,
+  G_REGEX_ERROR_REPLACE,
+  G_REGEX_ERROR_MATCH,
+  G_REGEX_ERROR_INTERNAL,
+
+  /* These are the error codes from PCRE + 100 */
+  G_REGEX_ERROR_STRAY_BACKSLASH = 101,
+  G_REGEX_ERROR_MISSING_CONTROL_CHAR = 102,
+  G_REGEX_ERROR_UNRECOGNIZED_ESCAPE = 103,
+  G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER = 104,
+  G_REGEX_ERROR_QUANTIFIER_TOO_BIG = 105,
+  G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS = 106,
+  G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS = 107,
+  G_REGEX_ERROR_RANGE_OUT_OF_ORDER = 108,
+  G_REGEX_ERROR_NOTHING_TO_REPEAT = 109,
+  G_REGEX_ERROR_UNRECOGNIZED_CHARACTER = 112,
+  G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS = 113,
+  G_REGEX_ERROR_UNMATCHED_PARENTHESIS = 114,
+  G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE = 115,
+  G_REGEX_ERROR_UNTERMINATED_COMMENT = 118,
+  G_REGEX_ERROR_EXPRESSION_TOO_LARGE = 120,
+  G_REGEX_ERROR_MEMORY_ERROR = 121,
+  G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND = 125,
+  G_REGEX_ERROR_MALFORMED_CONDITION = 126,
+  G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES = 127,
+  G_REGEX_ERROR_ASSERTION_EXPECTED = 128,
+  G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME = 130,
+  G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED = 131,
+  G_REGEX_ERROR_HEX_CODE_TOO_LARGE = 134,
+  G_REGEX_ERROR_INVALID_CONDITION = 135,
+  G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND = 136,
+  G_REGEX_ERROR_INFINITE_LOOP = 140,
+  G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR = 142,
+  G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME = 143,
+  G_REGEX_ERROR_MALFORMED_PROPERTY = 146,
+  G_REGEX_ERROR_UNKNOWN_PROPERTY = 147,
+  G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG = 148,
+  G_REGEX_ERROR_TOO_MANY_SUBPATTERNS = 149,
+  G_REGEX_ERROR_INVALID_OCTAL_VALUE = 151,
+  G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE = 154,
+  G_REGEX_ERROR_DEFINE_REPETION = 155,
+  G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS = 156,
+  G_REGEX_ERROR_MISSING_BACK_REFERENCE = 157,
+  G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE = 158,
+  G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN = 159,
+  G_REGEX_ERROR_UNKNOWN_BACKTRACKING_CONTROL_VERB  = 160,
+  G_REGEX_ERROR_NUMBER_TOO_BIG = 161,
+  G_REGEX_ERROR_MISSING_SUBPATTERN_NAME = 162,
+  G_REGEX_ERROR_MISSING_DIGIT = 163,
+  G_REGEX_ERROR_INVALID_DATA_CHARACTER = 164,
+  G_REGEX_ERROR_EXTRA_SUBPATTERN_NAME = 165,
+  G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED = 166,
+  G_REGEX_ERROR_INVALID_CONTROL_CHAR = 168,
+  G_REGEX_ERROR_MISSING_NAME = 169,
+  G_REGEX_ERROR_NOT_SUPPORTED_IN_CLASS = 171,
+  G_REGEX_ERROR_TOO_MANY_FORWARD_REFERENCES = 172,
+  G_REGEX_ERROR_NAME_TOO_LONG = 175,
+  G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE = 176
+} GRegexError;
+
+/**
+ * G_REGEX_ERROR:
+ *
+ * Error domain for regular expressions. Errors in this domain will be
+ * from the #GRegexError enumeration. See #GError for information on
+ * error domains.
+ *
+ * Since: 2.14
+ */
+#define G_REGEX_ERROR g_regex_error_quark ()
+
+GLIB_AVAILABLE_IN_ALL
+GQuark g_regex_error_quark (void);
+
+/**
+ * GRegexCompileFlags:
+ * @G_REGEX_CASELESS: Letters in the pattern match both upper- and
+ *     lowercase letters. This option can be changed within a pattern
+ *     by a "(?i)" option setting.
+ * @G_REGEX_MULTILINE: By default, GRegex treats the strings as consisting
+ *     of a single line of characters (even if it actually contains
+ *     newlines). The "start of line" metacharacter ("^") matches only
+ *     at the start of the string, while the "end of line" metacharacter
+ *     ("$") matches only at the end of the string, or before a terminating
+ *     newline (unless #G_REGEX_DOLLAR_ENDONLY is set). When
+ *     #G_REGEX_MULTILINE is set, the "start of line" and "end of line"
+ *     constructs match immediately following or immediately before any
+ *     newline in the string, respectively, as well as at the very start
+ *     and end. This can be changed within a pattern by a "(?m)" option
+ *     setting.
+ * @G_REGEX_DOTALL: A dot metacharater (".") in the pattern matches all
+ *     characters, including newlines. Without it, newlines are excluded.
+ *     This option can be changed within a pattern by a ("?s") option setting.
+ * @G_REGEX_EXTENDED: Whitespace data characters in the pattern are
+ *     totally ignored except when escaped or inside a character class.
+ *     Whitespace does not include the VT character (code 11). In addition,
+ *     characters between an unescaped "#" outside a character class and
+ *     the next newline character, inclusive, are also ignored. This can
+ *     be changed within a pattern by a "(?x)" option setting.
+ * @G_REGEX_ANCHORED: The pattern is forced to be "anchored", that is,
+ *     it is constrained to match only at the first matching point in the
+ *     string that is being searched. This effect can also be achieved by
+ *     appropriate constructs in the pattern itself such as the "^"
+ *     metacharater.
+ * @G_REGEX_DOLLAR_ENDONLY: A dollar metacharacter ("$") in the pattern
+ *     matches only at the end of the string. Without this option, a
+ *     dollar also matches immediately before the final character if
+ *     it is a newline (but not before any other newlines). This option
+ *     is ignored if #G_REGEX_MULTILINE is set.
+ * @G_REGEX_UNGREEDY: Inverts the "greediness" of the quantifiers so that
+ *     they are not greedy by default, but become greedy if followed by "?".
+ *     It can also be set by a "(?U)" option setting within the pattern.
+ * @G_REGEX_RAW: Usually strings must be valid UTF-8 strings, using this
+ *     flag they are considered as a raw sequence of bytes.
+ * @G_REGEX_NO_AUTO_CAPTURE: Disables the use of numbered capturing
+ *     parentheses in the pattern. Any opening parenthesis that is not
+ *     followed by "?" behaves as if it were followed by "?:" but named
+ *     parentheses can still be used for capturing (and they acquire numbers
+ *     in the usual way).
+ * @G_REGEX_OPTIMIZE: Optimize the regular expression. If the pattern will
+ *     be used many times, then it may be worth the effort to optimize it
+ *     to improve the speed of matches.
+ * @G_REGEX_FIRSTLINE: Limits an unanchored pattern to match before (or at) the
+ *     first newline. Since: 2.34
+ * @G_REGEX_DUPNAMES: Names used to identify capturing subpatterns need not
+ *     be unique. This can be helpful for certain types of pattern when it
+ *     is known that only one instance of the named subpattern can ever be
+ *     matched.
+ * @G_REGEX_NEWLINE_CR: Usually any newline character or character sequence is
+ *     recognized. If this option is set, the only recognized newline character
+ *     is '\r'.
+ * @G_REGEX_NEWLINE_LF: Usually any newline character or character sequence is
+ *     recognized. If this option is set, the only recognized newline character
+ *     is '\n'.
+ * @G_REGEX_NEWLINE_CRLF: Usually any newline character or character sequence is
+ *     recognized. If this option is set, the only recognized newline character
+ *     sequence is '\r\n'.
+ * @G_REGEX_NEWLINE_ANYCRLF: Usually any newline character or character sequence
+ *     is recognized. If this option is set, the only recognized newline character
+ *     sequences are '\r', '\n', and '\r\n'. Since: 2.34
+ * @G_REGEX_BSR_ANYCRLF: Usually any newline character or character sequence
+ *     is recognised. If this option is set, then "\R" only recognizes the newline
+ *    characters '\r', '\n' and '\r\n'. Since: 2.34
+ * @G_REGEX_JAVASCRIPT_COMPAT: Changes behaviour so that it is compatible with
+ *     JavaScript rather than PCRE. Since: 2.34
+ *
+ * Flags specifying compile-time options.
+ *
+ * Since: 2.14
+ */
+/* Remember to update G_REGEX_COMPILE_MASK in gregex.c after
+ * adding a new flag. */
+typedef enum
+{
+  G_REGEX_CASELESS          = 1 << 0,
+  G_REGEX_MULTILINE         = 1 << 1,
+  G_REGEX_DOTALL            = 1 << 2,
+  G_REGEX_EXTENDED          = 1 << 3,
+  G_REGEX_ANCHORED          = 1 << 4,
+  G_REGEX_DOLLAR_ENDONLY    = 1 << 5,
+  G_REGEX_UNGREEDY          = 1 << 9,
+  G_REGEX_RAW               = 1 << 11,
+  G_REGEX_NO_AUTO_CAPTURE   = 1 << 12,
+  G_REGEX_OPTIMIZE          = 1 << 13,
+  G_REGEX_FIRSTLINE         = 1 << 18,
+  G_REGEX_DUPNAMES          = 1 << 19,
+  G_REGEX_NEWLINE_CR        = 1 << 20,
+  G_REGEX_NEWLINE_LF        = 1 << 21,
+  G_REGEX_NEWLINE_CRLF      = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF,
+  G_REGEX_NEWLINE_ANYCRLF   = G_REGEX_NEWLINE_CR | 1 << 22,
+  G_REGEX_BSR_ANYCRLF       = 1 << 23,
+  G_REGEX_JAVASCRIPT_COMPAT = 1 << 25
+} GRegexCompileFlags;
+
+/**
+ * GRegexMatchFlags:
+ * @G_REGEX_MATCH_ANCHORED: The pattern is forced to be "anchored", that is,
+ *     it is constrained to match only at the first matching point in the
+ *     string that is being searched. This effect can also be achieved by
+ *     appropriate constructs in the pattern itself such as the "^"
+ *     metacharater.
+ * @G_REGEX_MATCH_NOTBOL: Specifies that first character of the string is
+ *     not the beginning of a line, so the circumflex metacharacter should
+ *     not match before it. Setting this without #G_REGEX_MULTILINE (at
+ *     compile time) causes circumflex never to match. This option affects
+ *     only the behaviour of the circumflex metacharacter, it does not
+ *     affect "\A".
+ * @G_REGEX_MATCH_NOTEOL: Specifies that the end of the subject string is
+ *     not the end of a line, so the dollar metacharacter should not match
+ *     it nor (except in multiline mode) a newline immediately before it.
+ *     Setting this without #G_REGEX_MULTILINE (at compile time) causes
+ *     dollar never to match. This option affects only the behaviour of
+ *     the dollar metacharacter, it does not affect "\Z" or "\z".
+ * @G_REGEX_MATCH_NOTEMPTY: An empty string is not considered to be a valid
+ *     match if this option is set. If there are alternatives in the pattern,
+ *     they are tried. If all the alternatives match the empty string, the
+ *     entire match fails. For example, if the pattern "a?b?" is applied to
+ *     a string not beginning with "a" or "b", it matches the empty string
+ *     at the start of the string. With this flag set, this match is not
+ *     valid, so GRegex searches further into the string for occurrences
+ *     of "a" or "b".
+ * @G_REGEX_MATCH_PARTIAL: Turns on the partial matching feature, for more
+ *     documentation on partial matching see g_match_info_is_partial_match().
+ * @G_REGEX_MATCH_NEWLINE_CR: Overrides the newline definition set when
+ *     creating a new #GRegex, setting the '\r' character as line terminator.
+ * @G_REGEX_MATCH_NEWLINE_LF: Overrides the newline definition set when
+ *     creating a new #GRegex, setting the '\n' character as line terminator.
+ * @G_REGEX_MATCH_NEWLINE_CRLF: Overrides the newline definition set when
+ *     creating a new #GRegex, setting the '\r\n' characters sequence as line terminator.
+ * @G_REGEX_MATCH_NEWLINE_ANY: Overrides the newline definition set when
+ *     creating a new #GRegex, any Unicode newline sequence
+ *     is recognised as a newline. These are '\r', '\n' and '\rn', and the
+ *     single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ *     U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
+ *     U+2029 PARAGRAPH SEPARATOR.
+ * @G_REGEX_MATCH_NEWLINE_ANYCRLF: Overrides the newline definition set when
+ *     creating a new #GRegex; any '\r', '\n', or '\r\n' character sequence
+ *     is recognized as a newline. Since: 2.34
+ * @G_REGEX_MATCH_BSR_ANYCRLF: Overrides the newline definition for "\R" set when
+ *     creating a new #GRegex; only '\r', '\n', or '\r\n' character sequences
+ *     are recognized as a newline by "\R". Since: 2.34
+ * @G_REGEX_MATCH_BSR_ANY: Overrides the newline definition for "\R" set when
+ *     creating a new #GRegex; any Unicode newline character or character sequence
+ *     are recognized as a newline by "\R". These are '\r', '\n' and '\rn', and the
+ *     single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ *     U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
+ *     U+2029 PARAGRAPH SEPARATOR. Since: 2.34
+ * @G_REGEX_MATCH_PARTIAL_SOFT: An alias for #G_REGEX_MATCH_PARTIAL. Since: 2.34
+ * @G_REGEX_MATCH_PARTIAL_HARD: Turns on the partial matching feature. In contrast to
+ *     to #G_REGEX_MATCH_PARTIAL_SOFT, this stops matching as soon as a partial match
+ *     is found, without continuing to search for a possible complete match. See
+ *     see g_match_info_is_partial_match() for more information. Since: 2.34
+ * @G_REGEX_MATCH_NOTEMPTY_ATSTART: Like #G_REGEX_MATCH_NOTEMPTY, but only applied to
+ *     the start of the matched string. For anchored
+ *     patterns this can only happen for pattern containing "\K". Since: 2.34
+ *
+ * Flags specifying match-time options.
+ *
+ * Since: 2.14
+ */
+/* Remember to update G_REGEX_MATCH_MASK in gregex.c after
+ * adding a new flag. */
+typedef enum
+{
+  G_REGEX_MATCH_ANCHORED         = 1 << 4,
+  G_REGEX_MATCH_NOTBOL           = 1 << 7,
+  G_REGEX_MATCH_NOTEOL           = 1 << 8,
+  G_REGEX_MATCH_NOTEMPTY         = 1 << 10,
+  G_REGEX_MATCH_PARTIAL          = 1 << 15,
+  G_REGEX_MATCH_NEWLINE_CR       = 1 << 20,
+  G_REGEX_MATCH_NEWLINE_LF       = 1 << 21,
+  G_REGEX_MATCH_NEWLINE_CRLF     = G_REGEX_MATCH_NEWLINE_CR | G_REGEX_MATCH_NEWLINE_LF,
+  G_REGEX_MATCH_NEWLINE_ANY      = 1 << 22,
+  G_REGEX_MATCH_NEWLINE_ANYCRLF  = G_REGEX_MATCH_NEWLINE_CR | G_REGEX_MATCH_NEWLINE_ANY,
+  G_REGEX_MATCH_BSR_ANYCRLF      = 1 << 23,
+  G_REGEX_MATCH_BSR_ANY          = 1 << 24,
+  G_REGEX_MATCH_PARTIAL_SOFT     = G_REGEX_MATCH_PARTIAL,
+  G_REGEX_MATCH_PARTIAL_HARD     = 1 << 27,
+  G_REGEX_MATCH_NOTEMPTY_ATSTART = 1 << 28
+} GRegexMatchFlags;
+
+/**
+ * GRegex:
+ *
+ * A GRegex is the "compiled" form of a regular expression pattern. This
+ * structure is opaque and its fields cannot be accessed directly.
+ *
+ * Since: 2.14
+ */
+typedef struct _GRegex		GRegex;
+
+
+typedef struct _GMatchInfo	GMatchInfo;
+
+/**
+ * GRegexEvalCallback:
+ * @match_info: the #GMatchInfo generated by the match.
+ *     Use g_match_info_get_regex() and g_match_info_get_string() if you
+ *     need the #GRegex or the matched string.
+ * @result: a #GString containing the new string
+ * @user_data: user data passed to g_regex_replace_eval()
+ *
+ * Specifies the type of the function passed to g_regex_replace_eval().
+ * It is called for each occurrence of the pattern in the string passed
+ * to g_regex_replace_eval(), and it should append the replacement to
+ * @result.
+ *
+ * Returns: %FALSE to continue the replacement process, %TRUE to stop it
+ *
+ * Since: 2.14
+ */
+typedef gboolean (*GRegexEvalCallback)		(const GMatchInfo *match_info,
+						 GString          *result,
+						 gpointer          user_data);
+
+
+GLIB_AVAILABLE_IN_ALL
+GRegex		 *g_regex_new			(const gchar         *pattern,
+						 GRegexCompileFlags   compile_options,
+						 GRegexMatchFlags     match_options,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+GRegex           *g_regex_ref			(GRegex              *regex);
+GLIB_AVAILABLE_IN_ALL
+void		  g_regex_unref			(GRegex              *regex);
+GLIB_AVAILABLE_IN_ALL
+const gchar	 *g_regex_get_pattern		(const GRegex        *regex);
+GLIB_AVAILABLE_IN_ALL
+gint		  g_regex_get_max_backref	(const GRegex        *regex);
+GLIB_AVAILABLE_IN_ALL
+gint		  g_regex_get_capture_count	(const GRegex        *regex);
+GLIB_AVAILABLE_IN_ALL
+gboolean          g_regex_get_has_cr_or_lf      (const GRegex        *regex);
+GLIB_AVAILABLE_IN_ALL
+gint		  g_regex_get_string_number	(const GRegex        *regex, 
+						 const gchar         *name);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_regex_escape_string		(const gchar         *string,
+						 gint                 length);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_regex_escape_nul		(const gchar         *string,
+						 gint                 length);
+
+GLIB_AVAILABLE_IN_ALL
+GRegexCompileFlags g_regex_get_compile_flags    (const GRegex        *regex);
+GLIB_AVAILABLE_IN_ALL
+GRegexMatchFlags   g_regex_get_match_flags      (const GRegex        *regex);
+
+/* Matching. */
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_match_simple		(const gchar         *pattern,
+						 const gchar         *string,
+						 GRegexCompileFlags   compile_options,
+						 GRegexMatchFlags     match_options);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_match			(const GRegex        *regex,
+						 const gchar         *string,
+						 GRegexMatchFlags     match_options,
+						 GMatchInfo         **match_info);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_match_full		(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 GRegexMatchFlags     match_options,
+						 GMatchInfo         **match_info,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_match_all		(const GRegex        *regex,
+						 const gchar         *string,
+						 GRegexMatchFlags     match_options,
+						 GMatchInfo         **match_info);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_match_all_full	(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 GRegexMatchFlags     match_options,
+						 GMatchInfo         **match_info,
+						 GError             **error);
+
+/* String splitting. */
+GLIB_AVAILABLE_IN_ALL
+gchar		**g_regex_split_simple		(const gchar         *pattern,
+						 const gchar         *string,
+						 GRegexCompileFlags   compile_options,
+						 GRegexMatchFlags     match_options);
+GLIB_AVAILABLE_IN_ALL
+gchar		**g_regex_split			(const GRegex        *regex,
+						 const gchar         *string,
+						 GRegexMatchFlags     match_options);
+GLIB_AVAILABLE_IN_ALL
+gchar		**g_regex_split_full		(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 GRegexMatchFlags     match_options,
+						 gint                 max_tokens,
+						 GError             **error);
+
+/* String replacement. */
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_regex_replace		(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 const gchar         *replacement,
+						 GRegexMatchFlags     match_options,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_regex_replace_literal	(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 const gchar         *replacement,
+						 GRegexMatchFlags     match_options,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_regex_replace_eval		(const GRegex        *regex,
+						 const gchar         *string,
+						 gssize               string_len,
+						 gint                 start_position,
+						 GRegexMatchFlags     match_options,
+						 GRegexEvalCallback   eval,
+						 gpointer             user_data,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_regex_check_replacement	(const gchar         *replacement,
+						 gboolean            *has_references,
+						 GError             **error);
+
+/* Match info */
+GLIB_AVAILABLE_IN_ALL
+GRegex		 *g_match_info_get_regex	(const GMatchInfo    *match_info);
+GLIB_AVAILABLE_IN_ALL
+const gchar      *g_match_info_get_string       (const GMatchInfo    *match_info);
+
+GLIB_AVAILABLE_IN_ALL
+GMatchInfo       *g_match_info_ref              (GMatchInfo          *match_info);
+GLIB_AVAILABLE_IN_ALL
+void              g_match_info_unref            (GMatchInfo          *match_info);
+GLIB_AVAILABLE_IN_ALL
+void		  g_match_info_free		(GMatchInfo          *match_info);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_match_info_next		(GMatchInfo          *match_info,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_match_info_matches		(const GMatchInfo    *match_info);
+GLIB_AVAILABLE_IN_ALL
+gint		  g_match_info_get_match_count	(const GMatchInfo    *match_info);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_match_info_is_partial_match	(const GMatchInfo    *match_info);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_match_info_expand_references(const GMatchInfo    *match_info,
+						 const gchar         *string_to_expand,
+						 GError             **error);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_match_info_fetch		(const GMatchInfo    *match_info,
+						 gint                 match_num);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_match_info_fetch_pos	(const GMatchInfo    *match_info,
+						 gint                 match_num,
+						 gint                *start_pos,
+						 gint                *end_pos);
+GLIB_AVAILABLE_IN_ALL
+gchar		 *g_match_info_fetch_named	(const GMatchInfo    *match_info,
+						 const gchar         *name);
+GLIB_AVAILABLE_IN_ALL
+gboolean	  g_match_info_fetch_named_pos	(const GMatchInfo    *match_info,
+						 const gchar         *name,
+						 gint                *start_pos,
+						 gint                *end_pos);
+GLIB_AVAILABLE_IN_ALL
+gchar		**g_match_info_fetch_all	(const GMatchInfo    *match_info);
+
+G_END_DECLS
+
+#endif  /*  __G_REGEX_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gscanner.h b/dist/usr/include/glib-2.0/glib/gscanner.h
new file mode 100644
index 0000000..499d6e5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gscanner.h
@@ -0,0 +1,305 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gdataset.h>
+#include <glib/ghash.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GScanner	GScanner;
+typedef struct _GScannerConfig	GScannerConfig;
+typedef union  _GTokenValue     GTokenValue;
+
+typedef void		(*GScannerMsgFunc)	(GScanner      *scanner,
+						 gchar	       *message,
+						 gboolean	error);
+
+/* GScanner: Flexible lexical scanner for general purpose.
+ */
+
+/* Character sets */
+#define G_CSET_A_2_Z	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+#define G_CSET_a_2_z	"abcdefghijklmnopqrstuvwxyz"
+#define G_CSET_DIGITS	"0123456789"
+#define G_CSET_LATINC	"\300\301\302\303\304\305\306"\
+			"\307\310\311\312\313\314\315\316\317\320"\
+			"\321\322\323\324\325\326"\
+			"\330\331\332\333\334\335\336"
+#define G_CSET_LATINS	"\337\340\341\342\343\344\345\346"\
+			"\347\350\351\352\353\354\355\356\357\360"\
+			"\361\362\363\364\365\366"\
+			"\370\371\372\373\374\375\376\377"
+
+/* Error types */
+typedef enum
+{
+  G_ERR_UNKNOWN,
+  G_ERR_UNEXP_EOF,
+  G_ERR_UNEXP_EOF_IN_STRING,
+  G_ERR_UNEXP_EOF_IN_COMMENT,
+  G_ERR_NON_DIGIT_IN_CONST,
+  G_ERR_DIGIT_RADIX,
+  G_ERR_FLOAT_RADIX,
+  G_ERR_FLOAT_MALFORMED
+} GErrorType;
+
+/* Token types */
+typedef enum
+{
+  G_TOKEN_EOF			=   0,
+  
+  G_TOKEN_LEFT_PAREN		= '(',
+  G_TOKEN_RIGHT_PAREN		= ')',
+  G_TOKEN_LEFT_CURLY		= '{',
+  G_TOKEN_RIGHT_CURLY		= '}',
+  G_TOKEN_LEFT_BRACE		= '[',
+  G_TOKEN_RIGHT_BRACE		= ']',
+  G_TOKEN_EQUAL_SIGN		= '=',
+  G_TOKEN_COMMA			= ',',
+  
+  G_TOKEN_NONE			= 256,
+  
+  G_TOKEN_ERROR,
+  
+  G_TOKEN_CHAR,
+  G_TOKEN_BINARY,
+  G_TOKEN_OCTAL,
+  G_TOKEN_INT,
+  G_TOKEN_HEX,
+  G_TOKEN_FLOAT,
+  G_TOKEN_STRING,
+  
+  G_TOKEN_SYMBOL,
+  G_TOKEN_IDENTIFIER,
+  G_TOKEN_IDENTIFIER_NULL,
+  
+  G_TOKEN_COMMENT_SINGLE,
+  G_TOKEN_COMMENT_MULTI,
+
+  /*< private >*/
+  G_TOKEN_LAST
+} GTokenType;
+
+union	_GTokenValue
+{
+  gpointer	v_symbol;
+  gchar		*v_identifier;
+  gulong	v_binary;
+  gulong	v_octal;
+  gulong	v_int;
+  guint64       v_int64;
+  gdouble	v_float;
+  gulong	v_hex;
+  gchar		*v_string;
+  gchar		*v_comment;
+  guchar	v_char;
+  guint		v_error;
+};
+
+struct	_GScannerConfig
+{
+  /* Character sets
+   */
+  gchar		*cset_skip_characters;		/* default: " \t\n" */
+  gchar		*cset_identifier_first;
+  gchar		*cset_identifier_nth;
+  gchar		*cpair_comment_single;		/* default: "#\n" */
+  
+  /* Should symbol lookup work case sensitive?
+   */
+  guint		case_sensitive : 1;
+  
+  /* Boolean values to be adjusted "on the fly"
+   * to configure scanning behaviour.
+   */
+  guint		skip_comment_multi : 1;		/* C like comment */
+  guint		skip_comment_single : 1;	/* single line comment */
+  guint		scan_comment_multi : 1;		/* scan multi line comments? */
+  guint		scan_identifier : 1;
+  guint		scan_identifier_1char : 1;
+  guint		scan_identifier_NULL : 1;
+  guint		scan_symbols : 1;
+  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_string_sq : 1;		/* string: 'anything' */
+  guint		scan_string_dq : 1;		/* string: "\\-escapes!\n" */
+  guint		numbers_2_int : 1;		/* bin, octal, hex => int */
+  guint		int_2_float : 1;		/* int => G_TOKEN_FLOAT? */
+  guint		identifier_2_string : 1;
+  guint		char_2_token : 1;		/* return G_TOKEN_CHAR? */
+  guint		symbol_2_token : 1;
+  guint		scope_0_fallback : 1;		/* try scope 0 on lookups? */
+  guint		store_int64 : 1; 		/* use value.v_int64 rather than v_int */
+
+  /*< private >*/
+  guint		padding_dummy;
+};
+
+struct	_GScanner
+{
+  /* unused fields */
+  gpointer		user_data;
+  guint			max_parse_errors;
+  
+  /* g_scanner_error() increments this field */
+  guint			parse_errors;
+  
+  /* name of input stream, featured by the default message handler */
+  const gchar		*input_name;
+  
+  /* quarked data */
+  GData			*qdata;
+  
+  /* link into the scanner configuration */
+  GScannerConfig	*config;
+  
+  /* fields filled in after g_scanner_get_next_token() */
+  GTokenType		token;
+  GTokenValue		value;
+  guint			line;
+  guint			position;
+  
+  /* fields filled in after g_scanner_peek_next_token() */
+  GTokenType		next_token;
+  GTokenValue		next_value;
+  guint			next_line;
+  guint			next_position;
+
+  /*< private >*/
+  /* to be considered private */
+  GHashTable		*symbol_table;
+  gint			input_fd;
+  const gchar		*text;
+  const gchar		*text_end;
+  gchar			*buffer;
+  guint			scope_id;
+
+  /*< public >*/
+  /* handler function for _warn and _error */
+  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,
+						 const gchar	*symbol_spec,
+						 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);
+
+#ifndef G_DISABLE_DEPRECATED
+
+/* keep downward source compatibility */
+#define		g_scanner_add_symbol( scanner, symbol, value )	G_STMT_START { \
+  g_scanner_scope_add_symbol ((scanner), 0, (symbol), (value)); \
+} G_STMT_END
+#define		g_scanner_remove_symbol( scanner, symbol )	G_STMT_START { \
+  g_scanner_scope_remove_symbol ((scanner), 0, (symbol)); \
+} G_STMT_END
+#define		g_scanner_foreach_symbol( scanner, func, data )	G_STMT_START { \
+  g_scanner_scope_foreach_symbol ((scanner), 0, (func), (data)); \
+} G_STMT_END
+
+/* The following two functions are deprecated and will be removed in
+ * the next major release. They do no good. */
+#define g_scanner_freeze_symbol_table(scanner) ((void)0)
+#define g_scanner_thaw_symbol_table(scanner) ((void)0)
+
+#endif /* G_DISABLE_DEPRECATED */
+
+G_END_DECLS
+
+#endif /* __G_SCANNER_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gsequence.h b/dist/usr/include/glib-2.0/glib/gsequence.h
new file mode 100644
index 0000000..81d06a2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gsequence.h
@@ -0,0 +1,173 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ * Soeren Sandmann (sandmann@daimi.au.dk)
+ *
+ * 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_SEQUENCE_H__
+#define __G_SEQUENCE_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GSequence      GSequence;
+typedef struct _GSequenceNode  GSequenceIter;
+
+typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a,
+                                           GSequenceIter *b,
+                                           gpointer       data);
+
+
+/* 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,
+                                              gpointer                  cmp_data);
+
+
+/* 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);
+
+G_END_DECLS
+
+#endif /* __G_SEQUENCE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gshell.h b/dist/usr/include/glib-2.0/glib/gshell.h
new file mode 100644
index 0000000..cff6c5c
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gshell.h
@@ -0,0 +1,59 @@
+/* gshell.h - Shell-related utilities
+ *
+ *  Copyright 2000 Red Hat, Inc.
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not, write
+ * to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * 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
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+#define G_SHELL_ERROR g_shell_error_quark ()
+
+typedef enum
+{
+  /* mismatched or otherwise mangled quoting */
+  G_SHELL_ERROR_BAD_QUOTING,
+  /* string to be parsed was empty */
+  G_SHELL_ERROR_EMPTY_STRING,
+  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,
+                             GError       **error);
+
+G_END_DECLS
+
+#endif /* __G_SHELL_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gslice.h b/dist/usr/include/glib-2.0/glib/gslice.h
new file mode 100644
index 0000000..e1b6686
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gslice.h
@@ -0,0 +1,100 @@
+/* GLIB sliced memory - fast threaded memory chunk allocator
+ * Copyright (C) 2005 Tim Janik
+ *
+ * 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_SLICE_H__
+#define __G_SLICE_H__
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#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);
+#define  g_slice_new(type)      ((type*) g_slice_alloc (sizeof (type)))
+#define  g_slice_new0(type)     ((type*) g_slice_alloc0 (sizeof (type)))
+/* MemoryBlockType *
+ *       g_slice_dup                    (MemoryBlockType,
+ *	                                 MemoryBlockType *mem_block);
+ *       g_slice_free                   (MemoryBlockType,
+ *	                                 MemoryBlockType *mem_block);
+ *       g_slice_free_chain             (MemoryBlockType,
+ *                                       MemoryBlockType *first_chain_block,
+ *                                       memory_block_next_field);
+ * pseudo prototypes for the macro
+ * definitions following below.
+ */
+
+/* we go through extra hoops to ensure type safety */
+#define g_slice_dup(type, mem)                                  \
+  (1 ? (type*) g_slice_copy (sizeof (type), (mem))              \
+     : ((void) ((type*) 0 == (mem)), (type*) 0))
+#define g_slice_free(type, mem)				do {	\
+  if (1) g_slice_free1 (sizeof (type), (mem));			\
+  else   (void) ((type*) 0 == (mem)); 				\
+} while (0)
+#define g_slice_free_chain(type, mem_chain, next)	do {	\
+  if (1) g_slice_free_chain_with_offset (sizeof (type),		\
+                 (mem_chain), G_STRUCT_OFFSET (type, next)); 	\
+  else   (void) ((type*) 0 == (mem_chain));			\
+} while (0)
+
+
+/* --- internal debugging API --- */
+typedef enum {
+  G_SLICE_CONFIG_ALWAYS_MALLOC = 1,
+  G_SLICE_CONFIG_BYPASS_MAGAZINES,
+  G_SLICE_CONFIG_WORKING_SET_MSECS,
+  G_SLICE_CONFIG_COLOR_INCREMENT,
+  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/dist/usr/include/glib-2.0/glib/gslist.h b/dist/usr/include/glib-2.0/glib/gslist.h
new file mode 100644
index 0000000..55b91c6
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gslist.h
@@ -0,0 +1,145 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gmem.h>
+#include <glib/gnode.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GSList GSList;
+
+struct _GSList
+{
+  gpointer data;
+  GSList *next;
+};
+
+/* 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);
+
+#define  g_slist_next(slist)	         ((slist) ? (((GSList *)(slist))->next) : NULL)
+
+G_END_DECLS
+
+#endif /* __G_SLIST_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gspawn.h b/dist/usr/include/glib-2.0/glib/gspawn.h
new file mode 100644
index 0000000..24bd521
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gspawn.h
@@ -0,0 +1,305 @@
+/* gspawn.h - Process launching
+ *
+ *  Copyright 2000 Red Hat, Inc.
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not, write
+ * to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * 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
+
+#include <glib/gerror.h>
+
+G_BEGIN_DECLS
+
+
+/* I'm not sure I remember our proposed naming convention here. */
+/**
+ * G_SPAWN_ERROR:
+ *
+ * Error domain for spawning processes. Errors in this domain will
+ * be from the #GSpawnError enumeration. See #GError for information on
+ * error domains.
+ */
+#define G_SPAWN_ERROR g_spawn_error_quark ()
+
+/**
+ * GSpawnError:
+ * @G_SPAWN_ERROR_FORK: Fork failed due to lack of memory.
+ * @G_SPAWN_ERROR_READ: Read or select on pipes failed.
+ * @G_SPAWN_ERROR_CHDIR: Changing to working directory failed.
+ * @G_SPAWN_ERROR_ACCES: execv() returned <literal>EACCES</literal>
+ * @G_SPAWN_ERROR_PERM: execv() returned <literal>EPERM</literal>
+ * @G_SPAWN_ERROR_TOO_BIG: execv() returned <literal>E2BIG</literal>
+ * @G_SPAWN_ERROR_2BIG: deprecated alias for %G_SPAWN_ERROR_TOO_BIG
+ * @G_SPAWN_ERROR_NOEXEC: execv() returned <literal>ENOEXEC</literal>
+ * @G_SPAWN_ERROR_NAMETOOLONG: execv() returned <literal>ENAMETOOLONG</literal>
+ * @G_SPAWN_ERROR_NOENT: execv() returned <literal>ENOENT</literal>
+ * @G_SPAWN_ERROR_NOMEM: execv() returned <literal>ENOMEM</literal>
+ * @G_SPAWN_ERROR_NOTDIR: execv() returned <literal>ENOTDIR</literal>
+ * @G_SPAWN_ERROR_LOOP: execv() returned <literal>ELOOP</literal>
+ * @G_SPAWN_ERROR_TXTBUSY: execv() returned <literal>ETXTBUSY</literal>
+ * @G_SPAWN_ERROR_IO: execv() returned <literal>EIO</literal>
+ * @G_SPAWN_ERROR_NFILE: execv() returned <literal>ENFILE</literal>
+ * @G_SPAWN_ERROR_MFILE: execv() returned <literal>EMFILE</literal>
+ * @G_SPAWN_ERROR_INVAL: execv() returned <literal>EINVAL</literal>
+ * @G_SPAWN_ERROR_ISDIR: execv() returned <literal>EISDIR</literal>
+ * @G_SPAWN_ERROR_LIBBAD: execv() returned <literal>ELIBBAD</literal>
+ * @G_SPAWN_ERROR_FAILED: Some other fatal failure,
+ *   <literal>error-&gt;message</literal> should explain.
+ *
+ * Error codes returned by spawning processes.
+ */
+typedef enum
+{
+  G_SPAWN_ERROR_FORK,   /* fork failed due to lack of memory */
+  G_SPAWN_ERROR_READ,   /* read or select on pipes failed */
+  G_SPAWN_ERROR_CHDIR,  /* changing to working dir failed */
+  G_SPAWN_ERROR_ACCES,  /* execv() returned EACCES */
+  G_SPAWN_ERROR_PERM,   /* execv() returned EPERM */
+  G_SPAWN_ERROR_TOO_BIG,/* execv() returned E2BIG */
+#ifndef G_DISABLE_DEPRECATED
+  G_SPAWN_ERROR_2BIG = G_SPAWN_ERROR_TOO_BIG,
+#endif
+  G_SPAWN_ERROR_NOEXEC, /* execv() returned ENOEXEC */
+  G_SPAWN_ERROR_NAMETOOLONG, /* ""  "" ENAMETOOLONG */
+  G_SPAWN_ERROR_NOENT,       /* ""  "" ENOENT */
+  G_SPAWN_ERROR_NOMEM,       /* ""  "" ENOMEM */
+  G_SPAWN_ERROR_NOTDIR,      /* ""  "" ENOTDIR */
+  G_SPAWN_ERROR_LOOP,        /* ""  "" ELOOP   */
+  G_SPAWN_ERROR_TXTBUSY,     /* ""  "" ETXTBUSY */
+  G_SPAWN_ERROR_IO,          /* ""  "" EIO */
+  G_SPAWN_ERROR_NFILE,       /* ""  "" ENFILE */
+  G_SPAWN_ERROR_MFILE,       /* ""  "" EMFLE */
+  G_SPAWN_ERROR_INVAL,       /* ""  "" EINVAL */
+  G_SPAWN_ERROR_ISDIR,       /* ""  "" EISDIR */
+  G_SPAWN_ERROR_LIBBAD,      /* ""  "" ELIBBAD */
+  G_SPAWN_ERROR_FAILED       /* other fatal failure, error->message
+                              * should explain
+                              */
+} 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.
+ *
+ * Specifies the type of the setup function passed to g_spawn_async(),
+ * g_spawn_sync() and g_spawn_async_with_pipes(), which can, in very
+ * limited ways, be used to affect the child's execution.
+ *
+ * On POSIX platforms, the function is called in the child after GLib
+ * has performed all the setup it plans to perform, but before calling
+ * exec(). Actions taken in this function will only affect the child,
+ * not the parent.
+ *
+ * On Windows, the function is called in the parent. Its usefulness on
+ * Windows is thus questionable. In many cases executing the child setup
+ * function in the parent can have ill effects, and you should be very
+ * careful when porting software to Windows that uses child setup
+ * functions.
+ *
+ * However, even on POSIX, you are extremely limited in what you can
+ * safely do from a #GSpawnChildSetupFunc, because any mutexes that
+ * were held by other threads in the parent process at the time of the
+ * fork() will still be locked in the child process, and they will
+ * never be unlocked (since the threads that held them don't exist in
+ * the child). POSIX allows only async-signal-safe functions (see
+ * <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>)
+ * to be called in the child between fork() and exec(), which
+ * drastically limits the usefulness of child setup functions.
+ *
+ * In particular, it is not safe to call any function which may
+ * call malloc(), which includes POSIX functions such as setenv().
+ * If you need to set up the child environment differently from
+ * the parent, you should use g_get_environ(), g_environ_setenv(),
+ * and g_environ_unsetenv(), and then pass the complete environment
+ * list to the <literal>g_spawn...</literal> function.
+ */
+typedef void (* GSpawnChildSetupFunc) (gpointer user_data);
+
+/**
+ * GSpawnFlags:
+ * @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.
+ * @G_SPAWN_DO_NOT_REAP_CHILD: the child will not be automatically reaped; you
+ *   must use g_child_watch_add() yourself (or call waitpid()
+ *   or handle <literal>SIGCHLD</literal> yourself), or the child will become a zombie.
+ * @G_SPAWN_SEARCH_PATH: <literal>argv[0]</literal> need not be an absolute path,
+ *   it will be looked for in the user's <envar>PATH</envar>.
+ * @G_SPAWN_STDOUT_TO_DEV_NULL: the child's standard output will be discarded,
+ *   instead of going to the same location as the parent's standard output.
+ * @G_SPAWN_STDERR_TO_DEV_NULL: the child's standard error will be discarded.
+ * @G_SPAWN_CHILD_INHERITS_STDIN: the child will inherit the parent's standard
+ *   input (by default, the child's standard input is attached to
+ *   <filename>/dev/null</filename>).
+ * @G_SPAWN_FILE_AND_ARGV_ZERO: the first element of <literal>argv</literal> is
+ *   the file to execute, while the remaining elements are the actual argument
+ *   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_LEAVE_DESCRIPTORS_OPEN = 1 << 0,
+  G_SPAWN_DO_NOT_REAP_CHILD      = 1 << 1,
+  /* look for argv[0] in the path i.e. use execvp() */
+  G_SPAWN_SEARCH_PATH            = 1 << 2,
+  /* Dump output to /dev/null */
+  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_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);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_spawn_async (const gchar           *working_directory,
+                        gchar                **argv,
+                        gchar                **envp,
+                        GSpawnFlags            flags,
+                        GSpawnChildSetupFunc   child_setup,
+                        gpointer               user_data,
+                        GPid                  *child_pid,
+                        GError               **error);
+
+
+/* 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,
+                                   GSpawnFlags           flags,
+                                   GSpawnChildSetupFunc  child_setup,
+                                   gpointer              user_data,
+                                   GPid                 *child_pid,
+                                   gint                 *standard_input,
+                                   gint                 *standard_output,
+                                   gint                 *standard_error,
+                                   GError              **error);
+
+
+/* If standard_output or standard_error are non-NULL, the full
+ * 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,
+                               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  (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/dist/usr/include/glib-2.0/glib/gstdio.h b/dist/usr/include/glib-2.0/glib/gstdio.h
new file mode 100644
index 0000000..90ee74e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gstdio.h
@@ -0,0 +1,172 @@
+/* gstdio.h - GFilename wrappers for C library functions
+ *
+ * Copyright 2004 Tor Lillqvist
+ *
+ * GLib 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.
+ *
+ * GLib 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 GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __G_STDIO_H__
+#define __G_STDIO_H__
+
+#include <glib/gprintf.h>
+
+#include <sys/stat.h>
+
+G_BEGIN_DECLS
+
+#if defined (_MSC_VER) && !defined(_WIN64)
+
+/* Make it clear that we mean the struct with 32-bit st_size and
+ * 32-bit st_*time fields as that is how the 32-bit GLib DLL normally
+ * has been compiled. If you get a compiler warning when calling
+ * g_stat(), do take it seriously and make sure that the type of
+ * struct stat the code in GLib fills in matches the struct the type
+ * of struct stat you pass to g_stat(). To avoid hassle, to get file
+ * attributes just use the GIO API instead which doesn't use struct
+ * stat.
+ *
+ * Sure, it would be nicer to use a struct with 64-bit st_size and
+ * 64-bit st_*time fields, but changing that now would break ABI. And
+ * in MinGW, a plain "struct stat" is the one with 32-bit st_size and
+ * st_*time fields.
+ */
+
+typedef struct _stat32 GStatBuf;
+
+#else
+
+typedef struct stat GStatBuf;
+
+#endif
+
+#if defined(G_OS_UNIX) && !defined(G_STDIO_NO_WRAP_ON_UNIX)
+
+/* Just pass on to the system functions, so there's no potential for data
+ * format mismatches, especially with large file interfaces. 
+ * A few functions can't be handled in this way, since they are not defined
+ * in a portable system header that we could include here.
+ */
+
+#ifndef __GTK_DOC_IGNORE__
+#define g_chmod   chmod
+#define g_open    open
+#define g_creat   creat
+#define g_rename  rename
+#define g_mkdir   mkdir
+#define g_stat    stat
+#define g_lstat   lstat
+#define g_remove  remove
+#define g_fopen   fopen
+#define g_freopen freopen
+#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 */
+
+/* Wrappers for C library functions that take pathname arguments. On
+ * Unix, the pathname is a file name as it literally is in the file
+ * system. On well-maintained systems with consistent users who know
+ * what they are doing and no exchange of files with others this would
+ * be a well-defined encoding, preferably UTF-8. On Windows, the
+ * pathname is always in UTF-8, even if that is not the on-disk
+ * encoding, and not the encoding accepted by the C library or Win32
+ * 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);
+
+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/dist/usr/include/glib-2.0/glib/gstrfuncs.h b/dist/usr/include/glib-2.0/glib/gstrfuncs.h
new file mode 100644
index 0000000..510623a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gstrfuncs.h
@@ -0,0 +1,293 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <stdarg.h>
+#include <glib/gmacros.h>
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/* Functions like the ones in <ctype.h> that are not affected by locale. */
+typedef enum {
+  G_ASCII_ALNUM  = 1 << 0,
+  G_ASCII_ALPHA  = 1 << 1,
+  G_ASCII_CNTRL  = 1 << 2,
+  G_ASCII_DIGIT  = 1 << 3,
+  G_ASCII_GRAPH  = 1 << 4,
+  G_ASCII_LOWER  = 1 << 5,
+  G_ASCII_PRINT  = 1 << 6,
+  G_ASCII_PUNCT  = 1 << 7,
+  G_ASCII_SPACE  = 1 << 8,
+  G_ASCII_UPPER  = 1 << 9,
+  G_ASCII_XDIGIT = 1 << 10
+} GAsciiType;
+
+GLIB_VAR const guint16 * const g_ascii_table;
+
+#define g_ascii_isalnum(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_ALNUM) != 0)
+
+#define g_ascii_isalpha(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_ALPHA) != 0)
+
+#define g_ascii_iscntrl(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_CNTRL) != 0)
+
+#define g_ascii_isdigit(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_DIGIT) != 0)
+
+#define g_ascii_isgraph(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_GRAPH) != 0)
+
+#define g_ascii_islower(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_LOWER) != 0)
+
+#define g_ascii_isprint(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_PRINT) != 0)
+
+#define g_ascii_ispunct(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_PUNCT) != 0)
+
+#define g_ascii_isspace(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_SPACE) != 0)
+
+#define g_ascii_isupper(c) \
+  ((g_ascii_table[(guchar) (c)] & G_ASCII_UPPER) != 0)
+
+#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);
+/* 29 bytes should enough for all possible values that
+ * 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;
+
+
+GLIB_DEPRECATED
+gint                  g_strcasecmp     (const gchar *s1,
+                                        const gchar *s2);
+GLIB_DEPRECATED
+gint                  g_strncasecmp    (const gchar *s1,
+                                        const gchar *s2,
+                                        guint        n);
+GLIB_DEPRECATED
+gchar*                g_strdown        (gchar       *string);
+GLIB_DEPRECATED
+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_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;
+
+/* Make a copy of a string interpreting C string -style escape
+ * 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.
+ * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points
+ * to a string containing characters that are not to be escaped.
+ *
+ * Deprecated API: gchar* g_strescape (const gchar *source);
+ * 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);
+
+/* NULL terminated string arrays.
+ * g_strsplit(), g_strsplit_set() split up string into max_tokens tokens
+ * at delim and return a newly allocated string array.
+ * g_strjoinv() concatenates all of str_array's strings, sliding in an
+ * optional separator, the returned string is newly allocated.
+ * g_strfreev() frees the array itself and all of its strings.
+ * 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);
+
+G_END_DECLS
+
+#endif /* __G_STRFUNCS_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gstring.h b/dist/usr/include/glib-2.0/glib/gstring.h
new file mode 100644
index 0000000..0cbba5d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gstring.h
@@ -0,0 +1,191 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+#include <glib/gunicode.h>
+#include <glib/gbytes.h>
+#include <glib/gutils.h>  /* for G_CAN_INLINE */
+
+G_BEGIN_DECLS
+
+typedef struct _GString         GString;
+
+struct _GString
+{
+  gchar  *str;
+  gsize len;
+  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)
+                                         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)
+                                         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,
+                                          gboolean         allow_utf8);
+
+/* -- optimize g_strig_append_c --- */
+#ifdef G_CAN_INLINE
+static inline GString*
+g_string_append_c_inline (GString *gstring,
+                          gchar    c)
+{
+  if (gstring->len + 1 < gstring->allocated_len)
+    {
+      gstring->str[gstring->len++] = c;
+      gstring->str[gstring->len] = 0;
+    }
+  else
+    g_string_insert_c (gstring, -1, c);
+  return gstring;
+}
+#define g_string_append_c(gstr,c)       g_string_append_c_inline (gstr, c)
+#endif /* G_CAN_INLINE */
+
+
+GLIB_DEPRECATED
+GString *g_string_down (GString *string);
+GLIB_DEPRECATED
+GString *g_string_up   (GString *string);
+
+#ifndef G_DISABLE_DEPRECATED
+#define  g_string_sprintf  g_string_printf
+#define  g_string_sprintfa g_string_append_printf
+#endif
+
+G_END_DECLS
+
+#endif /* __G_STRING_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gstringchunk.h b/dist/usr/include/glib-2.0/glib/gstringchunk.h
new file mode 100644
index 0000000..79848e1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gstringchunk.h
@@ -0,0 +1,59 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#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);
+
+G_END_DECLS
+
+#endif /* __G_STRING_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtestutils.h b/dist/usr/include/glib-2.0/glib/gtestutils.h
new file mode 100644
index 0000000..63e3b74
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtestutils.h
@@ -0,0 +1,396 @@
+/* GLib testing utilities
+ * Copyright (C) 2007 Imendio AB
+ * Authors: Tim Janik
+ *
+ * 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_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
+
+#include <glib/gmessages.h>
+#include <glib/gstring.h>
+#include <glib/gerror.h>
+#include <glib/gslist.h>
+
+G_BEGIN_DECLS
+
+typedef struct GTestCase  GTestCase;
+typedef struct GTestSuite GTestSuite;
+typedef void (*GTestFunc)        (void);
+typedef void (*GTestDataFunc)    (gconstpointer user_data);
+typedef void (*GTestFixtureFunc) (gpointer      fixture,
+                                  gconstpointer user_data);
+
+/* assertion API */
+#define g_assert_cmpstr(s1, cmp, s2)    do { const char *__s1 = (s1), *__s2 = (s2); \
+                                             if (g_strcmp0 (__s1, __s2) cmp 0) ; else \
+                                               g_assertion_message_cmpstr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #s1 " " #cmp " " #s2, __s1, #cmp, __s2); } while (0)
+#define g_assert_cmpint(n1, cmp, n2)    do { gint64 __n1 = (n1), __n2 = (n2); \
+                                             if (__n1 cmp __n2) ; else \
+                                               g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'i'); } while (0)
+#define g_assert_cmpuint(n1, cmp, n2)   do { guint64 __n1 = (n1), __n2 = (n2); \
+                                             if (__n1 cmp __n2) ; else \
+                                               g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'i'); } while (0)
+#define g_assert_cmphex(n1, cmp, n2)    do { guint64 __n1 = (n1), __n2 = (n2); \
+                                             if (__n1 cmp __n2) ; else \
+                                               g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'x'); } while (0)
+#define g_assert_cmpfloat(n1,cmp,n2)    do { long double __n1 = (n1), __n2 = (n2); \
+                                             if (__n1 cmp __n2) ; else \
+                                               g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'f'); } while (0)
+#define g_assert_no_error(err)          do { if (err) \
+                                               g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #err, err, 0, 0); } while (0)
+#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)
+#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(expr)                  do { if G_LIKELY (expr) ; else \
+                                               g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
+                                                 #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)
+#define g_test_perf()                   (g_test_config_vars->test_perf)
+#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);
+
+/* hook up a test with fixture under test path */
+#define g_test_add(testpath, Fixture, tdata, fsetup, ftest, fteardown) \
+					G_STMT_START {			\
+                                         void (*add_vtable) (const char*,       \
+                                                    gsize,             \
+                                                    gconstpointer,     \
+                                                    void (*) (Fixture*, gconstpointer),   \
+                                                    void (*) (Fixture*, gconstpointer),   \
+                                                    void (*) (Fixture*, gconstpointer)) =  (void (*) (const gchar *, gsize, gconstpointer, void (*) (Fixture*, gconstpointer), void (*) (Fixture*, gconstpointer), void (*) (Fixture*, gconstpointer))) g_test_add_vtable; \
+                                         add_vtable \
+                                          (testpath, sizeof (Fixture), tdata, fsetup, ftest, fteardown); \
+					} 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)
+
+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)
+#define  g_test_trap_assert_stdout(soutpattern)           g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 2, soutpattern)
+#define  g_test_trap_assert_stdout_unmatched(soutpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 3, soutpattern)
+#define  g_test_trap_assert_stderr(serrpattern)           g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 4, serrpattern)
+#define  g_test_trap_assert_stderr_unmatched(serrpattern) g_test_trap_assertions (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, 5, serrpattern)
+
+/* 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;
+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,
+                                         const char     *func,
+                                         const char     *expr,
+                                         const char     *arg1,
+                                         const char     *cmp,
+                                         const char     *arg2) G_GNUC_NORETURN;
+GLIB_AVAILABLE_IN_ALL
+void    g_assertion_message_cmpnum      (const char     *domain,
+                                         const char     *file,
+                                         int             line,
+                                         const char     *func,
+                                         const char     *expr,
+                                         long double     arg1,
+                                         const char     *cmp,
+                                         long double     arg2,
+                                         char            numtype) G_GNUC_NORETURN;
+GLIB_AVAILABLE_IN_ALL
+void    g_assertion_message_error       (const char     *domain,
+                                         const char     *file,
+                                         int             line,
+                                         const char     *func,
+                                         const char     *expr,
+                                         const GError   *error,
+                                         GQuark          error_domain,
+                                         int             error_code) G_GNUC_NORETURN;
+GLIB_AVAILABLE_IN_ALL
+void    g_test_add_vtable               (const char     *testpath,
+                                         gsize           data_size,
+                                         gconstpointer   test_data,
+                                         GTestFixtureFunc  data_setup,
+                                         GTestFixtureFunc  data_test,
+                                         GTestFixtureFunc  data_teardown);
+typedef struct {
+  gboolean      test_initialized;
+  gboolean      test_quick;     /* disable thorough tests */
+  gboolean      test_perf;      /* run performance tests */
+  gboolean      test_verbose;   /* extra info */
+  gboolean      test_quiet;     /* reduce output */
+  gboolean      test_undefined; /* run tests that are meant to assert */
+} GTestConfig;
+GLIB_VAR const GTestConfig * const g_test_config_vars;
+
+/* internal logging API */
+typedef enum {
+  G_TEST_LOG_NONE,
+  G_TEST_LOG_ERROR,             /* s:msg */
+  G_TEST_LOG_START_BINARY,      /* s:binaryname s:seed */
+  G_TEST_LOG_LIST_CASE,         /* s:testpath */
+  G_TEST_LOG_SKIP_CASE,         /* s:testpath */
+  G_TEST_LOG_START_CASE,        /* s:testpath */
+  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 */
+} GTestLogType;
+
+typedef struct {
+  GTestLogType  log_type;
+  guint         n_strings;
+  gchar       **strings; /* NULL terminated */
+  guint         n_nums;
+  long double  *nums;
+} GTestLogMsg;
+typedef struct {
+  /*< private >*/
+  GString     *data;
+  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);
+
+/**
+ * GTestLogFatalFunc:
+ * @log_domain: the log domain of the message
+ * @log_level: the log level of the message (including the fatal and recursion flags)
+ * @message: the message to process
+ * @user_data: user data, set in g_test_log_set_fatal_handler()
+ *
+ * Specifies the prototype of fatal log handler functions.
+ *
+ * Return value: %TRUE if the program should abort, %FALSE otherwise
+ *
+ * Since: 2.22
+ */
+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/dist/usr/include/glib-2.0/glib/gthread.h b/dist/usr/include/glib-2.0/glib/gthread.h
new file mode 100644
index 0000000..43c7891
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gthread.h
@@ -0,0 +1,273 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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
+ * licence, 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/.
+ */
+
+#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
+
+#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
+{
+  G_THREAD_ERROR_AGAIN /* Resource temporarily unavailable */
+} GThreadError;
+
+typedef gpointer (*GThreadFunc) (gpointer data);
+
+typedef struct _GThread         GThread;
+
+typedef union  _GMutex          GMutex;
+typedef struct _GRecMutex       GRecMutex;
+typedef struct _GRWLock         GRWLock;
+typedef struct _GCond           GCond;
+typedef struct _GPrivate        GPrivate;
+typedef struct _GOnce           GOnce;
+
+union _GMutex
+{
+  /*< private >*/
+  gpointer p;
+  guint i[2];
+};
+
+struct _GRWLock
+{
+  /*< private >*/
+  gpointer p;
+  guint i[2];
+};
+
+struct _GCond
+{
+  /*< private >*/
+  gpointer p;
+  guint i[2];
+};
+
+struct _GRecMutex
+{
+  /*< private >*/
+  gpointer p;
+  guint i[2];
+};
+
+#define G_PRIVATE_INIT(notify) { NULL, (notify), { NULL, NULL } }
+struct _GPrivate
+{
+  /*< private >*/
+  gpointer       p;
+  GDestroyNotify notify;
+  gpointer future[2];
+};
+
+typedef enum
+{
+  G_ONCE_STATUS_NOTCALLED,
+  G_ONCE_STATUS_PROGRESS,
+  G_ONCE_STATUS_READY
+} GOnceStatus;
+
+#define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL }
+struct _GOnce
+{
+  volatile GOnceStatus status;
+  volatile gpointer retval;
+};
+
+#define G_LOCK_NAME(name)             g__ ## name ## _lock
+#define G_LOCK_DEFINE_STATIC(name)    static G_LOCK_DEFINE (name)
+#define G_LOCK_DEFINE(name)           GMutex G_LOCK_NAME (name)
+#define G_LOCK_EXTERN(name)           extern GMutex G_LOCK_NAME (name)
+
+#ifdef G_DEBUG_LOCKS
+#  define G_LOCK(name)                G_STMT_START{             \
+      g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                   \
+             "file %s: line %d (%s): locking: %s ",             \
+             __FILE__,        __LINE__, G_STRFUNC,              \
+             #name);                                            \
+      g_mutex_lock (&G_LOCK_NAME (name));                       \
+   }G_STMT_END
+#  define G_UNLOCK(name)              G_STMT_START{             \
+      g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                   \
+             "file %s: line %d (%s): unlocking: %s ",           \
+             __FILE__,        __LINE__, G_STRFUNC,              \
+             #name);                                            \
+     g_mutex_unlock (&G_LOCK_NAME (name));                      \
+   }G_STMT_END
+#  define G_TRYLOCK(name)                                       \
+      (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                  \
+             "file %s: line %d (%s): try locking: %s ",         \
+             __FILE__,        __LINE__, G_STRFUNC,              \
+             #name), g_mutex_trylock (&G_LOCK_NAME (name)))
+#else  /* !G_DEBUG_LOCKS */
+#  define G_LOCK(name) g_mutex_lock       (&G_LOCK_NAME (name))
+#  define G_UNLOCK(name) g_mutex_unlock   (&G_LOCK_NAME (name))
+#  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);
+
+#ifdef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
+# define g_once(once, func, arg) g_once_impl ((once), (func), (arg))
+#else /* !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED*/
+# define g_once(once, func, arg) \
+  (((once)->status == G_ONCE_STATUS_READY) ? \
+   (once)->retval : \
+   g_once_impl ((once), (func), (arg)))
+#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
+
+#ifdef __GNUC__
+# define g_once_init_enter(location) \
+  (G_GNUC_EXTENSION ({                                               \
+    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
+    (void) (0 ? (gpointer) *(location) : 0);                         \
+    (!g_atomic_pointer_get (location) &&                             \
+     g_once_init_enter (location));                                  \
+  }))
+# define g_once_init_leave(location, result) \
+  (G_GNUC_EXTENSION ({                                               \
+    G_STATIC_ASSERT (sizeof *(location) == sizeof (gpointer));       \
+    (void) (0 ? *(location) = (result) : 0);                         \
+    g_once_init_leave ((location), (gsize) (result));                \
+  }))
+#else
+# define g_once_init_enter(location) \
+  (g_once_init_enter((location)))
+# define g_once_init_leave(location, result) \
+  (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/dist/usr/include/glib-2.0/glib/gthreadpool.h b/dist/usr/include/glib-2.0/glib/gthreadpool.h
new file mode 100644
index 0000000..c05d700
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gthreadpool.h
@@ -0,0 +1,94 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gthread.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GThreadPool GThreadPool;
+
+/* Thread Pools
+ */
+
+struct _GThreadPool
+{
+  GFunc func;
+  gpointer user_data;
+  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
+
+#endif /* __G_THREADPOOL_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtimer.h b/dist/usr/include/glib-2.0/glib/gtimer.h
new file mode 100644
index 0000000..702e002
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtimer.h
@@ -0,0 +1,76 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/* Timer
+ */
+
+/* microseconds per second */
+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
+
+#endif /* __G_TIMER_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtimezone.h b/dist/usr/include/glib-2.0/glib/gtimezone.h
new file mode 100644
index 0000000..536acb1
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtimezone.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright © 2010 Codethink Limited
+ *
+ * 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
+ * licence, 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.
+ *
+ * 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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GTimeZone GTimeZone;
+
+/**
+ * GTimeType:
+ * @G_TIME_TYPE_STANDARD: the time is in local standard time
+ * @G_TIME_TYPE_DAYLIGHT: the time is in local daylight time
+ * @G_TIME_TYPE_UNIVERSAL: the time is in UTC
+ *
+ * Disambiguates a given time in two ways.
+ *
+ * First, specifies if the given time is in universal or local time.
+ *
+ * Second, if the time is in local time, specifies if it is local
+ * standard time or local daylight time.  This is important for the case
+ * where the same local time occurs twice (during daylight savings time
+ * transitions, for example).
+ */
+typedef enum
+{
+  G_TIME_TYPE_STANDARD,
+  G_TIME_TYPE_DAYLIGHT,
+  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);
+
+G_END_DECLS
+
+#endif /* __G_TIME_ZONE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtrashstack.h b/dist/usr/include/glib-2.0/glib/gtrashstack.h
new file mode 100644
index 0000000..bff504d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtrashstack.h
@@ -0,0 +1,103 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gutils.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GTrashStack GTrashStack;
+struct _GTrashStack
+{
+  GTrashStack *next;
+};
+
+G_INLINE_FUNC void      g_trash_stack_push   (GTrashStack **stack_p,
+                                              gpointer      data_p);
+G_INLINE_FUNC gpointer  g_trash_stack_pop    (GTrashStack **stack_p);
+G_INLINE_FUNC gpointer  g_trash_stack_peek   (GTrashStack **stack_p);
+G_INLINE_FUNC guint     g_trash_stack_height (GTrashStack **stack_p);
+
+#if defined (G_CAN_INLINE) || defined (__G_TRASH_STACK_C__)
+
+G_INLINE_FUNC void
+g_trash_stack_push (GTrashStack **stack_p,
+                    gpointer      data_p)
+{
+  GTrashStack *data = (GTrashStack *) data_p;
+
+  data->next = *stack_p;
+  *stack_p = data;
+}
+G_INLINE_FUNC gpointer
+g_trash_stack_pop (GTrashStack **stack_p)
+{
+  GTrashStack *data;
+
+  data = *stack_p;
+  if (data)
+    {
+      *stack_p = data->next;
+      /* NULLify private pointer here, most platforms store NULL as
+       * subsequent 0 bytes
+       */
+      data->next = NULL;
+    }
+
+  return data;
+}
+G_INLINE_FUNC gpointer
+g_trash_stack_peek (GTrashStack **stack_p)
+{
+  GTrashStack *data;
+
+  data = *stack_p;
+
+  return data;
+}
+G_INLINE_FUNC guint
+g_trash_stack_height (GTrashStack **stack_p)
+{
+  GTrashStack *data;
+  guint i = 0;
+
+  for (data = *stack_p; data; data = data->next)
+    i++;
+
+  return i;
+}
+
+#endif  /* G_CAN_INLINE || __G_TRASH_STACK_C__ */
+
+G_END_DECLS
+
+#endif /* __G_UTILS_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtree.h b/dist/usr/include/glib-2.0/glib/gtree.h
new file mode 100644
index 0000000..34cb8bb
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtree.h
@@ -0,0 +1,106 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gnode.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GTree  GTree;
+
+typedef gboolean (*GTraverseFunc) (gpointer  key,
+                                   gpointer  value,
+                                   gpointer  data);
+
+/* 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);
+
+GLIB_DEPRECATED
+void     g_tree_traverse        (GTree            *tree,
+                                 GTraverseFunc     traverse_func,
+                                 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
+
+#endif /* __G_TREE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gtypes.h b/dist/usr/include/glib-2.0/glib/gtypes.h
new file mode 100644
index 0000000..c18e0bf
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gtypes.h
@@ -0,0 +1,484 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glibconfig.h>
+#include <glib/gmacros.h>
+#include <glib/gversionmacros.h>
+#include <time.h>
+
+G_BEGIN_DECLS
+
+/* Provide type definitions for commonly used types.
+ *  These are useful because a "gint8" can be adjusted
+ *  to be 1 byte (8 bits) on all platforms. Similarly and
+ *  more importantly, "gint32" can be adjusted to be
+ *  4 bytes (32 bits) on all platforms.
+ */
+
+typedef char   gchar;
+typedef short  gshort;
+typedef long   glong;
+typedef int    gint;
+typedef gint   gboolean;
+
+typedef unsigned char   guchar;
+typedef unsigned short  gushort;
+typedef unsigned long   gulong;
+typedef unsigned int    guint;
+
+typedef float   gfloat;
+typedef double  gdouble;
+
+/* Define min and max constants for the fixed size numerical types */
+#define G_MININT8	((gint8)  0x80)
+#define G_MAXINT8	((gint8)  0x7f)
+#define G_MAXUINT8	((guint8) 0xff)
+
+#define G_MININT16	((gint16)  0x8000)
+#define G_MAXINT16	((gint16)  0x7fff)
+#define G_MAXUINT16	((guint16) 0xffff)
+
+#define G_MININT32	((gint32)  0x80000000)
+#define G_MAXINT32	((gint32)  0x7fffffff)
+#define G_MAXUINT32	((guint32) 0xffffffff)
+
+#define G_MININT64	((gint64) G_GINT64_CONSTANT(0x8000000000000000))
+#define G_MAXINT64	G_GINT64_CONSTANT(0x7fffffffffffffff)
+#define G_MAXUINT64	G_GINT64_CONSTANT(0xffffffffffffffffU)
+
+typedef void* gpointer;
+typedef const void *gconstpointer;
+
+typedef gint            (*GCompareFunc)         (gconstpointer  a,
+                                                 gconstpointer  b);
+typedef gint            (*GCompareDataFunc)     (gconstpointer  a,
+                                                 gconstpointer  b,
+						 gpointer       user_data);
+typedef gboolean        (*GEqualFunc)           (gconstpointer  a,
+                                                 gconstpointer  b);
+typedef void            (*GDestroyNotify)       (gpointer       data);
+typedef void            (*GFunc)                (gpointer       data,
+                                                 gpointer       user_data);
+typedef guint           (*GHashFunc)            (gconstpointer  key);
+typedef void            (*GHFunc)               (gpointer       key,
+                                                 gpointer       value,
+                                                 gpointer       user_data);
+
+/**
+ * GFreeFunc:
+ * @data: a data pointer
+ *
+ * Declares a type of function which takes an arbitrary
+ * data pointer argument and has no return value. It is
+ * not currently used in GLib or GTK+.
+ */
+typedef void            (*GFreeFunc)            (gpointer       data);
+
+/**
+ * GTranslateFunc:
+ * @str: the untranslated string
+ * @data: user data specified when installing the function, e.g.
+ *  in g_option_group_set_translate_func()
+ * 
+ * The type of functions which are used to translate user-visible
+ * strings, for <option>--help</option> output.
+ * 
+ * Returns: a translation of the string for the current locale.
+ *  The returned string is owned by GLib and must not be freed.
+ */
+typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
+						 gpointer       data);
+
+
+/* Define some mathematical constants that aren't available
+ * symbolically in some strict ISO C implementations.
+ *
+ * Note that the large number of digits used in these definitions
+ * doesn't imply that GLib or current computers in general would be
+ * able to handle floating point numbers with an accuracy like this.
+ * It's mostly an exercise in futility and future proofing. For
+ * extended precision floating point support, look somewhere else
+ * than GLib.
+ */
+#define G_E     2.7182818284590452353602874713526624977572470937000
+#define G_LN2   0.69314718055994530941723212145817656807550013436026
+#define G_LN10  2.3025850929940456840179914546843642076011014886288
+#define G_PI    3.1415926535897932384626433832795028841971693993751
+#define G_PI_2  1.5707963267948966192313216916397514420985846996876
+#define G_PI_4  0.78539816339744830961566084581987572104929234984378
+#define G_SQRT2 1.4142135623730950488016887242096980785696718753769
+
+/* Portable endian checks and conversions
+ *
+ * glibconfig.h defines G_BYTE_ORDER which expands to one of
+ * the below macros.
+ */
+#define G_LITTLE_ENDIAN 1234
+#define G_BIG_ENDIAN    4321
+#define G_PDP_ENDIAN    3412		/* unused, need specific PDP check */	
+
+
+/* Basic bit swapping functions
+ */
+#define GUINT16_SWAP_LE_BE_CONSTANT(val)	((guint16) ( \
+    (guint16) ((guint16) (val) >> 8) |	\
+    (guint16) ((guint16) (val) << 8)))
+
+#define GUINT32_SWAP_LE_BE_CONSTANT(val)	((guint32) ( \
+    (((guint32) (val) & (guint32) 0x000000ffU) << 24) | \
+    (((guint32) (val) & (guint32) 0x0000ff00U) <<  8) | \
+    (((guint32) (val) & (guint32) 0x00ff0000U) >>  8) | \
+    (((guint32) (val) & (guint32) 0xff000000U) >> 24)))
+
+#define GUINT64_SWAP_LE_BE_CONSTANT(val)	((guint64) ( \
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x00000000000000ffU)) << 56) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x000000000000ff00U)) << 40) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x0000000000ff0000U)) << 24) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x00000000ff000000U)) <<  8) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x000000ff00000000U)) >>  8) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x0000ff0000000000U)) >> 24) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0x00ff000000000000U)) >> 40) |	\
+      (((guint64) (val) &						\
+	(guint64) G_GINT64_CONSTANT (0xff00000000000000U)) >> 56)))
+
+/* Arch specific stuff for speed
+ */
+#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)))
+#  endif
+
+#  if defined (__i386__)
+#    define GUINT16_SWAP_LE_BE_IA32(val) \
+       (G_GNUC_EXTENSION					\
+	({ register guint16 __v, __x = ((guint16) (val));	\
+	   if (__builtin_constant_p (__x))			\
+	     __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);		\
+	   else							\
+	     __asm__ ("rorw $8, %w0"				\
+		      : "=r" (__v)				\
+		      : "0" (__x)				\
+		      : "cc");					\
+	    __v; }))
+#    if !defined (__i486__) && !defined (__i586__) \
+	&& !defined (__pentium__) && !defined (__i686__) \
+	&& !defined (__pentiumpro__) && !defined (__pentium4__)
+#       define GUINT32_SWAP_LE_BE_IA32(val) \
+	  (G_GNUC_EXTENSION					\
+	   ({ register guint32 __v, __x = ((guint32) (val));	\
+	      if (__builtin_constant_p (__x))			\
+		__v = GUINT32_SWAP_LE_BE_CONSTANT (__x);	\
+	      else						\
+		__asm__ ("rorw $8, %w0\n\t"			\
+			 "rorl $16, %0\n\t"			\
+			 "rorw $8, %w0"				\
+			 : "=r" (__v)				\
+			 : "0" (__x)				\
+			 : "cc");				\
+	      __v; }))
+#    else /* 486 and higher has bswap */
+#       define GUINT32_SWAP_LE_BE_IA32(val) \
+	  (G_GNUC_EXTENSION					\
+	   ({ register guint32 __v, __x = ((guint32) (val));	\
+	      if (__builtin_constant_p (__x))			\
+		__v = GUINT32_SWAP_LE_BE_CONSTANT (__x);	\
+	      else						\
+		__asm__ ("bswap %0"				\
+			 : "=r" (__v)				\
+			 : "0" (__x));				\
+	      __v; }))
+#    endif /* processor specific 32-bit stuff */
+#    define GUINT64_SWAP_LE_BE_IA32(val) \
+       (G_GNUC_EXTENSION						\
+	({ union { guint64 __ll;					\
+		   guint32 __l[2]; } __w, __r;				\
+	   __w.__ll = ((guint64) (val));				\
+	   if (__builtin_constant_p (__w.__ll))				\
+	     __r.__ll = GUINT64_SWAP_LE_BE_CONSTANT (__w.__ll);		\
+	   else								\
+	     {								\
+	       __r.__l[0] = GUINT32_SWAP_LE_BE (__w.__l[1]);		\
+	       __r.__l[1] = GUINT32_SWAP_LE_BE (__w.__l[0]);		\
+	     }								\
+	   __r.__ll; }))
+     /* Possibly just use the constant version and let gcc figure it out? */
+#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA32 (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA32 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA32 (val))
+#    endif
+#  elif defined (__ia64__)
+#    define GUINT16_SWAP_LE_BE_IA64(val) \
+       (G_GNUC_EXTENSION					\
+	({ register guint16 __v, __x = ((guint16) (val));	\
+	   if (__builtin_constant_p (__x))			\
+	     __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);		\
+	   else							\
+	     __asm__ __volatile__ ("shl %0 = %1, 48 ;;"		\
+				   "mux1 %0 = %0, @rev ;;"	\
+				    : "=r" (__v)		\
+				    : "r" (__x));		\
+	    __v; }))
+#    define GUINT32_SWAP_LE_BE_IA64(val) \
+       (G_GNUC_EXTENSION					\
+	 ({ register guint32 __v, __x = ((guint32) (val));	\
+	    if (__builtin_constant_p (__x))			\
+	      __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);		\
+	    else						\
+	     __asm__ __volatile__ ("shl %0 = %1, 32 ;;"		\
+				   "mux1 %0 = %0, @rev ;;"	\
+				    : "=r" (__v)		\
+				    : "r" (__x));		\
+	    __v; }))
+#    define GUINT64_SWAP_LE_BE_IA64(val) \
+       (G_GNUC_EXTENSION					\
+	({ register guint64 __v, __x = ((guint64) (val));	\
+	   if (__builtin_constant_p (__x))			\
+	     __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);		\
+	   else							\
+	     __asm__ __volatile__ ("mux1 %0 = %1, @rev ;;"	\
+				   : "=r" (__v)			\
+				   : "r" (__x));		\
+	   __v; }))
+#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA64 (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val))
+#    endif
+#  elif defined (__x86_64__)
+#    define GUINT32_SWAP_LE_BE_X86_64(val) \
+       (G_GNUC_EXTENSION					\
+	 ({ register guint32 __v, __x = ((guint32) (val));	\
+	    if (__builtin_constant_p (__x))			\
+	      __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);		\
+	    else						\
+	     __asm__ ("bswapl %0"				\
+		      : "=r" (__v)				\
+		      : "0" (__x));				\
+	    __v; }))
+#    define GUINT64_SWAP_LE_BE_X86_64(val) \
+       (G_GNUC_EXTENSION					\
+	({ register guint64 __v, __x = ((guint64) (val));	\
+	   if (__builtin_constant_p (__x))			\
+	     __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);		\
+	   else							\
+	     __asm__ ("bswapq %0"				\
+		      : "=r" (__v)				\
+		      : "0" (__x));				\
+	   __v; }))
+     /* gcc seems to figure out optimal code for this on its own */
+#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val))
+#    endif
+#  else /* generic gcc */
+#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
+#    ifndef GUINT32_SWAP_LE_BE
+#      define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
+#    endif
+#    ifndef GUINT64_SWAP_LE_BE
+#      define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
+#    endif
+#  endif
+#else /* generic */
+#  define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
+#  define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
+#  define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
+#endif /* generic */
+
+#define GUINT16_SWAP_LE_PDP(val)	((guint16) (val))
+#define GUINT16_SWAP_BE_PDP(val)	(GUINT16_SWAP_LE_BE (val))
+#define GUINT32_SWAP_LE_PDP(val)	((guint32) ( \
+    (((guint32) (val) & (guint32) 0x0000ffffU) << 16) | \
+    (((guint32) (val) & (guint32) 0xffff0000U) >> 16)))
+#define GUINT32_SWAP_BE_PDP(val)	((guint32) ( \
+    (((guint32) (val) & (guint32) 0x00ff00ffU) << 8) | \
+    (((guint32) (val) & (guint32) 0xff00ff00U) >> 8)))
+
+/* The G*_TO_?E() macros are defined in glibconfig.h.
+ * The transformation is symmetric, so the FROM just maps to the TO.
+ */
+#define GINT16_FROM_LE(val)	(GINT16_TO_LE (val))
+#define GUINT16_FROM_LE(val)	(GUINT16_TO_LE (val))
+#define GINT16_FROM_BE(val)	(GINT16_TO_BE (val))
+#define GUINT16_FROM_BE(val)	(GUINT16_TO_BE (val))
+#define GINT32_FROM_LE(val)	(GINT32_TO_LE (val))
+#define GUINT32_FROM_LE(val)	(GUINT32_TO_LE (val))
+#define GINT32_FROM_BE(val)	(GINT32_TO_BE (val))
+#define GUINT32_FROM_BE(val)	(GUINT32_TO_BE (val))
+
+#define GINT64_FROM_LE(val)	(GINT64_TO_LE (val))
+#define GUINT64_FROM_LE(val)	(GUINT64_TO_LE (val))
+#define GINT64_FROM_BE(val)	(GINT64_TO_BE (val))
+#define GUINT64_FROM_BE(val)	(GUINT64_TO_BE (val))
+
+#define GLONG_FROM_LE(val)	(GLONG_TO_LE (val))
+#define GULONG_FROM_LE(val)	(GULONG_TO_LE (val))
+#define GLONG_FROM_BE(val)	(GLONG_TO_BE (val))
+#define GULONG_FROM_BE(val)	(GULONG_TO_BE (val))
+
+#define GINT_FROM_LE(val)	(GINT_TO_LE (val))
+#define GUINT_FROM_LE(val)	(GUINT_TO_LE (val))
+#define GINT_FROM_BE(val)	(GINT_TO_BE (val))
+#define GUINT_FROM_BE(val)	(GUINT_TO_BE (val))
+
+#define GSIZE_FROM_LE(val)	(GSIZE_TO_LE (val))
+#define GSSIZE_FROM_LE(val)	(GSSIZE_TO_LE (val))
+#define GSIZE_FROM_BE(val)	(GSIZE_TO_BE (val))
+#define GSSIZE_FROM_BE(val)	(GSSIZE_TO_BE (val))
+
+
+/* Portable versions of host-network order stuff
+ */
+#define g_ntohl(val) (GUINT32_FROM_BE (val))
+#define g_ntohs(val) (GUINT16_FROM_BE (val))
+#define g_htonl(val) (GUINT32_TO_BE (val))
+#define g_htons(val) (GUINT16_TO_BE (val))
+
+/* IEEE Standard 754 Single Precision Storage Format (gfloat):
+ *
+ *        31 30           23 22            0
+ * +--------+---------------+---------------+
+ * | s 1bit | e[30:23] 8bit | f[22:0] 23bit |
+ * +--------+---------------+---------------+
+ * B0------------------->B1------->B2-->B3-->
+ *
+ * IEEE Standard 754 Double Precision Storage Format (gdouble):
+ *
+ *        63 62            52 51            32   31            0
+ * +--------+----------------+----------------+ +---------------+
+ * | s 1bit | e[62:52] 11bit | f[51:32] 20bit | | f[31:0] 32bit |
+ * +--------+----------------+----------------+ +---------------+
+ * B0--------------->B1---------->B2--->B3---->  B4->B5->B6->B7->
+ */
+/* subtract from biased_exponent to form base2 exponent (normal numbers) */
+typedef union  _GDoubleIEEE754	GDoubleIEEE754;
+typedef union  _GFloatIEEE754	GFloatIEEE754;
+#define G_IEEE754_FLOAT_BIAS	(127)
+#define G_IEEE754_DOUBLE_BIAS	(1023)
+/* multiply with base2 exponent to get base10 exponent (normal numbers) */
+#define G_LOG_2_BASE_10		(0.30102999566398119521)
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+union _GFloatIEEE754
+{
+  gfloat v_float;
+  struct {
+    guint mantissa : 23;
+    guint biased_exponent : 8;
+    guint sign : 1;
+  } mpn;
+};
+union _GDoubleIEEE754
+{
+  gdouble v_double;
+  struct {
+    guint mantissa_low : 32;
+    guint mantissa_high : 20;
+    guint biased_exponent : 11;
+    guint sign : 1;
+  } mpn;
+};
+#elif G_BYTE_ORDER == G_BIG_ENDIAN
+union _GFloatIEEE754
+{
+  gfloat v_float;
+  struct {
+    guint sign : 1;
+    guint biased_exponent : 8;
+    guint mantissa : 23;
+  } mpn;
+};
+union _GDoubleIEEE754
+{
+  gdouble v_double;
+  struct {
+    guint sign : 1;
+    guint biased_exponent : 11;
+    guint mantissa_high : 20;
+    guint mantissa_low : 32;
+  } mpn;
+};
+#else /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
+#error unknown ENDIAN type
+#endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
+
+typedef struct _GTimeVal                GTimeVal;
+
+struct _GTimeVal
+{
+  glong tv_sec;
+  glong tv_usec;
+};
+
+G_END_DECLS
+
+/* We prefix variable declarations so they can
+ * properly get exported in Windows DLLs.
+ */
+#ifndef GLIB_VAR
+#  ifdef G_PLATFORM_WIN32
+#    ifdef GLIB_STATIC_COMPILATION
+#      define GLIB_VAR extern
+#    else /* !GLIB_STATIC_COMPILATION */
+#      ifdef GLIB_COMPILATION
+#        ifdef DLL_EXPORT
+#          define GLIB_VAR __declspec(dllexport)
+#        else /* !DLL_EXPORT */
+#          define GLIB_VAR extern
+#        endif /* !DLL_EXPORT */
+#      else /* !GLIB_COMPILATION */
+#        define GLIB_VAR extern __declspec(dllimport)
+#      endif /* !GLIB_COMPILATION */
+#    endif /* !GLIB_STATIC_COMPILATION */
+#  else /* !G_PLATFORM_WIN32 */
+#    define GLIB_VAR _GLIB_EXTERN
+#  endif /* !G_PLATFORM_WIN32 */
+#endif /* GLIB_VAR */
+
+#endif /* __G_TYPES_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gunicode.h b/dist/usr/include/glib-2.0/glib/gunicode.h
new file mode 100644
index 0000000..fdf1086
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gunicode.h
@@ -0,0 +1,813 @@
+/* gunicode.h - Unicode manipulation functions
+ *
+ *  Copyright (C) 1999, 2000 Tom Tromey
+ *  Copyright 2000, 2005 Red Hat, Inc.
+ *
+ * The Gnome 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.
+ *
+ * The Gnome 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 the Gnome Library; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *   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
+
+#include <glib/gerror.h>
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * gunichar:
+ *
+ * A type which can hold any UTF-32 or UCS-4 character code,
+ * also known as a Unicode code point.
+ *
+ * If you want to produce the UTF-8 representation of a #gunichar,
+ * use g_ucs4_to_utf8(). See also g_utf8_to_ucs4() for the reverse
+ * process.
+ *
+ * To print/scan values of this type as integer, use
+ * %G_GINT32_MODIFIER and/or %G_GUINT32_FORMAT.
+ *
+ * The notation to express a Unicode code point in running text is
+ * as a hexadecimal number with four to six digits and uppercase
+ * letters, prefixed by the string "U+". Leading zeros are omitted,
+ * unless the code point would have fewer than four hexadecimal digits.
+ * For example, "U+0041 LATIN CAPITAL LETTER A". To print a code point
+ * in the U+-notation, use the format string "U+\%04"G_GINT32_FORMAT"X".
+ * To scan, use the format string "U+\%06"G_GINT32_FORMAT"X".
+ *
+ * |[
+ * gunichar c;
+ * sscanf ("U+0041", "U+%06"G_GINT32_FORMAT"X", &amp;c)
+ * g_print ("Read U+%04"G_GINT32_FORMAT"X", c);
+ * ]|
+ */
+typedef guint32 gunichar;
+
+/**
+ * gunichar2:
+ *
+ * A type which can hold any UTF-16 code
+ * point<footnote id="utf16_surrogate_pairs">UTF-16 also has so called
+ * <firstterm>surrogate pairs</firstterm> to encode characters beyond
+ * the BMP as pairs of 16bit numbers. Surrogate pairs cannot be stored
+ * in a single gunichar2 field, but all GLib functions accepting gunichar2
+ * arrays will correctly interpret surrogate pairs.</footnote>.
+ *
+ * To print/scan values of this type to/from text you need to convert
+ * to/from UTF-8, using g_utf16_to_utf8()/g_utf8_to_utf16().
+ *
+ * To print/scan values of this type as integer, use
+ * %G_GINT16_MODIFIER and/or %G_GUINT16_FORMAT.
+ */
+typedef guint16 gunichar2;
+
+/**
+ * GUnicodeType:
+ * @G_UNICODE_CONTROL: General category "Other, Control" (Cc)
+ * @G_UNICODE_FORMAT: General category "Other, Format" (Cf)
+ * @G_UNICODE_UNASSIGNED: General category "Other, Not Assigned" (Cn)
+ * @G_UNICODE_PRIVATE_USE: General category "Other, Private Use" (Co)
+ * @G_UNICODE_SURROGATE: General category "Other, Surrogate" (Cs)
+ * @G_UNICODE_LOWERCASE_LETTER: General category "Letter, Lowercase" (Ll)
+ * @G_UNICODE_MODIFIER_LETTER: General category "Letter, Modifier" (Lm)
+ * @G_UNICODE_OTHER_LETTER: General category "Letter, Other" (Lo)
+ * @G_UNICODE_TITLECASE_LETTER: General category "Letter, Titlecase" (Lt)
+ * @G_UNICODE_UPPERCASE_LETTER: General category "Letter, Uppercase" (Lu)
+ * @G_UNICODE_SPACING_MARK: General category "Mark, Spacing" (Mc)
+ * @G_UNICODE_ENCLOSING_MARK: General category "Mark, Enclosing" (Me)
+ * @G_UNICODE_NON_SPACING_MARK: General category "Mark, Nonspacing" (Mn)
+ * @G_UNICODE_DECIMAL_NUMBER: General category "Number, Decimal Digit" (Nd)
+ * @G_UNICODE_LETTER_NUMBER: General category "Number, Letter" (Nl)
+ * @G_UNICODE_OTHER_NUMBER: General category "Number, Other" (No)
+ * @G_UNICODE_CONNECT_PUNCTUATION: General category "Punctuation, Connector" (Pc)
+ * @G_UNICODE_DASH_PUNCTUATION: General category "Punctuation, Dash" (Pd)
+ * @G_UNICODE_CLOSE_PUNCTUATION: General category "Punctuation, Close" (Pe)
+ * @G_UNICODE_FINAL_PUNCTUATION: General category "Punctuation, Final quote" (Pf)
+ * @G_UNICODE_INITIAL_PUNCTUATION: General category "Punctuation, Initial quote" (Pi)
+ * @G_UNICODE_OTHER_PUNCTUATION: General category "Punctuation, Other" (Po)
+ * @G_UNICODE_OPEN_PUNCTUATION: General category "Punctuation, Open" (Ps)
+ * @G_UNICODE_CURRENCY_SYMBOL: General category "Symbol, Currency" (Sc)
+ * @G_UNICODE_MODIFIER_SYMBOL: General category "Symbol, Modifier" (Sk)
+ * @G_UNICODE_MATH_SYMBOL: General category "Symbol, Math" (Sm)
+ * @G_UNICODE_OTHER_SYMBOL: General category "Symbol, Other" (So)
+ * @G_UNICODE_LINE_SEPARATOR: General category "Separator, Line" (Zl)
+ * @G_UNICODE_PARAGRAPH_SEPARATOR: General category "Separator, Paragraph" (Zp)
+ * @G_UNICODE_SPACE_SEPARATOR: General category "Separator, Space" (Zs)
+ *
+ * These are the possible character classifications from the
+ * Unicode specification.
+ * See <ulink url="http://www.unicode.org/Public/UNIDATA/UnicodeData.html">http://www.unicode.org/Public/UNIDATA/UnicodeData.html</ulink>.
+ */
+typedef enum
+{
+  G_UNICODE_CONTROL,
+  G_UNICODE_FORMAT,
+  G_UNICODE_UNASSIGNED,
+  G_UNICODE_PRIVATE_USE,
+  G_UNICODE_SURROGATE,
+  G_UNICODE_LOWERCASE_LETTER,
+  G_UNICODE_MODIFIER_LETTER,
+  G_UNICODE_OTHER_LETTER,
+  G_UNICODE_TITLECASE_LETTER,
+  G_UNICODE_UPPERCASE_LETTER,
+  G_UNICODE_SPACING_MARK,
+  G_UNICODE_ENCLOSING_MARK,
+  G_UNICODE_NON_SPACING_MARK,
+  G_UNICODE_DECIMAL_NUMBER,
+  G_UNICODE_LETTER_NUMBER,
+  G_UNICODE_OTHER_NUMBER,
+  G_UNICODE_CONNECT_PUNCTUATION,
+  G_UNICODE_DASH_PUNCTUATION,
+  G_UNICODE_CLOSE_PUNCTUATION,
+  G_UNICODE_FINAL_PUNCTUATION,
+  G_UNICODE_INITIAL_PUNCTUATION,
+  G_UNICODE_OTHER_PUNCTUATION,
+  G_UNICODE_OPEN_PUNCTUATION,
+  G_UNICODE_CURRENCY_SYMBOL,
+  G_UNICODE_MODIFIER_SYMBOL,
+  G_UNICODE_MATH_SYMBOL,
+  G_UNICODE_OTHER_SYMBOL,
+  G_UNICODE_LINE_SEPARATOR,
+  G_UNICODE_PARAGRAPH_SEPARATOR,
+  G_UNICODE_SPACE_SEPARATOR
+} GUnicodeType;
+
+/**
+ * G_UNICODE_COMBINING_MARK:
+ *
+ * Older name for %G_UNICODE_SPACING_MARK.
+ *
+ * Deprecated: 2.30: Use %G_UNICODE_SPACING_MARK.
+ */
+#ifndef G_DISABLE_DEPRECATED
+#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK
+#endif
+
+/**
+ * GUnicodeBreakType:
+ * @G_UNICODE_BREAK_MANDATORY: Mandatory Break (BK)
+ * @G_UNICODE_BREAK_CARRIAGE_RETURN: Carriage Return (CR)
+ * @G_UNICODE_BREAK_LINE_FEED: Line Feed (LF)
+ * @G_UNICODE_BREAK_COMBINING_MARK: Attached Characters and Combining Marks (CM)
+ * @G_UNICODE_BREAK_SURROGATE: Surrogates (SG)
+ * @G_UNICODE_BREAK_ZERO_WIDTH_SPACE: Zero Width Space (ZW)
+ * @G_UNICODE_BREAK_INSEPARABLE: Inseparable (IN)
+ * @G_UNICODE_BREAK_NON_BREAKING_GLUE: Non-breaking ("Glue") (GL)
+ * @G_UNICODE_BREAK_CONTINGENT: Contingent Break Opportunity (CB)
+ * @G_UNICODE_BREAK_SPACE: Space (SP)
+ * @G_UNICODE_BREAK_AFTER: Break Opportunity After (BA)
+ * @G_UNICODE_BREAK_BEFORE: Break Opportunity Before (BB)
+ * @G_UNICODE_BREAK_BEFORE_AND_AFTER: Break Opportunity Before and After (B2)
+ * @G_UNICODE_BREAK_HYPHEN: Hyphen (HY)
+ * @G_UNICODE_BREAK_NON_STARTER: Nonstarter (NS)
+ * @G_UNICODE_BREAK_OPEN_PUNCTUATION: Opening Punctuation (OP)
+ * @G_UNICODE_BREAK_CLOSE_PUNCTUATION: Closing Punctuation (CL)
+ * @G_UNICODE_BREAK_QUOTATION: Ambiguous Quotation (QU)
+ * @G_UNICODE_BREAK_EXCLAMATION: Exclamation/Interrogation (EX)
+ * @G_UNICODE_BREAK_IDEOGRAPHIC: Ideographic (ID)
+ * @G_UNICODE_BREAK_NUMERIC: Numeric (NU)
+ * @G_UNICODE_BREAK_INFIX_SEPARATOR: Infix Separator (Numeric) (IS)
+ * @G_UNICODE_BREAK_SYMBOL: Symbols Allowing Break After (SY)
+ * @G_UNICODE_BREAK_ALPHABETIC: Ordinary Alphabetic and Symbol Characters (AL)
+ * @G_UNICODE_BREAK_PREFIX: Prefix (Numeric) (PR)
+ * @G_UNICODE_BREAK_POSTFIX: Postfix (Numeric) (PO)
+ * @G_UNICODE_BREAK_COMPLEX_CONTEXT: Complex Content Dependent (South East Asian) (SA)
+ * @G_UNICODE_BREAK_AMBIGUOUS: Ambiguous (Alphabetic or Ideographic) (AI)
+ * @G_UNICODE_BREAK_UNKNOWN: Unknown (XX)
+ * @G_UNICODE_BREAK_NEXT_LINE: Next Line (NL)
+ * @G_UNICODE_BREAK_WORD_JOINER: Word Joiner (WJ)
+ * @G_UNICODE_BREAK_HANGUL_L_JAMO: Hangul L Jamo (JL)
+ * @G_UNICODE_BREAK_HANGUL_V_JAMO: Hangul V Jamo (JV)
+ * @G_UNICODE_BREAK_HANGUL_T_JAMO: Hangul T Jamo (JT)
+ * @G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: Hangul LV Syllable (H2)
+ * @G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: Hangul LVT Syllable (H3)
+ * @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.
+ *
+ * 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>.
+ */
+typedef enum
+{
+  G_UNICODE_BREAK_MANDATORY,
+  G_UNICODE_BREAK_CARRIAGE_RETURN,
+  G_UNICODE_BREAK_LINE_FEED,
+  G_UNICODE_BREAK_COMBINING_MARK,
+  G_UNICODE_BREAK_SURROGATE,
+  G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
+  G_UNICODE_BREAK_INSEPARABLE,
+  G_UNICODE_BREAK_NON_BREAKING_GLUE,
+  G_UNICODE_BREAK_CONTINGENT,
+  G_UNICODE_BREAK_SPACE,
+  G_UNICODE_BREAK_AFTER,
+  G_UNICODE_BREAK_BEFORE,
+  G_UNICODE_BREAK_BEFORE_AND_AFTER,
+  G_UNICODE_BREAK_HYPHEN,
+  G_UNICODE_BREAK_NON_STARTER,
+  G_UNICODE_BREAK_OPEN_PUNCTUATION,
+  G_UNICODE_BREAK_CLOSE_PUNCTUATION,
+  G_UNICODE_BREAK_QUOTATION,
+  G_UNICODE_BREAK_EXCLAMATION,
+  G_UNICODE_BREAK_IDEOGRAPHIC,
+  G_UNICODE_BREAK_NUMERIC,
+  G_UNICODE_BREAK_INFIX_SEPARATOR,
+  G_UNICODE_BREAK_SYMBOL,
+  G_UNICODE_BREAK_ALPHABETIC,
+  G_UNICODE_BREAK_PREFIX,
+  G_UNICODE_BREAK_POSTFIX,
+  G_UNICODE_BREAK_COMPLEX_CONTEXT,
+  G_UNICODE_BREAK_AMBIGUOUS,
+  G_UNICODE_BREAK_UNKNOWN,
+  G_UNICODE_BREAK_NEXT_LINE,
+  G_UNICODE_BREAK_WORD_JOINER,
+  G_UNICODE_BREAK_HANGUL_L_JAMO,
+  G_UNICODE_BREAK_HANGUL_V_JAMO,
+  G_UNICODE_BREAK_HANGUL_T_JAMO,
+  G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
+  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_REGIONAL_INDICATOR
+} GUnicodeBreakType;
+
+/**
+ * GUnicodeScript:
+ * @G_UNICODE_SCRIPT_INVALID_CODE:
+ *                               a value never returned from g_unichar_get_script()
+ * @G_UNICODE_SCRIPT_COMMON:     a character used by multiple different scripts
+ * @G_UNICODE_SCRIPT_INHERITED:  a mark glyph that takes its script from the
+ * i                             base glyph to which it is attached
+ * @G_UNICODE_SCRIPT_ARABIC:     Arabic
+ * @G_UNICODE_SCRIPT_ARMENIAN:   Armenian
+ * @G_UNICODE_SCRIPT_BENGALI:    Bengali
+ * @G_UNICODE_SCRIPT_BOPOMOFO:   Bopomofo
+ * @G_UNICODE_SCRIPT_CHEROKEE:   Cherokee
+ * @G_UNICODE_SCRIPT_COPTIC:     Coptic
+ * @G_UNICODE_SCRIPT_CYRILLIC:   Cyrillic
+ * @G_UNICODE_SCRIPT_DESERET:    Deseret
+ * @G_UNICODE_SCRIPT_DEVANAGARI: Devanagari
+ * @G_UNICODE_SCRIPT_ETHIOPIC:   Ethiopic
+ * @G_UNICODE_SCRIPT_GEORGIAN:   Georgian
+ * @G_UNICODE_SCRIPT_GOTHIC:     Gothic
+ * @G_UNICODE_SCRIPT_GREEK:      Greek
+ * @G_UNICODE_SCRIPT_GUJARATI:   Gujarati
+ * @G_UNICODE_SCRIPT_GURMUKHI:   Gurmukhi
+ * @G_UNICODE_SCRIPT_HAN:        Han
+ * @G_UNICODE_SCRIPT_HANGUL:     Hangul
+ * @G_UNICODE_SCRIPT_HEBREW:     Hebrew
+ * @G_UNICODE_SCRIPT_HIRAGANA:   Hiragana
+ * @G_UNICODE_SCRIPT_KANNADA:    Kannada
+ * @G_UNICODE_SCRIPT_KATAKANA:   Katakana
+ * @G_UNICODE_SCRIPT_KHMER:      Khmer
+ * @G_UNICODE_SCRIPT_LAO:        Lao
+ * @G_UNICODE_SCRIPT_LATIN:      Latin
+ * @G_UNICODE_SCRIPT_MALAYALAM:  Malayalam
+ * @G_UNICODE_SCRIPT_MONGOLIAN:  Mongolian
+ * @G_UNICODE_SCRIPT_MYANMAR:    Myanmar
+ * @G_UNICODE_SCRIPT_OGHAM:      Ogham
+ * @G_UNICODE_SCRIPT_OLD_ITALIC: Old Italic
+ * @G_UNICODE_SCRIPT_ORIYA:      Oriya
+ * @G_UNICODE_SCRIPT_RUNIC:      Runic
+ * @G_UNICODE_SCRIPT_SINHALA:    Sinhala
+ * @G_UNICODE_SCRIPT_SYRIAC:     Syriac
+ * @G_UNICODE_SCRIPT_TAMIL:      Tamil
+ * @G_UNICODE_SCRIPT_TELUGU:     Telugu
+ * @G_UNICODE_SCRIPT_THAANA:     Thaana
+ * @G_UNICODE_SCRIPT_THAI:       Thai
+ * @G_UNICODE_SCRIPT_TIBETAN:    Tibetan
+ * @G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL:
+ *                               Canadian Aboriginal
+ * @G_UNICODE_SCRIPT_YI:         Yi
+ * @G_UNICODE_SCRIPT_TAGALOG:    Tagalog
+ * @G_UNICODE_SCRIPT_HANUNOO:    Hanunoo
+ * @G_UNICODE_SCRIPT_BUHID:      Buhid
+ * @G_UNICODE_SCRIPT_TAGBANWA:   Tagbanwa
+ * @G_UNICODE_SCRIPT_BRAILLE:    Braille
+ * @G_UNICODE_SCRIPT_CYPRIOT:    Cypriot
+ * @G_UNICODE_SCRIPT_LIMBU:      Limbu
+ * @G_UNICODE_SCRIPT_OSMANYA:    Osmanya
+ * @G_UNICODE_SCRIPT_SHAVIAN:    Shavian
+ * @G_UNICODE_SCRIPT_LINEAR_B:   Linear B
+ * @G_UNICODE_SCRIPT_TAI_LE:     Tai Le
+ * @G_UNICODE_SCRIPT_UGARITIC:   Ugaritic
+ * @G_UNICODE_SCRIPT_NEW_TAI_LUE:
+ *                               New Tai Lue
+ * @G_UNICODE_SCRIPT_BUGINESE:   Buginese
+ * @G_UNICODE_SCRIPT_GLAGOLITIC: Glagolitic
+ * @G_UNICODE_SCRIPT_TIFINAGH:   Tifinagh
+ * @G_UNICODE_SCRIPT_SYLOTI_NAGRI:
+ *                               Syloti Nagri
+ * @G_UNICODE_SCRIPT_OLD_PERSIAN:
+ *                               Old Persian
+ * @G_UNICODE_SCRIPT_KHAROSHTHI: Kharoshthi
+ * @G_UNICODE_SCRIPT_UNKNOWN:    an unassigned code point
+ * @G_UNICODE_SCRIPT_BALINESE:   Balinese
+ * @G_UNICODE_SCRIPT_CUNEIFORM:  Cuneiform
+ * @G_UNICODE_SCRIPT_PHOENICIAN: Phoenician
+ * @G_UNICODE_SCRIPT_PHAGS_PA:   Phags-pa
+ * @G_UNICODE_SCRIPT_NKO:        N'Ko
+ * @G_UNICODE_SCRIPT_KAYAH_LI:   Kayah Li. Since 2.16.3
+ * @G_UNICODE_SCRIPT_LEPCHA:     Lepcha. Since 2.16.3
+ * @G_UNICODE_SCRIPT_REJANG:     Rejang. Since 2.16.3
+ * @G_UNICODE_SCRIPT_SUNDANESE:  Sundanese. Since 2.16.3
+ * @G_UNICODE_SCRIPT_SAURASHTRA: Saurashtra. Since 2.16.3
+ * @G_UNICODE_SCRIPT_CHAM:       Cham. Since 2.16.3
+ * @G_UNICODE_SCRIPT_OL_CHIKI:   Ol Chiki. Since 2.16.3
+ * @G_UNICODE_SCRIPT_VAI:        Vai. Since 2.16.3
+ * @G_UNICODE_SCRIPT_CARIAN:     Carian. Since 2.16.3
+ * @G_UNICODE_SCRIPT_LYCIAN:     Lycian. Since 2.16.3
+ * @G_UNICODE_SCRIPT_LYDIAN:     Lydian. Since 2.16.3
+ * @G_UNICODE_SCRIPT_AVESTAN:    Avestan. Since 2.26
+ * @G_UNICODE_SCRIPT_BAMUM:      Bamum. Since 2.26
+ * @G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS:
+ *                               Egyptian Hieroglpyhs. Since 2.26
+ * @G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC:
+ *                               Imperial Aramaic. Since 2.26
+ * @G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI:
+ *                               Inscriptional Pahlavi. Since 2.26
+ * @G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN:
+ *                               Inscriptional Parthian. Since 2.26
+ * @G_UNICODE_SCRIPT_JAVANESE:   Javanese. Since 2.26
+ * @G_UNICODE_SCRIPT_KAITHI:     Kaithi. Since 2.26
+ * @G_UNICODE_SCRIPT_LISU:       Lisu. Since 2.26
+ * @G_UNICODE_SCRIPT_MEETEI_MAYEK:
+ *                               Meetei Mayek. Since 2.26
+ * @G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN:
+ *                               Old South Arabian. Since 2.26
+ * @G_UNICODE_SCRIPT_OLD_TURKIC: Old Turkic. Since 2.28
+ * @G_UNICODE_SCRIPT_SAMARITAN:  Samaritan. Since 2.26
+ * @G_UNICODE_SCRIPT_TAI_THAM:   Tai Tham. Since 2.26
+ * @G_UNICODE_SCRIPT_TAI_VIET:   Tai Viet. Since 2.26
+ * @G_UNICODE_SCRIPT_BATAK:      Batak. Since 2.28
+ * @G_UNICODE_SCRIPT_BRAHMI:     Brahmi. Since 2.28
+ * @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_MIAO:                 Miao. Since: 2.32
+ * @G_UNICODE_SCRIPT_SHARADA:              Sharada. Since: 2.32
+ * @G_UNICODE_SCRIPT_SORA_SOMPENG:         Sora Sompeng. Since: 2.32
+ * @G_UNICODE_SCRIPT_TAKRI:                Takri. Since: 2.32
+ *
+ * The #GUnicodeScript enumeration identifies different writing
+ * systems. The values correspond to the names as defined in the
+ * Unicode standard. The enumeration has been added in GLib 2.14,
+ * and is interchangeable with #PangoScript.
+ *
+ * Note that new types may be added in the future. Applications
+ * should be ready to handle unknown values.
+ * See <ulink
+ * url="http://www.unicode.org/reports/tr24/">Unicode Standard Annex
+ * #24: Script names</ulink>.
+ */
+typedef enum
+{                         /* ISO 15924 code */
+  G_UNICODE_SCRIPT_INVALID_CODE = -1,
+  G_UNICODE_SCRIPT_COMMON       = 0,   /* Zyyy */
+  G_UNICODE_SCRIPT_INHERITED,          /* Zinh (Qaai) */
+  G_UNICODE_SCRIPT_ARABIC,             /* Arab */
+  G_UNICODE_SCRIPT_ARMENIAN,           /* Armn */
+  G_UNICODE_SCRIPT_BENGALI,            /* Beng */
+  G_UNICODE_SCRIPT_BOPOMOFO,           /* Bopo */
+  G_UNICODE_SCRIPT_CHEROKEE,           /* Cher */
+  G_UNICODE_SCRIPT_COPTIC,             /* Copt (Qaac) */
+  G_UNICODE_SCRIPT_CYRILLIC,           /* Cyrl (Cyrs) */
+  G_UNICODE_SCRIPT_DESERET,            /* Dsrt */
+  G_UNICODE_SCRIPT_DEVANAGARI,         /* Deva */
+  G_UNICODE_SCRIPT_ETHIOPIC,           /* Ethi */
+  G_UNICODE_SCRIPT_GEORGIAN,           /* Geor (Geon, Geoa) */
+  G_UNICODE_SCRIPT_GOTHIC,             /* Goth */
+  G_UNICODE_SCRIPT_GREEK,              /* Grek */
+  G_UNICODE_SCRIPT_GUJARATI,           /* Gujr */
+  G_UNICODE_SCRIPT_GURMUKHI,           /* Guru */
+  G_UNICODE_SCRIPT_HAN,                /* Hani */
+  G_UNICODE_SCRIPT_HANGUL,             /* Hang */
+  G_UNICODE_SCRIPT_HEBREW,             /* Hebr */
+  G_UNICODE_SCRIPT_HIRAGANA,           /* Hira */
+  G_UNICODE_SCRIPT_KANNADA,            /* Knda */
+  G_UNICODE_SCRIPT_KATAKANA,           /* Kana */
+  G_UNICODE_SCRIPT_KHMER,              /* Khmr */
+  G_UNICODE_SCRIPT_LAO,                /* Laoo */
+  G_UNICODE_SCRIPT_LATIN,              /* Latn (Latf, Latg) */
+  G_UNICODE_SCRIPT_MALAYALAM,          /* Mlym */
+  G_UNICODE_SCRIPT_MONGOLIAN,          /* Mong */
+  G_UNICODE_SCRIPT_MYANMAR,            /* Mymr */
+  G_UNICODE_SCRIPT_OGHAM,              /* Ogam */
+  G_UNICODE_SCRIPT_OLD_ITALIC,         /* Ital */
+  G_UNICODE_SCRIPT_ORIYA,              /* Orya */
+  G_UNICODE_SCRIPT_RUNIC,              /* Runr */
+  G_UNICODE_SCRIPT_SINHALA,            /* Sinh */
+  G_UNICODE_SCRIPT_SYRIAC,             /* Syrc (Syrj, Syrn, Syre) */
+  G_UNICODE_SCRIPT_TAMIL,              /* Taml */
+  G_UNICODE_SCRIPT_TELUGU,             /* Telu */
+  G_UNICODE_SCRIPT_THAANA,             /* Thaa */
+  G_UNICODE_SCRIPT_THAI,               /* Thai */
+  G_UNICODE_SCRIPT_TIBETAN,            /* Tibt */
+  G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */
+  G_UNICODE_SCRIPT_YI,                 /* Yiii */
+  G_UNICODE_SCRIPT_TAGALOG,            /* Tglg */
+  G_UNICODE_SCRIPT_HANUNOO,            /* Hano */
+  G_UNICODE_SCRIPT_BUHID,              /* Buhd */
+  G_UNICODE_SCRIPT_TAGBANWA,           /* Tagb */
+
+  /* Unicode-4.0 additions */
+  G_UNICODE_SCRIPT_BRAILLE,            /* Brai */
+  G_UNICODE_SCRIPT_CYPRIOT,            /* Cprt */
+  G_UNICODE_SCRIPT_LIMBU,              /* Limb */
+  G_UNICODE_SCRIPT_OSMANYA,            /* Osma */
+  G_UNICODE_SCRIPT_SHAVIAN,            /* Shaw */
+  G_UNICODE_SCRIPT_LINEAR_B,           /* Linb */
+  G_UNICODE_SCRIPT_TAI_LE,             /* Tale */
+  G_UNICODE_SCRIPT_UGARITIC,           /* Ugar */
+
+  /* Unicode-4.1 additions */
+  G_UNICODE_SCRIPT_NEW_TAI_LUE,        /* Talu */
+  G_UNICODE_SCRIPT_BUGINESE,           /* Bugi */
+  G_UNICODE_SCRIPT_GLAGOLITIC,         /* Glag */
+  G_UNICODE_SCRIPT_TIFINAGH,           /* Tfng */
+  G_UNICODE_SCRIPT_SYLOTI_NAGRI,       /* Sylo */
+  G_UNICODE_SCRIPT_OLD_PERSIAN,        /* Xpeo */
+  G_UNICODE_SCRIPT_KHAROSHTHI,         /* Khar */
+
+  /* Unicode-5.0 additions */
+  G_UNICODE_SCRIPT_UNKNOWN,            /* Zzzz */
+  G_UNICODE_SCRIPT_BALINESE,           /* Bali */
+  G_UNICODE_SCRIPT_CUNEIFORM,          /* Xsux */
+  G_UNICODE_SCRIPT_PHOENICIAN,         /* Phnx */
+  G_UNICODE_SCRIPT_PHAGS_PA,           /* Phag */
+  G_UNICODE_SCRIPT_NKO,                /* Nkoo */
+
+  /* Unicode-5.1 additions */
+  G_UNICODE_SCRIPT_KAYAH_LI,           /* Kali */
+  G_UNICODE_SCRIPT_LEPCHA,             /* Lepc */
+  G_UNICODE_SCRIPT_REJANG,             /* Rjng */
+  G_UNICODE_SCRIPT_SUNDANESE,          /* Sund */
+  G_UNICODE_SCRIPT_SAURASHTRA,         /* Saur */
+  G_UNICODE_SCRIPT_CHAM,               /* Cham */
+  G_UNICODE_SCRIPT_OL_CHIKI,           /* Olck */
+  G_UNICODE_SCRIPT_VAI,                /* Vaii */
+  G_UNICODE_SCRIPT_CARIAN,             /* Cari */
+  G_UNICODE_SCRIPT_LYCIAN,             /* Lyci */
+  G_UNICODE_SCRIPT_LYDIAN,             /* Lydi */
+
+  /* Unicode-5.2 additions */
+  G_UNICODE_SCRIPT_AVESTAN,                /* Avst */
+  G_UNICODE_SCRIPT_BAMUM,                  /* Bamu */
+  G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS,   /* Egyp */
+  G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC,       /* Armi */
+  G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI,  /* Phli */
+  G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN, /* Prti */
+  G_UNICODE_SCRIPT_JAVANESE,               /* Java */
+  G_UNICODE_SCRIPT_KAITHI,                 /* Kthi */
+  G_UNICODE_SCRIPT_LISU,                   /* Lisu */
+  G_UNICODE_SCRIPT_MEETEI_MAYEK,           /* Mtei */
+  G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN,      /* Sarb */
+  G_UNICODE_SCRIPT_OLD_TURKIC,             /* Orkh */
+  G_UNICODE_SCRIPT_SAMARITAN,              /* Samr */
+  G_UNICODE_SCRIPT_TAI_THAM,               /* Lana */
+  G_UNICODE_SCRIPT_TAI_VIET,               /* Tavt */
+
+  /* Unicode-6.0 additions */
+  G_UNICODE_SCRIPT_BATAK,                  /* Batk */
+  G_UNICODE_SCRIPT_BRAHMI,                 /* Brah */
+  G_UNICODE_SCRIPT_MANDAIC,                /* Mand */
+
+  /* Unicode-6.1 additions */
+  G_UNICODE_SCRIPT_CHAKMA,                 /* Cakm */
+  G_UNICODE_SCRIPT_MEROITIC_CURSIVE,       /* Merc */
+  G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS,   /* Mero */
+  G_UNICODE_SCRIPT_MIAO,                   /* Plrd */
+  G_UNICODE_SCRIPT_SHARADA,                /* Shrd */
+  G_UNICODE_SCRIPT_SORA_SOMPENG,           /* Sora */
+  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
+   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,
+                                 gsize     result_len);
+
+/**
+ * G_UNICHAR_MAX_DECOMPOSITION_LENGTH:
+ *
+ * The maximum length (in codepoints) of a compatibility or canonical
+ * decomposition of a single Unicode character.
+ *
+ * This is as defined by Unicode 6.1.
+ *
+ * Since: 2.32
+ */
+#define G_UNICHAR_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */
+
+/* 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);
+
+
+GLIB_DEPRECATED_IN_2_30
+gunichar *g_unicode_canonical_decomposition (gunichar  ch,
+                                             gsize    *result_len) G_GNUC_MALLOC;
+
+/* Array of skip-bytes-per-initial character.
+ */
+GLIB_VAR const gchar * const g_utf8_skip;
+
+/**
+ * g_utf8_next_char:
+ * @p: Pointer to the start of a valid UTF-8 character
+ *
+ * Skips to the next character in a UTF-8 string. The string must be
+ * valid; this macro is as fast as possible, and has no error-checking.
+ * You would use this macro to iterate over a string character by
+ * character. The macro returns the start of the next UTF-8 character.
+ * Before using this macro, use g_utf8_validate() to validate strings
+ * that may contain invalid UTF-8.
+ */
+#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;
+
+GLIB_AVAILABLE_IN_2_30
+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;
+
+/**
+ * GNormalizeMode:
+ * @G_NORMALIZE_DEFAULT: standardize differences that do not affect the
+ *     text content, such as the above-mentioned accent representation
+ * @G_NORMALIZE_NFD: another name for %G_NORMALIZE_DEFAULT
+ * @G_NORMALIZE_DEFAULT_COMPOSE: like %G_NORMALIZE_DEFAULT, but with
+ *     composed forms rather than a maximally decomposed form
+ * @G_NORMALIZE_NFC: another name for %G_NORMALIZE_DEFAULT_COMPOSE
+ * @G_NORMALIZE_ALL: beyond %G_NORMALIZE_DEFAULT also standardize the
+ *     "compatibility" characters in Unicode, such as SUPERSCRIPT THREE
+ *     to the standard forms (in this case DIGIT THREE). Formatting
+ *     information may be lost but for most text operations such
+ *     characters should be considered the same
+ * @G_NORMALIZE_NFKD: another name for %G_NORMALIZE_ALL
+ * @G_NORMALIZE_ALL_COMPOSE: like %G_NORMALIZE_ALL, but with composed
+ *     forms rather than a maximally decomposed form
+ * @G_NORMALIZE_NFKC: another name for %G_NORMALIZE_ALL_COMPOSE
+ *
+ * Defines how a Unicode string is transformed in a canonical
+ * form, standardizing such issues as whether a character with
+ * an accent is represented as a base character and combining
+ * accent or as a single precomposed character. Unicode strings
+ * should generally be normalized before comparing them.
+ */
+typedef enum {
+  G_NORMALIZE_DEFAULT,
+  G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT,
+  G_NORMALIZE_DEFAULT_COMPOSE,
+  G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE,
+  G_NORMALIZE_ALL,
+  G_NORMALIZE_NFKD = G_NORMALIZE_ALL,
+  G_NORMALIZE_ALL_COMPOSE,
+  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
+
+#endif /* __G_UNICODE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gurifuncs.h b/dist/usr/include/glib-2.0/glib/gurifuncs.h
new file mode 100644
index 0000000..9f89770
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gurifuncs.h
@@ -0,0 +1,85 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2006-2007 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.
+ *
+ * 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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_URI_RESERVED_CHARS_GENERIC_DELIMITERS:
+ * 
+ * Generic delimiters characters as defined in RFC 3986. Includes ":/?#[]@".
+ **/
+#define G_URI_RESERVED_CHARS_GENERIC_DELIMITERS ":/?#[]@"
+
+/**
+ * G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS:
+ * 
+ * Subcomponent delimiter characters as defined in RFC 3986. Includes "!$&'()*+,;=".
+ **/
+#define G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS "!$&'()*+,;="
+
+/**
+ * G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT:
+ * 
+ * Allowed characters in path elements. Includes "!$&'()*+,;=:@".
+ **/
+#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":@"
+
+/**
+ * G_URI_RESERVED_CHARS_ALLOWED_IN_PATH:
+ * 
+ * Allowed characters in a path. Includes "!$&'()*+,;=:@/".
+ **/
+#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT "/"
+
+/**
+ * G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO:
+ * 
+ * Allowed characters in userinfo as defined in RFC 3986. Includes "!$&'()*+,;=:".
+ **/
+#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);
+
+G_END_DECLS
+
+#endif /* __G_URI_FUNCS_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gutils.h b/dist/usr/include/glib-2.0/glib/gutils.h
new file mode 100644
index 0000000..472f3c2
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gutils.h
@@ -0,0 +1,385 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+#include <stdarg.h>
+
+G_BEGIN_DECLS
+
+/* Define G_VA_COPY() to do the right thing for copying va_list variables.
+ * glibconfig.h may have already defined G_VA_COPY as va_copy or __va_copy.
+ */
+#if !defined (G_VA_COPY)
+#  if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32))
+#    define G_VA_COPY(ap1, ap2)	  (*(ap1) = *(ap2))
+#  elif defined (G_VA_COPY_AS_ARRAY)
+#    define G_VA_COPY(ap1, ap2)	  g_memmove ((ap1), (ap2), sizeof (va_list))
+#  else /* va_list is a pointer */
+#    define G_VA_COPY(ap1, ap2)	  ((ap1) = (ap2))
+#  endif /* va_list is a pointer */
+#endif /* !G_VA_COPY */
+
+/* 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'.
+ * 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 
+ * export the function prototypes if no inlining can be performed.
+ * inline function bodies have to be special cased with G_CAN_INLINE and a
+ * .c file specific macro to allow one compiled instance with extern linkage
+ * of the functions by defining G_IMPLEMENT_INLINES and the .c file macro.
+ */
+#if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
+#  undef inline
+#  define inline __inline__
+#elif !defined (G_HAVE_INLINE)
+#  undef inline
+#  if defined (G_HAVE___INLINE__)
+#    define inline __inline__
+#  elif defined (G_HAVE___INLINE)
+#    define inline __inline
+#  else /* !inline && !__inline__ && !__inline */
+#    define inline  /* don't inline, then */
+#  endif
+#endif
+#ifdef G_IMPLEMENT_INLINES
+#  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 _GLIB_EXTERN
+#endif /* !G_INLINE_FUNC */
+
+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);
+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
+
+#if defined (G_OS_WIN32) && defined (G_CAN_INLINE) && !defined (__cplusplus)
+/* This function is not part of the public GLib API either. Just call
+ * g_get_system_data_dirs() in your code, never mind that that is
+ * actually a macro and you will in fact call this inline function.
+ */
+static inline const gchar * const *
+_g_win32_get_system_data_dirs (void)
+{
+  return g_win32_get_system_data_dirs_for_module ((void (*)(void)) &_g_win32_get_system_data_dirs);
+}
+#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);
+
+/**
+ * GUserDirectory:
+ * @G_USER_DIRECTORY_DESKTOP: the user's Desktop directory
+ * @G_USER_DIRECTORY_DOCUMENTS: the user's Documents directory
+ * @G_USER_DIRECTORY_DOWNLOAD: the user's Downloads directory
+ * @G_USER_DIRECTORY_MUSIC: the user's Music directory
+ * @G_USER_DIRECTORY_PICTURES: the user's Pictures directory
+ * @G_USER_DIRECTORY_PUBLIC_SHARE: the user's shared directory
+ * @G_USER_DIRECTORY_TEMPLATES: the user's Templates directory
+ * @G_USER_DIRECTORY_VIDEOS: the user's Movies directory
+ * @G_USER_N_DIRECTORIES: the number of enum values
+ *
+ * These are logical ids for special directories which are defined
+ * depending on the platform used. You should use g_get_user_special_dir()
+ * to retrieve the full path associated to the logical id.
+ *
+ * The #GUserDirectory enumeration can be extended at later date. Not
+ * every platform has a directory for every logical id in this
+ * enumeration.
+ *
+ * Since: 2.14
+ */
+typedef enum {
+  G_USER_DIRECTORY_DESKTOP,
+  G_USER_DIRECTORY_DOCUMENTS,
+  G_USER_DIRECTORY_DOWNLOAD,
+  G_USER_DIRECTORY_MUSIC,
+  G_USER_DIRECTORY_PICTURES,
+  G_USER_DIRECTORY_PUBLIC_SHARE,
+  G_USER_DIRECTORY_TEMPLATES,
+  G_USER_DIRECTORY_VIDEOS,
+
+  G_USER_N_DIRECTORIES
+} GUserDirectory;
+
+GLIB_AVAILABLE_IN_ALL
+const gchar * g_get_user_special_dir (GUserDirectory directory);
+
+/**
+ * GDebugKey:
+ * @key: the string
+ * @value: the flag
+ *
+ * Associates a string with a bit flag.
+ * Used in g_parse_debug_string().
+ */
+typedef struct _GDebugKey GDebugKey;
+struct _GDebugKey
+{
+  const gchar *key;
+  guint	       value;
+};
+
+/* 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)
+					    G_GNUC_PRINTF(3, 0);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_nullify_pointer    (gpointer    *nullify_location);
+
+typedef enum
+{
+  G_FORMAT_SIZE_DEFAULT     = 0,
+  G_FORMAT_SIZE_LONG_FORMAT = 1 << 0,
+  G_FORMAT_SIZE_IEC_UNITS   = 1 << 1
+} GFormatSizeFlags;
+
+GLIB_AVAILABLE_IN_2_30
+gchar *g_format_size_full   (guint64          size,
+                             GFormatSizeFlags flags);
+GLIB_AVAILABLE_IN_2_30
+gchar *g_format_size        (guint64          size);
+
+GLIB_DEPRECATED_FOR(g_format_size)
+gchar *g_format_size_for_display (goffset size);
+
+#ifndef G_DISABLE_DEPRECATED
+/**
+ * GVoidFunc:
+ *
+ * Declares a type of function which takes no arguments
+ * and has no return value. It is used to specify the type
+ * function passed to g_atexit().
+ */
+typedef void (*GVoidFunc) (void);
+#ifndef ATEXIT
+# define ATEXIT(proc) g_ATEXIT(proc)
+#else
+# define G_NATIVE_ATEXIT
+#endif /* ATEXIT */
+/* we use a GLib function as a replacement for ATEXIT, so
+ * the programmer is not required to check the return value
+ * (if there is any in the implementation) and doesn't encounter
+ * missing include files.
+ */
+GLIB_DEPRECATED
+void	g_atexit		(GVoidFunc    func);
+
+#ifdef G_OS_WIN32
+/* It's a bad idea to wrap atexit() on Windows. If the GLib DLL calls
+ * atexit(), the function will be called when the GLib DLL is detached
+ * from the program, which is not what the caller wants. The caller
+ * wants the function to be called when it *itself* exits (or is
+ * detached, in case the caller, too, is a DLL).
+ */
+#if (defined(__MINGW_H) && !defined(_STDLIB_H_)) || (defined(_MSC_VER) && !defined(_INC_STDLIB))
+int atexit (void (*)(void));
+#endif
+#define g_atexit(func) atexit(func)
+#endif
+
+#endif  /* G_DISABLE_DEPRECATED */
+
+
+/* Look for an executable in PATH, following execvp() rules */
+GLIB_AVAILABLE_IN_ALL
+gchar*  g_find_program_in_path  (const gchar *program);
+
+/* Bit tests
+ */
+G_INLINE_FUNC gint	g_bit_nth_lsf (gulong  mask,
+				       gint    nth_bit) G_GNUC_CONST;
+G_INLINE_FUNC gint	g_bit_nth_msf (gulong  mask,
+				       gint    nth_bit) G_GNUC_CONST;
+G_INLINE_FUNC guint	g_bit_storage (gulong  number) G_GNUC_CONST;
+
+/* inline function implementations
+ */
+#if defined (G_CAN_INLINE) || defined (__G_UTILS_C__)
+G_INLINE_FUNC gint
+g_bit_nth_lsf (gulong mask,
+	       gint   nth_bit)
+{
+  if (G_UNLIKELY (nth_bit < -1))
+    nth_bit = -1;
+  while (nth_bit < ((GLIB_SIZEOF_LONG * 8) - 1))
+    {
+      nth_bit++;
+      if (mask & (1UL << nth_bit))
+	return nth_bit;
+    }
+  return -1;
+}
+G_INLINE_FUNC gint
+g_bit_nth_msf (gulong mask,
+	       gint   nth_bit)
+{
+  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
+    nth_bit = GLIB_SIZEOF_LONG * 8;
+  while (nth_bit > 0)
+    {
+      nth_bit--;
+      if (mask & (1UL << nth_bit))
+	return nth_bit;
+    }
+  return -1;
+}
+G_INLINE_FUNC guint
+g_bit_storage (gulong number)
+{
+#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__)
+  return G_LIKELY (number) ?
+	   ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1;
+#else
+  register guint n_bits = 0;
+  
+  do
+    {
+      n_bits++;
+      number >>= 1;
+    }
+  while (number);
+  return n_bits;
+#endif
+}
+#endif  /* G_CAN_INLINE || __G_UTILS_C__ */
+
+#ifndef G_DISABLE_DEPRECATED
+
+/*
+ * This macro is deprecated. This DllMain() is too complex. It is
+ * recommended to write an explicit minimal DLlMain() that just saves
+ * the handle to the DLL and then use that handle instead, for
+ * instance passing it to
+ * g_win32_get_package_installation_directory_of_module().
+ *
+ * On Windows, this macro defines a DllMain function that stores the
+ * actual DLL name that the code being compiled will be included in.
+ * STATIC should be empty or 'static'. DLL_NAME is the name of the
+ * (pointer to the) char array where the DLL name will be stored. If
+ * this is used, you must also include <windows.h>. If you need a more complex
+ * DLL entry point function, you cannot use this.
+ *
+ * On non-Windows platforms, expands to nothing.
+ */
+
+#ifndef G_PLATFORM_WIN32
+# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
+#else
+# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)			\
+static char *dll_name;							\
+									\
+BOOL WINAPI								\
+DllMain (HINSTANCE hinstDLL,						\
+	 DWORD     fdwReason,						\
+	 LPVOID    lpvReserved)						\
+{									\
+  wchar_t wcbfr[1000];							\
+  char *tem;								\
+  switch (fdwReason)							\
+    {									\
+    case DLL_PROCESS_ATTACH:						\
+      GetModuleFileNameW ((HMODULE) hinstDLL, wcbfr, G_N_ELEMENTS (wcbfr)); \
+      tem = g_utf16_to_utf8 (wcbfr, -1, NULL, NULL, NULL);		\
+      dll_name = g_path_get_basename (tem);				\
+      g_free (tem);							\
+      break;								\
+    }									\
+									\
+  return TRUE;								\
+}
+
+#endif	/* !G_DISABLE_DEPRECATED */
+
+#endif /* G_PLATFORM_WIN32 */
+
+G_END_DECLS
+
+#endif /* __G_UTILS_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gvariant.h b/dist/usr/include/glib-2.0/glib/gvariant.h
new file mode 100644
index 0000000..7e9a823
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gvariant.h
@@ -0,0 +1,397 @@
+/*
+ * Copyright © 2007, 2008 Ryan Lortie
+ * Copyright © 2009, 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * 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
+
+#include <glib/gvarianttype.h>
+#include <glib/gstring.h>
+#include <glib/gbytes.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GVariant        GVariant;
+
+typedef enum
+{
+  G_VARIANT_CLASS_BOOLEAN       = 'b',
+  G_VARIANT_CLASS_BYTE          = 'y',
+  G_VARIANT_CLASS_INT16         = 'n',
+  G_VARIANT_CLASS_UINT16        = 'q',
+  G_VARIANT_CLASS_INT32         = 'i',
+  G_VARIANT_CLASS_UINT32        = 'u',
+  G_VARIANT_CLASS_INT64         = 'x',
+  G_VARIANT_CLASS_UINT64        = 't',
+  G_VARIANT_CLASS_HANDLE        = 'h',
+  G_VARIANT_CLASS_DOUBLE        = 'd',
+  G_VARIANT_CLASS_STRING        = 's',
+  G_VARIANT_CLASS_OBJECT_PATH   = 'o',
+  G_VARIANT_CLASS_SIGNATURE     = 'g',
+  G_VARIANT_CLASS_VARIANT       = 'v',
+  G_VARIANT_CLASS_MAYBE         = 'm',
+  G_VARIANT_CLASS_ARRAY         = 'a',
+  G_VARIANT_CLASS_TUPLE         = '(',
+  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_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,
+                                                                         gboolean              trusted,
+                                                                         GDestroyNotify        notify,
+                                                                         gpointer              user_data);
+
+typedef struct _GVariantIter GVariantIter;
+struct _GVariantIter {
+  /*< private >*/
+  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,
+                                                                         ...);
+
+
+typedef struct _GVariantBuilder GVariantBuilder;
+struct _GVariantBuilder {
+  /*< private >*/
+  gsize x[16];
+};
+
+typedef enum
+{
+  G_VARIANT_PARSE_ERROR_FAILED,
+  G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED,
+  G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE,
+  G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED,
+  G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END,
+  G_VARIANT_PARSE_ERROR_INVALID_CHARACTER,
+  G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING,
+  G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH,
+  G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE,
+  G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING,
+  G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE,
+  G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE,
+  G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG,
+  G_VARIANT_PARSE_ERROR_TYPE_ERROR,
+  G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN,
+  G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD,
+  G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
+  G_VARIANT_PARSE_ERROR_VALUE_EXPECTED
+} 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
+
+#endif /* __G_VARIANT_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gvarianttype.h b/dist/usr/include/glib-2.0/glib/gvarianttype.h
new file mode 100644
index 0000000..81e324f
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gvarianttype.h
@@ -0,0 +1,382 @@
+/*
+ * Copyright © 2007, 2008 Ryan Lortie
+ * Copyright © 2009, 2010 Codethink Limited
+ *
+ * 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 licence, 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.
+ *
+ * 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
+
+#include <glib/gmessages.h>
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GVariantType:
+ *
+ * A type in the GVariant type system.
+ *
+ * Two types may not be compared by value; use g_variant_type_equal() or
+ * g_variant_type_is_subtype_of().  May be copied using
+ * g_variant_type_copy() and freed using g_variant_type_free().
+ **/
+typedef struct _GVariantType GVariantType;
+
+/**
+ * G_VARIANT_TYPE_BOOLEAN:
+ *
+ * The type of a value that can be either %TRUE or %FALSE.
+ **/
+#define G_VARIANT_TYPE_BOOLEAN              ((const GVariantType *) "b")
+
+/**
+ * G_VARIANT_TYPE_BYTE:
+ *
+ * The type of an integer value that can range from 0 to 255.
+ **/
+#define G_VARIANT_TYPE_BYTE                 ((const GVariantType *) "y")
+
+/**
+ * G_VARIANT_TYPE_INT16:
+ *
+ * The type of an integer value that can range from -32768 to 32767.
+ **/
+#define G_VARIANT_TYPE_INT16                ((const GVariantType *) "n")
+
+/**
+ * G_VARIANT_TYPE_UINT16:
+ *
+ * The type of an integer value that can range from 0 to 65535.
+ * There were about this many people living in Toronto in the 1870s.
+ **/
+#define G_VARIANT_TYPE_UINT16               ((const GVariantType *) "q")
+
+/**
+ * G_VARIANT_TYPE_INT32:
+ *
+ * The type of an integer value that can range from -2147483648 to
+ * 2147483647.
+ **/
+#define G_VARIANT_TYPE_INT32                ((const GVariantType *) "i")
+
+/**
+ * G_VARIANT_TYPE_UINT32:
+ *
+ * The type of an integer value that can range from 0 to 4294967295.
+ * That's one number for everyone who was around in the late 1970s.
+ **/
+#define G_VARIANT_TYPE_UINT32               ((const GVariantType *) "u")
+
+/**
+ * G_VARIANT_TYPE_INT64:
+ *
+ * The type of an integer value that can range from
+ * -9223372036854775808 to 9223372036854775807.
+ **/
+#define G_VARIANT_TYPE_INT64                ((const GVariantType *) "x")
+
+/**
+ * G_VARIANT_TYPE_UINT64:
+ *
+ * The type of an integer value that can range from 0 to
+ * 18446744073709551616.  That's a really big number, but a Rubik's
+ * cube can have a bit more than twice as many possible positions.
+ **/
+#define G_VARIANT_TYPE_UINT64               ((const GVariantType *) "t")
+
+/**
+ * G_VARIANT_TYPE_DOUBLE:
+ *
+ * The type of a double precision IEEE754 floating point number.
+ * These guys go up to about 1.80e308 (plus and minus) but miss out on
+ * some numbers in between.  In any case, that's far greater than the
+ * estimated number of fundamental particles in the observable
+ * universe.
+ **/
+#define G_VARIANT_TYPE_DOUBLE               ((const GVariantType *) "d")
+
+/**
+ * G_VARIANT_TYPE_STRING:
+ *
+ * The type of a string.  "" is a string.  %NULL is not a string.
+ **/
+#define G_VARIANT_TYPE_STRING               ((const GVariantType *) "s")
+
+/**
+ * G_VARIANT_TYPE_OBJECT_PATH:
+ *
+ * The type of a D-Bus object reference.  These are strings of a
+ * specific format used to identify objects at a given destination on
+ * the bus.
+ *
+ * If you are not interacting with D-Bus, then there is no reason to make
+ * use of this type.  If you are, then the D-Bus specification contains a
+ * precise description of valid object paths.
+ **/
+#define G_VARIANT_TYPE_OBJECT_PATH          ((const GVariantType *) "o")
+
+/**
+ * G_VARIANT_TYPE_SIGNATURE:
+ *
+ * The type of a D-Bus type signature.  These are strings of a specific
+ * format used as type signatures for D-Bus methods and messages.
+ *
+ * If you are not interacting with D-Bus, then there is no reason to make
+ * use of this type.  If you are, then the D-Bus specification contains a
+ * precise description of valid signature strings.
+ **/
+#define G_VARIANT_TYPE_SIGNATURE            ((const GVariantType *) "g")
+
+/**
+ * G_VARIANT_TYPE_VARIANT:
+ *
+ * The type of a box that contains any other value (including another
+ * variant).
+ **/
+#define G_VARIANT_TYPE_VARIANT              ((const GVariantType *) "v")
+
+/**
+ * G_VARIANT_TYPE_HANDLE:
+ *
+ * The type of a 32bit signed integer value, that by convention, is used
+ * as an index into an array of file descriptors that are sent alongside
+ * a D-Bus message.
+ *
+ * If you are not interacting with D-Bus, then there is no reason to make
+ * use of this type.
+ **/
+#define G_VARIANT_TYPE_HANDLE               ((const GVariantType *) "h")
+
+/**
+ * G_VARIANT_TYPE_UNIT:
+ *
+ * The empty tuple type.  Has only one instance.  Known also as "triv"
+ * or "void".
+ **/
+#define G_VARIANT_TYPE_UNIT                 ((const GVariantType *) "()")
+
+/**
+ * G_VARIANT_TYPE_ANY:
+ *
+ * An indefinite type that is a supertype of every type (including
+ * itself).
+ **/
+#define G_VARIANT_TYPE_ANY                  ((const GVariantType *) "*")
+
+/**
+ * G_VARIANT_TYPE_BASIC:
+ *
+ * An indefinite type that is a supertype of every basic (ie:
+ * non-container) type.
+ **/
+#define G_VARIANT_TYPE_BASIC                ((const GVariantType *) "?")
+
+/**
+ * G_VARIANT_TYPE_MAYBE:
+ *
+ * An indefinite type that is a supertype of every maybe type.
+ **/
+#define G_VARIANT_TYPE_MAYBE                ((const GVariantType *) "m*")
+
+/**
+ * G_VARIANT_TYPE_ARRAY:
+ *
+ * An indefinite type that is a supertype of every array type.
+ **/
+#define G_VARIANT_TYPE_ARRAY                ((const GVariantType *) "a*")
+
+/**
+ * G_VARIANT_TYPE_TUPLE:
+ *
+ * An indefinite type that is a supertype of every tuple type,
+ * regardless of the number of items in the tuple.
+ **/
+#define G_VARIANT_TYPE_TUPLE                ((const GVariantType *) "r")
+
+/**
+ * G_VARIANT_TYPE_DICT_ENTRY:
+ *
+ * An indefinite type that is a supertype of every dictionary entry
+ * type.
+ **/
+#define G_VARIANT_TYPE_DICT_ENTRY           ((const GVariantType *) "{?*}")
+
+/**
+ * G_VARIANT_TYPE_DICTIONARY:
+ *
+ * An indefinite type that is a supertype of every dictionary type --
+ * that is, any array type that has an element type equal to any
+ * dictionary entry type.
+ **/
+#define G_VARIANT_TYPE_DICTIONARY           ((const GVariantType *) "a{?*}")
+
+/**
+ * G_VARIANT_TYPE_STRING_ARRAY:
+ *
+ * The type of an array of strings.
+ **/
+#define G_VARIANT_TYPE_STRING_ARRAY         ((const GVariantType *) "as")
+
+/**
+ * G_VARIANT_TYPE_OBJECT_PATH_ARRAY:
+ *
+ * The type of an array of object paths.
+ **/
+#define G_VARIANT_TYPE_OBJECT_PATH_ARRAY    ((const GVariantType *) "ao")
+
+/**
+ * G_VARIANT_TYPE_BYTESTRING:
+ *
+ * The type of an array of bytes.  This type is commonly used to pass
+ * around strings that may not be valid utf8.  In that case, the
+ * convention is that the nul terminator character should be included as
+ * the last character in the array.
+ **/
+#define G_VARIANT_TYPE_BYTESTRING           ((const GVariantType *) "ay")
+
+/**
+ * G_VARIANT_TYPE_BYTESTRING_ARRAY:
+ *
+ * The type of an array of byte strings (an array of arrays of bytes).
+ **/
+#define G_VARIANT_TYPE_BYTESTRING_ARRAY     ((const GVariantType *) "aay")
+
+/**
+ * G_VARIANT_TYPE_VARDICT:
+ *
+ * The type of a dictionary mapping strings to variants (the ubiquitous
+ * "a{sv}" type).
+ *
+ * Since: 2.30
+ **/
+#define G_VARIANT_TYPE_VARDICT              ((const GVariantType *) "a{sv}")
+
+
+/**
+ * G_VARIANT_TYPE:
+ * @type_string: a well-formed #GVariantType type string
+ *
+ * Converts a string to a const #GVariantType.  Depending on the
+ * current debugging level, this function may perform a runtime check
+ * to ensure that @string is a valid GVariant type string.
+ *
+ * It is always a programmer error to use this macro with an invalid
+ * type string. If in doubt, use g_variant_type_string_is_valid() to
+ * check if the string is valid.
+ *
+ * Since 2.24
+ **/
+#ifndef G_DISABLE_CHECKS
+# define G_VARIANT_TYPE(type_string)            (g_variant_type_checked_ ((type_string)))
+#else
+# define G_VARIANT_TYPE(type_string)            ((const GVariantType *) (type_string))
+#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
+
+#endif /* __G_VARIANT_TYPE_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gversion.h b/dist/usr/include/glib-2.0/glib/gversion.h
new file mode 100644
index 0000000..7eb414d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gversion.h
@@ -0,0 +1,57 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+G_BEGIN_DECLS
+
+GLIB_VAR const guint glib_major_version;
+GLIB_VAR const guint glib_minor_version;
+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);
+
+#define GLIB_CHECK_VERSION(major,minor,micro)    \
+    (GLIB_MAJOR_VERSION > (major) || \
+     (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION > (minor)) || \
+     (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION == (minor) && \
+      GLIB_MICRO_VERSION >= (micro)))
+
+G_END_DECLS
+
+#endif /*  __G_VERSION_H__ */
diff --git a/dist/usr/include/glib-2.0/glib/gversionmacros.h b/dist/usr/include/glib-2.0/glib/gversionmacros.h
new file mode 100644
index 0000000..b591534
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gversionmacros.h
@@ -0,0 +1,299 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+/* Version boundaries checks */
+
+#define G_ENCODE_VERSION(major,minor)   ((major) << 16 | (minor) << 8)
+
+/* XXX: Every new stable minor release bump should add a macro here */
+
+/**
+ * GLIB_VERSION_2_26:
+ *
+ * A macro that evaluates to the 2.26 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.32
+ */
+#define GLIB_VERSION_2_26       (G_ENCODE_VERSION (2, 26))
+
+/**
+ * GLIB_VERSION_2_28:
+ *
+ * A macro that evaluates to the 2.28 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.32
+ */
+#define GLIB_VERSION_2_28       (G_ENCODE_VERSION (2, 28))
+
+/**
+ * GLIB_VERSION_2_30:
+ *
+ * A macro that evaluates to the 2.30 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.32
+ */
+#define GLIB_VERSION_2_30       (G_ENCODE_VERSION (2, 30))
+
+/**
+ * GLIB_VERSION_2_32:
+ *
+ * A macro that evaluates to the 2.32 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.32
+ */
+#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
+ */
+#if (GLIB_MINOR_VERSION % 2)
+#define GLIB_VERSION_CUR_STABLE         (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION + 1))
+#else
+#define GLIB_VERSION_CUR_STABLE         (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION))
+#endif
+
+/* evaluates to the previous stable version */
+#if (GLIB_MINOR_VERSION % 2)
+#define GLIB_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION - 1))
+#else
+#define GLIB_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION - 2))
+#endif
+
+/**
+ * GLIB_VERSION_MIN_REQUIRED:
+ *
+ * A macro that should be defined by the user prior to including
+ * the glib.h header.
+ * The definition should be one of the predefined GLib version
+ * macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,...
+ *
+ * This macro defines the earliest version of GLib that the package is
+ * required to be able to compile against.
+ *
+ * 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_CUR_STABLE)
+#elif GLIB_VERSION_MIN_REQUIRED == 0
+# undef  GLIB_VERSION_MIN_REQUIRED
+# define GLIB_VERSION_MIN_REQUIRED      (GLIB_VERSION_CUR_STABLE + 2)
+#endif
+
+/**
+ * GLIB_VERSION_MAX_ALLOWED:
+ *
+ * A macro that should be defined by the user prior to including
+ * the glib.h header.
+ * The definition should be one of the predefined GLib version
+ * macros: %GLIB_VERSION_2_26, %GLIB_VERSION_2_28,...
+ *
+ * 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.
+ *
+ * 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
+ */
+#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
+#if GLIB_VERSION_MIN_REQUIRED < GLIB_VERSION_2_26
+#error "GLIB_VERSION_MIN_REQUIRED must be >= GLIB_VERSION_2_26"
+#endif
+
+/* These macros are used to mark deprecated functions in GLib headers,
+ * and thus have to be exposed in installed headers. But please
+ * 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 */
+
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_26
+# 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                _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                 _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                _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                 _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                _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                 _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                _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                 _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/dist/usr/include/glib-2.0/glib/gwin32.h b/dist/usr/include/glib-2.0/glib/gwin32.h
new file mode 100644
index 0000000..ae87a45
--- /dev/null
+++ b/dist/usr/include/glib-2.0/glib/gwin32.h
@@ -0,0 +1,133 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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/.
+ */
+
+#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
+
+#include <glib/gtypes.h>
+
+#ifdef G_PLATFORM_WIN32
+
+G_BEGIN_DECLS
+
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+#ifdef G_OS_WIN32
+
+/*
+ * To get prototypes for the following POSIXish functions, you have to
+ * include the indicated non-POSIX headers. The functions are defined
+ * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). But note that
+ * for POSIX functions that take or return file names in the system
+ * codepage, in many cases you would want to use the GLib wrappers in
+ * gstdio.h and UTF-8 instead.
+ *
+ * getcwd: <direct.h> (MSVC), <io.h> (mingw32)
+ * getpid: <process.h>
+ * access: <io.h>
+ * unlink: <stdio.h> or <io.h>
+ * open, read, write, lseek, close: <io.h>
+ * rmdir: <io.h>
+ * pipe: <io.h> (actually, _pipe())
+ */
+
+/* For some POSIX functions that are not provided by the MS runtime,
+ * we provide emulation functions in glib, which are prefixed with
+ * 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 */
+
+/* The MS setlocale uses locale names of the form "English_United
+ * States.1252" etc. We want the Unixish standard form "en", "zh_TW"
+ * etc. This function gets the current thread locale from Windows and
+ * 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 _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 */
+#define G_WIN32_IS_NT_BASED() TRUE
+#define G_WIN32_HAVE_WIDECHAR_API() TRUE
+
+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/dist/usr/include/glib-2.0/gmodule.h b/dist/usr/include/glib-2.0/gmodule.h
new file mode 100644
index 0000000..cb9b119
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gmodule.h
@@ -0,0 +1,117 @@
+/* GMODULE - GLIB wrapper code for dynamic module loading
+ * Copyright (C) 1998 Tim Janik
+ *
+ * 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/. 
+ */
+
+#ifndef __GMODULE_H__
+#define __GMODULE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* exporting and importing functions, this is special cased
+ * to feature Windows dll stubs.
+ */
+#define	G_MODULE_IMPORT		extern
+#ifdef G_PLATFORM_WIN32
+#  define	G_MODULE_EXPORT		__declspec(dllexport)
+#else /* !G_PLATFORM_WIN32 */
+#  define	G_MODULE_EXPORT
+#endif /* !G_PLATFORM_WIN32 */
+
+typedef enum
+{
+  G_MODULE_BIND_LAZY	= 1 << 0,
+  G_MODULE_BIND_LOCAL	= 1 << 1,
+  G_MODULE_BIND_MASK	= 0x03
+} GModuleFlags;
+
+typedef	struct _GModule			 GModule;
+typedef const gchar* (*GModuleCheckInit) (GModule	*module);
+typedef void	     (*GModuleUnload)	 (GModule	*module);
+
+/* return TRUE if dynamic module loading is supported */
+GLIB_AVAILABLE_IN_ALL
+gboolean	g_module_supported	   (void) G_GNUC_CONST;
+
+/* open a module 'file_name' and return handle, which is NULL on error */
+GLIB_AVAILABLE_IN_ALL
+GModule*              g_module_open          (const gchar  *file_name,
+					      GModuleFlags  flags);
+
+/* close a previously opened module, returns TRUE on success */
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_module_close         (GModule      *module);
+
+/* make a module resident so g_module_close on it will be ignored */
+GLIB_AVAILABLE_IN_ALL
+void                  g_module_make_resident (GModule      *module);
+
+/* query the last module error as a string */
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_module_error         (void);
+
+/* retrieve a symbol pointer from 'module', returns TRUE on success */
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_module_symbol        (GModule      *module,
+					      const gchar  *symbol_name,
+					      gpointer     *symbol);
+
+/* retrieve the file name from an existing module */
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_module_name          (GModule      *module);
+
+/* Build the actual file name containing a module. 'directory' is the
+ * directory where the module file is supposed to be, or NULL or empty
+ * in which case it should either be in the current directory or, on
+ * some operating systems, in some standard place, for instance on the
+ * PATH. Hence, to be absoultely sure to get the correct module,
+ * always pass in a directory. The file name consists of the directory,
+ * if supplied, and 'module_name' suitably decorated according to
+ * the operating system's conventions (for instance lib*.so or *.dll).
+ *
+ * No checks are made that the file exists, or is of correct type.
+ */
+GLIB_AVAILABLE_IN_ALL
+gchar*                g_module_build_path    (const gchar  *directory,
+					      const gchar  *module_name);
+
+
+#ifndef __GTK_DOC_IGNORE__
+#ifdef G_OS_WIN32
+#define g_module_open g_module_open_utf8
+#define g_module_name g_module_name_utf8
+
+GLIB_AVAILABLE_IN_ALL
+GModule *    g_module_open_utf8 (const gchar  *file_name,
+                                 GModuleFlags  flags);
+GLIB_AVAILABLE_IN_ALL
+const gchar *g_module_name_utf8 (GModule      *module);
+#endif
+#endif
+
+G_END_DECLS
+
+#endif /* __GMODULE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gbinding.h b/dist/usr/include/glib-2.0/gobject/gbinding.h
new file mode 100644
index 0000000..e49ad6d
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gbinding.h
@@ -0,0 +1,148 @@
+/* gbinding.h: Binding for object properties
+ *
+ * Copyright (C) 2010  Intel Corp.
+ *
+ * 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.
+ *
+ * Author: Emmanuele Bassi <ebassi@linux.intel.com>
+ */
+
+#ifndef __G_BINDING_H__
+#define __G_BINDING_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <glib.h>
+#include <gobject/gobject.h>
+
+G_BEGIN_DECLS
+
+#define G_TYPE_BINDING_FLAGS    (g_binding_flags_get_type ())
+
+#define G_TYPE_BINDING          (g_binding_get_type ())
+#define G_BINDING(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_BINDING, GBinding))
+#define G_IS_BINDING(obj)       (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_BINDING))
+
+/**
+ * GBinding:
+ *
+ * <structname>GBinding</structname> is an opaque structure whose members
+ * cannot be accessed directly.
+ *
+ * Since: 2.26
+ */
+typedef struct _GBinding        GBinding;
+
+/**
+ * GBindingTransformFunc:
+ * @binding: a #GBinding
+ * @source_value: the value of the source property
+ * @target_value: the value of the target property
+ * @user_data: data passed to the transform function
+ *
+ * A function to be called to transform the source property of @source
+ * from @source_value into the target property of @target
+ * using @target_value.
+ *
+ * Return value: %TRUE if the transformation was successful, and %FALSE
+ *   otherwise
+ *
+ * Since: 2.26
+ */
+typedef gboolean (* GBindingTransformFunc) (GBinding     *binding,
+                                            const GValue *source_value,
+                                            GValue       *target_value,
+                                            gpointer      user_data);
+
+/**
+ * GBindingFlags:
+ * @G_BINDING_DEFAULT: The default binding; if the source property
+ *   changes, the target property is updated with its value.
+ * @G_BINDING_BIDIRECTIONAL: Bidirectional binding; if either the
+ *   property of the source or the property of the target changes,
+ *   the other is updated.
+ * @G_BINDING_SYNC_CREATE: Synchronize the values of the source and
+ *   target properties when creating the binding; the direction of
+ *   the synchronization is always from the source to the target.
+ * @G_BINDING_INVERT_BOOLEAN: If the two properties being bound are
+ *   booleans, setting one to %TRUE will result in the other being
+ *   set to %FALSE and vice versa. This flag will only work for
+ *   boolean properties, and cannot be used when passing custom
+ *   transformation functions to g_object_bind_property_full().
+ *
+ * Flags to be passed to g_object_bind_property() or
+ * g_object_bind_property_full().
+ *
+ * This enumeration can be extended at later date.
+ *
+ * Since: 2.26
+ */
+typedef enum { /*< prefix=G_BINDING >*/
+  G_BINDING_DEFAULT        = 0,
+
+  G_BINDING_BIDIRECTIONAL  = 1 << 0,
+  G_BINDING_SYNC_CREATE    = 1 << 1,
+  G_BINDING_INVERT_BOOLEAN = 1 << 2
+} GBindingFlags;
+
+GLIB_AVAILABLE_IN_ALL
+GType                 g_binding_flags_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType                 g_binding_get_type            (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GBindingFlags         g_binding_get_flags           (GBinding *binding);
+GLIB_AVAILABLE_IN_ALL
+GObject *             g_binding_get_source          (GBinding *binding);
+GLIB_AVAILABLE_IN_ALL
+GObject *             g_binding_get_target          (GBinding *binding);
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_binding_get_source_property (GBinding *binding);
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_binding_get_target_property (GBinding *binding);
+GLIB_AVAILABLE_IN_2_38
+void                  g_binding_unbind              (GBinding *binding);
+
+GLIB_AVAILABLE_IN_ALL
+GBinding *g_object_bind_property               (gpointer               source,
+                                                const gchar           *source_property,
+                                                gpointer               target,
+                                                const gchar           *target_property,
+                                                GBindingFlags          flags);
+GLIB_AVAILABLE_IN_ALL
+GBinding *g_object_bind_property_full          (gpointer               source,
+                                                const gchar           *source_property,
+                                                gpointer               target,
+                                                const gchar           *target_property,
+                                                GBindingFlags          flags,
+                                                GBindingTransformFunc  transform_to,
+                                                GBindingTransformFunc  transform_from,
+                                                gpointer               user_data,
+                                                GDestroyNotify         notify);
+GLIB_AVAILABLE_IN_ALL
+GBinding *g_object_bind_property_with_closures (gpointer               source,
+                                                const gchar           *source_property,
+                                                gpointer               target,
+                                                const gchar           *target_property,
+                                                GBindingFlags          flags,
+                                                GClosure              *transform_to,
+                                                GClosure              *transform_from);
+
+G_END_DECLS
+
+#endif /* __G_BINDING_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gboxed.h b/dist/usr/include/glib-2.0/gobject/gboxed.h
new file mode 100644
index 0000000..5f6b915
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gboxed.h
@@ -0,0 +1,124 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000-2001 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_BOXED_H__
+#define __G_BOXED_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include        <gobject/gtype.h>
+
+#ifndef __GI_SCANNER__
+#include        <gobject/glib-types.h>
+#endif
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+#define G_TYPE_IS_BOXED(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_BOXED)
+/**
+ * G_VALUE_HOLDS_BOXED:
+ * @value: a valid #GValue structure
+ *
+ * Checks whether the given #GValue can hold values derived
+ * from type %G_TYPE_BOXED.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_BOXED(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOXED))
+
+
+/* --- typedefs --- */
+/**
+ * GBoxedCopyFunc:
+ * @boxed: The boxed structure to be copied.
+ *
+ * This function is provided by the user and should produce a copy
+ * of the passed in boxed structure.
+ *
+ * Returns: The newly created copy of the boxed structure.
+ */
+typedef gpointer (*GBoxedCopyFunc) (gpointer boxed);
+
+/**
+ * GBoxedFreeFunc:
+ * @boxed: The boxed structure to be freed.
+ *
+ * This function is provided by the user and should free the boxed
+ * structure passed.
+ */
+typedef void (*GBoxedFreeFunc) (gpointer boxed);
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+gpointer g_boxed_copy                     (GType boxed_type,
+                                           gconstpointer  src_boxed);
+GLIB_AVAILABLE_IN_ALL
+void     g_boxed_free                     (GType          boxed_type,
+                                           gpointer       boxed);
+GLIB_AVAILABLE_IN_ALL
+void     g_value_set_boxed                (GValue        *value,
+                                           gconstpointer  v_boxed);
+GLIB_AVAILABLE_IN_ALL
+void     g_value_set_static_boxed         (GValue        *value,
+                                           gconstpointer  v_boxed);
+GLIB_AVAILABLE_IN_ALL
+void     g_value_take_boxed               (GValue        *value,
+                                           gconstpointer  v_boxed);
+GLIB_DEPRECATED_FOR(g_value_take_boxed)
+void     g_value_set_boxed_take_ownership (GValue        *value,
+                                           gconstpointer  v_boxed);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_value_get_boxed                (const GValue  *value);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_value_dup_boxed                (const GValue  *value);
+
+
+/* --- convenience --- */
+GLIB_AVAILABLE_IN_ALL
+GType    g_boxed_type_register_static     (const gchar   *name,
+                                           GBoxedCopyFunc boxed_copy,
+                                           GBoxedFreeFunc boxed_free);
+
+/* --- GObject boxed types --- */
+/**
+ * G_TYPE_CLOSURE:
+ *
+ * The #GType for #GClosure.
+ */
+#define G_TYPE_CLOSURE (g_closure_get_type ())
+
+/**
+ * G_TYPE_VALUE:
+ *
+ * The type ID of the "GValue" type which is a boxed type,
+ * used to pass around pointers to GValues.
+ */
+#define G_TYPE_VALUE (g_value_get_type ())
+
+GLIB_AVAILABLE_IN_ALL
+GType   g_closure_get_type         (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_value_get_type           (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif  /* __G_BOXED_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gclosure.h b/dist/usr/include/glib-2.0/gobject/gclosure.h
new file mode 100644
index 0000000..f59aab5
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gclosure.h
@@ -0,0 +1,299 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000-2001 Red Hat, Inc.
+ * Copyright (C) 2005 Imendio AB
+ *
+ * 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_CLOSURE_H__
+#define __G_CLOSURE_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include        <gobject/gtype.h>
+
+G_BEGIN_DECLS
+
+/* --- defines --- */
+/**
+ * G_CLOSURE_NEEDS_MARSHAL:
+ * @closure: a #GClosure
+ * 
+ * Check if the closure still needs a marshaller. See g_closure_set_marshal().
+ *
+ * Returns: %TRUE if a #GClosureMarshal marshaller has not yet been set on 
+ * @closure.
+ */
+#define	G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
+/**
+ * G_CLOSURE_N_NOTIFIERS:
+ * @cl: a #GClosure
+ * 
+ * Get the total number of notifiers connected with the closure @cl. 
+ * The count includes the meta marshaller, the finalize and invalidate notifiers 
+ * and the marshal guards. Note that each guard counts as two notifiers. 
+ * See g_closure_set_meta_marshal(), g_closure_add_finalize_notifier(),
+ * g_closure_add_invalidate_notifier() and g_closure_add_marshal_guards().
+ *
+ * Returns: number of notifiers
+ */
+#define	G_CLOSURE_N_NOTIFIERS(cl)	 (((cl)->n_guards << 1L) + \
+                                          (cl)->n_fnotifiers + (cl)->n_inotifiers)
+/**
+ * G_CCLOSURE_SWAP_DATA:
+ * @cclosure: a #GCClosure
+ * 
+ * Checks whether the user data of the #GCClosure should be passed as the
+ * first parameter to the callback. See g_cclosure_new_swap().
+ *
+ * Returns: %TRUE if data has to be swapped.
+ */
+#define	G_CCLOSURE_SWAP_DATA(cclosure)	 (((GClosure*) (cclosure))->derivative_flag)
+/**
+ * G_CALLBACK:
+ * @f: a function pointer.
+ * 
+ * Cast a function pointer to a #GCallback.
+ */
+#define	G_CALLBACK(f)			 ((GCallback) (f))
+
+
+/* -- typedefs --- */
+typedef struct _GClosure		 GClosure;
+typedef struct _GClosureNotifyData	 GClosureNotifyData;
+
+/**
+ * GCallback:
+ * 
+ * The type used for callback functions in structure definitions and function 
+ * signatures. This doesn't mean that all callback functions must take no 
+ * parameters and return void. The required signature of a callback function 
+ * is determined by the context in which is used (e.g. the signal to which it 
+ * is connected). Use G_CALLBACK() to cast the callback function to a #GCallback. 
+ */
+typedef void  (*GCallback)              (void);
+/**
+ * GClosureNotify:
+ * @data: data specified when registering the notification callback
+ * @closure: the #GClosure on which the notification is emitted
+ * 
+ * The type used for the various notification callbacks which can be registered
+ * on closures.
+ */
+typedef void  (*GClosureNotify)		(gpointer	 data,
+					 GClosure	*closure);
+/**
+ * GClosureMarshal:
+ * @closure: the #GClosure to which the marshaller belongs
+ * @return_value: (allow-none): a #GValue to store the return
+ *  value. May be %NULL if the callback of @closure doesn't return a
+ *  value.
+ * @n_param_values: the length of the @param_values array
+ * @param_values: (array length=n_param_values): an array of
+ *  #GValue<!-- -->s holding the arguments on which to invoke the
+ *  callback of @closure
+ * @invocation_hint: (allow-none): the invocation hint given as the
+ *  last argument to g_closure_invoke()
+ * @marshal_data: (allow-none): additional data specified when
+ *  registering the marshaller, see g_closure_set_marshal() and
+ *  g_closure_set_meta_marshal()
+ * 
+ * The type used for marshaller functions.
+ */
+typedef void  (*GClosureMarshal)	(GClosure	*closure,
+					 GValue         *return_value,
+					 guint           n_param_values,
+					 const GValue   *param_values,
+					 gpointer        invocation_hint,
+					 gpointer	 marshal_data);
+
+typedef void (* GVaClosureMarshal) (GClosure *closure,
+				    GValue   *return_value,
+				    gpointer  instance,
+				    va_list   args,
+				    gpointer  marshal_data,
+				    int       n_params,
+				    GType    *param_types);
+
+/**
+ * GCClosure:
+ * @closure: the #GClosure
+ * @callback: the callback function
+ * 
+ * A #GCClosure is a specialization of #GClosure for C function callbacks.
+ */
+typedef struct _GCClosure		 GCClosure;
+
+
+/* --- structures --- */
+struct _GClosureNotifyData
+{
+  gpointer       data;
+  GClosureNotify notify;
+};
+/**
+ * GClosure:
+ * @in_marshal: Indicates whether the closure is currently being invoked with 
+ *  g_closure_invoke()
+ * @is_invalid: Indicates whether the closure has been invalidated by 
+ *  g_closure_invalidate()
+ * 
+ * A #GClosure represents a callback supplied by the programmer.
+ */
+struct _GClosure
+{
+  /*< private >*/
+  volatile      	guint	 ref_count : 15;
+  /* meta_marshal is not used anymore but must be zero for historical reasons
+     as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */
+  volatile       	guint	 meta_marshal_nouse : 1;
+  volatile       	guint	 n_guards : 1;
+  volatile       	guint	 n_fnotifiers : 2;	/* finalization notifiers */
+  volatile       	guint	 n_inotifiers : 8;	/* invalidation notifiers */
+  volatile       	guint	 in_inotify : 1;
+  volatile       	guint	 floating : 1;
+  /*< protected >*/
+  volatile         	guint	 derivative_flag : 1;
+  /*< public >*/
+  volatile       	guint	 in_marshal : 1;
+  volatile       	guint	 is_invalid : 1;
+
+  /*< private >*/	void   (*marshal)  (GClosure       *closure,
+					    GValue /*out*/ *return_value,
+					    guint           n_param_values,
+					    const GValue   *param_values,
+					    gpointer        invocation_hint,
+					    gpointer	    marshal_data);
+  /*< protected >*/	gpointer data;
+
+  /*< private >*/	GClosureNotifyData *notifiers;
+
+  /* invariants/constrains:
+   * - ->marshal and ->data are _invalid_ as soon as ->is_invalid==TRUE
+   * - invocation of all inotifiers occours prior to fnotifiers
+   * - order of inotifiers is random
+   *   inotifiers may _not_ free/invalidate parameter values (e.g. ->data)
+   * - order of fnotifiers is random
+   * - each notifier may only be removed before or during its invocation
+   * - reference counting may only happen prior to fnotify invocation
+   *   (in that sense, fnotifiers are really finalization handlers)
+   */
+};
+/* closure for C function calls, callback() is the user function
+ */
+struct _GCClosure
+{
+  GClosure	closure;
+  gpointer	callback;
+};
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GClosure* g_cclosure_new			(GCallback	callback_func,
+						 gpointer	user_data,
+						 GClosureNotify destroy_data);
+GLIB_AVAILABLE_IN_ALL
+GClosure* g_cclosure_new_swap			(GCallback	callback_func,
+						 gpointer	user_data,
+						 GClosureNotify destroy_data);
+GLIB_AVAILABLE_IN_ALL
+GClosure* g_signal_type_cclosure_new		(GType          itype,
+						 guint          struct_offset);
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GClosure* g_closure_ref				(GClosure	*closure);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_sink			(GClosure	*closure);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_unref			(GClosure	*closure);
+/* intimidating */
+GLIB_AVAILABLE_IN_ALL
+GClosure* g_closure_new_simple			(guint		 sizeof_closure,
+						 gpointer	 data);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_add_finalize_notifier	(GClosure       *closure,
+						 gpointer	 notify_data,
+						 GClosureNotify	 notify_func);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_remove_finalize_notifier	(GClosure       *closure,
+						 gpointer	 notify_data,
+						 GClosureNotify	 notify_func);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_add_invalidate_notifier	(GClosure       *closure,
+						 gpointer	 notify_data,
+						 GClosureNotify	 notify_func);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_remove_invalidate_notifier	(GClosure       *closure,
+						 gpointer	 notify_data,
+						 GClosureNotify	 notify_func);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_add_marshal_guards		(GClosure	*closure,
+						 gpointer        pre_marshal_data,
+						 GClosureNotify	 pre_marshal_notify,
+						 gpointer        post_marshal_data,
+						 GClosureNotify	 post_marshal_notify);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_set_marshal			(GClosure	*closure,
+						 GClosureMarshal marshal);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_set_meta_marshal		(GClosure       *closure,
+						 gpointer	 marshal_data,
+						 GClosureMarshal meta_marshal);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_invalidate			(GClosure	*closure);
+GLIB_AVAILABLE_IN_ALL
+void	  g_closure_invoke			(GClosure 	*closure,
+						 GValue	/*out*/	*return_value,
+						 guint		 n_param_values,
+						 const GValue	*param_values,
+						 gpointer	 invocation_hint);
+
+/* FIXME:
+   OK:  data_object::destroy		-> closure_invalidate();
+   MIS:	closure_invalidate()		-> disconnect(closure);
+   MIS:	disconnect(closure)		-> (unlink) closure_unref();
+   OK:	closure_finalize()		-> g_free (data_string);
+
+   random remarks:
+   - need marshaller repo with decent aliasing to base types
+   - provide marshaller collection, virtually covering anything out there
+*/
+
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_generic (GClosure     *closure,
+                                 GValue       *return_gvalue,
+                                 guint         n_param_values,
+                                 const GValue *param_values,
+                                 gpointer      invocation_hint,
+                                 gpointer      marshal_data);
+
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_generic_va (GClosure *closure,
+				    GValue   *return_value,
+				    gpointer  instance,
+				    va_list   args_list,
+				    gpointer  marshal_data,
+				    int       n_params,
+				    GType    *param_types);
+
+
+G_END_DECLS
+
+#endif /* __G_CLOSURE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/genums.h b/dist/usr/include/glib-2.0/gobject/genums.h
new file mode 100644
index 0000000..8aa7b89
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/genums.h
@@ -0,0 +1,275 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998-1999, 2000-2001 Tim Janik and 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_ENUMS_H__
+#define __G_ENUMS_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <gobject/gtype.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+/**
+ * G_TYPE_IS_ENUM:
+ * @type: a #GType ID.
+ * 
+ * Checks whether @type "is a" %G_TYPE_ENUM.
+ *
+ * Returns: %TRUE if @type "is a" %G_TYPE_ENUM.
+ */
+#define G_TYPE_IS_ENUM(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM)
+/**
+ * G_ENUM_CLASS:
+ * @class: a valid #GEnumClass
+ * 
+ * Casts a derived #GEnumClass structure into a #GEnumClass structure.
+ */
+#define G_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass))
+/**
+ * G_IS_ENUM_CLASS:
+ * @class: a #GEnumClass
+ * 
+ * Checks whether @class "is a" valid #GEnumClass structure of type %G_TYPE_ENUM
+ * or derived.
+ */
+#define G_IS_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM))
+/**
+ * G_ENUM_CLASS_TYPE:
+ * @class: a #GEnumClass
+ * 
+ * Get the type identifier from a given #GEnumClass structure.
+ *
+ * Returns: the #GType
+ */
+#define G_ENUM_CLASS_TYPE(class)       (G_TYPE_FROM_CLASS (class))
+/**
+ * G_ENUM_CLASS_TYPE_NAME:
+ * @class: a #GEnumClass
+ * 
+ * Get the static type name from a given #GEnumClass structure.
+ *
+ * Returns: the type name.
+ */
+#define G_ENUM_CLASS_TYPE_NAME(class)  (g_type_name (G_ENUM_CLASS_TYPE (class)))
+
+
+/**
+ * G_TYPE_IS_FLAGS:
+ * @type: a #GType ID.
+ *
+ * Checks whether @type "is a" %G_TYPE_FLAGS. 
+ *
+ * Returns: %TRUE if @type "is a" %G_TYPE_FLAGS.
+ */
+#define G_TYPE_IS_FLAGS(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS)
+/**
+ * G_FLAGS_CLASS:
+ * @class: a valid #GFlagsClass
+ * 
+ * Casts a derived #GFlagsClass structure into a #GFlagsClass structure.
+ */
+#define G_FLAGS_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass))
+/**
+ * G_IS_FLAGS_CLASS:
+ * @class: a #GFlagsClass
+ * 
+ * Checks whether @class "is a" valid #GFlagsClass structure of type %G_TYPE_FLAGS
+ * or derived.
+ */
+#define G_IS_FLAGS_CLASS(class)        (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS))
+/**
+ * G_FLAGS_CLASS_TYPE:
+ * @class: a #GFlagsClass
+ * 
+ * Get the type identifier from a given #GFlagsClass structure.
+ *
+ * Returns: the #GType
+ */
+#define G_FLAGS_CLASS_TYPE(class)      (G_TYPE_FROM_CLASS (class))
+/**
+ * G_FLAGS_CLASS_TYPE_NAME:
+ * @class: a #GFlagsClass
+ * 
+ * Get the static type name from a given #GFlagsClass structure.
+ *
+ * Returns: the type name.
+ */
+#define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class)))
+
+
+/**
+ * G_VALUE_HOLDS_ENUM:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values derived from type %G_TYPE_ENUM.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_ENUM(value)      (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ENUM))
+/**
+ * G_VALUE_HOLDS_FLAGS:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values derived from type %G_TYPE_FLAGS.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_FLAGS(value)     (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLAGS))
+
+
+/* --- enum/flag values & classes --- */
+typedef struct _GEnumClass  GEnumClass;
+typedef struct _GFlagsClass GFlagsClass;
+typedef struct _GEnumValue  GEnumValue;
+typedef struct _GFlagsValue GFlagsValue;
+
+/**
+ * GEnumClass:
+ * @g_type_class: the parent class
+ * @minimum: the smallest possible value.
+ * @maximum: the largest possible value.
+ * @n_values: the number of possible values.
+ * @values: an array of #GEnumValue structs describing the 
+ *  individual values.
+ * 
+ * The class of an enumeration type holds information about its 
+ * possible values.
+ */
+struct	_GEnumClass
+{
+  GTypeClass  g_type_class;
+
+  /*< public >*/  
+  gint	      minimum;
+  gint	      maximum;
+  guint	      n_values;
+  GEnumValue *values;
+};
+/**
+ * GFlagsClass:
+ * @g_type_class: the parent class
+ * @mask: a mask covering all possible values.
+ * @n_values: the number of possible values.
+ * @values: an array of #GFlagsValue structs describing the 
+ *  individual values.
+ * 
+ * The class of a flags type holds information about its 
+ * possible values.
+ */
+struct	_GFlagsClass
+{
+  GTypeClass   g_type_class;
+  
+  /*< public >*/  
+  guint	       mask;
+  guint	       n_values;
+  GFlagsValue *values;
+};
+/**
+ * GEnumValue:
+ * @value: the enum value
+ * @value_name: the name of the value
+ * @value_nick: the nickname of the value
+ * 
+ * A structure which contains a single enum value, its name, and its
+ * nickname.
+ */
+struct _GEnumValue
+{
+  gint	 value;
+  const gchar *value_name;
+  const gchar *value_nick;
+};
+/**
+ * GFlagsValue:
+ * @value: the flags value
+ * @value_name: the name of the value
+ * @value_nick: the nickname of the value
+ * 
+ * A structure which contains a single flags value, its name, and its
+ * nickname.
+ */
+struct _GFlagsValue
+{
+  guint	 value;
+  const gchar *value_name;
+  const gchar *value_nick;
+};
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GEnumValue*	g_enum_get_value		(GEnumClass	*enum_class,
+						 gint		 value);
+GLIB_AVAILABLE_IN_ALL
+GEnumValue*	g_enum_get_value_by_name	(GEnumClass	*enum_class,
+						 const gchar	*name);
+GLIB_AVAILABLE_IN_ALL
+GEnumValue*	g_enum_get_value_by_nick	(GEnumClass	*enum_class,
+						 const gchar	*nick);
+GLIB_AVAILABLE_IN_ALL
+GFlagsValue*	g_flags_get_first_value		(GFlagsClass	*flags_class,
+						 guint		 value);
+GLIB_AVAILABLE_IN_ALL
+GFlagsValue*	g_flags_get_value_by_name	(GFlagsClass	*flags_class,
+						 const gchar	*name);
+GLIB_AVAILABLE_IN_ALL
+GFlagsValue*	g_flags_get_value_by_nick	(GFlagsClass	*flags_class,
+						 const gchar	*nick);
+GLIB_AVAILABLE_IN_ALL
+void            g_value_set_enum        	(GValue         *value,
+						 gint            v_enum);
+GLIB_AVAILABLE_IN_ALL
+gint            g_value_get_enum        	(const GValue   *value);
+GLIB_AVAILABLE_IN_ALL
+void            g_value_set_flags       	(GValue         *value,
+						 guint           v_flags);
+GLIB_AVAILABLE_IN_ALL
+guint           g_value_get_flags       	(const GValue   *value);
+
+
+
+/* --- registration functions --- */
+/* const_static_values is a NULL terminated array of enum/flags
+ * values that is taken over!
+ */
+GLIB_AVAILABLE_IN_ALL
+GType	g_enum_register_static	   (const gchar	      *name,
+				    const GEnumValue  *const_static_values);
+GLIB_AVAILABLE_IN_ALL
+GType	g_flags_register_static	   (const gchar	      *name,
+				    const GFlagsValue *const_static_values);
+/* functions to complete the type information
+ * for enums/flags implemented by plugins
+ */
+GLIB_AVAILABLE_IN_ALL
+void	g_enum_complete_type_info  (GType	       g_enum_type,
+				    GTypeInfo	      *info,
+				    const GEnumValue  *const_values);
+GLIB_AVAILABLE_IN_ALL
+void	g_flags_complete_type_info (GType	       g_flags_type,
+				    GTypeInfo	      *info,
+				    const GFlagsValue *const_values);
+
+G_END_DECLS
+
+#endif /* __G_ENUMS_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/glib-types.h b/dist/usr/include/glib-2.0/gobject/glib-types.h
new file mode 100644
index 0000000..663d790
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/glib-types.h
@@ -0,0 +1,338 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000-2001 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 __GLIB_TYPES_H__
+#define __GLIB_TYPES_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION) && !defined(GLIB_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* A hack necesssary to preprocess this file with g-ir-scanner */
+#ifdef __GI_SCANNER__
+typedef gsize GType;
+#endif
+
+/* --- GLib boxed types --- */
+/**
+ * G_TYPE_DATE:
+ *
+ * The #GType for #GDate.
+ */
+#define G_TYPE_DATE (g_date_get_type ())
+
+/**
+ * G_TYPE_STRV:
+ *
+ * The #GType for a boxed type holding a %NULL-terminated array of strings.
+ *
+ * The code fragments in the following example show the use of a property of
+ * type #G_TYPE_STRV with g_object_class_install_property(), g_object_set()
+ * and g_object_get().
+ *
+ * |[
+ * g_object_class_install_property (object_class,
+ *                                  PROP_AUTHORS,
+ *                                  g_param_spec_boxed ("authors",
+ *                                                      _("Authors"),
+ *                                                      _("List of authors"),
+ *                                                      G_TYPE_STRV,
+ *                                                      G_PARAM_READWRITE));
+ *
+ * gchar *authors[] = { "Owen", "Tim", NULL };
+ * g_object_set (obj, "authors", authors, NULL);
+ *
+ * gchar *writers[];
+ * g_object_get (obj, "authors", &writers, NULL);
+ * /&ast; do something with writers &ast;/
+ * g_strfreev (writers);
+ * ]|
+ *
+ * Since: 2.4
+ */
+#define G_TYPE_STRV (g_strv_get_type ())
+
+/**
+ * G_TYPE_GSTRING:
+ *
+ * The #GType for #GString.
+ */
+#define G_TYPE_GSTRING (g_gstring_get_type ())
+
+/**
+ * G_TYPE_HASH_TABLE:
+ *
+ * The #GType for a boxed type holding a #GHashTable reference.
+ *
+ * Since: 2.10
+ */
+#define G_TYPE_HASH_TABLE (g_hash_table_get_type ())
+
+/**
+ * G_TYPE_REGEX:
+ *
+ * The #GType for a boxed type holding a #GRegex reference.
+ *
+ * Since: 2.14
+ */
+#define G_TYPE_REGEX (g_regex_get_type ())
+
+/**
+ * G_TYPE_MATCH_INFO:
+ *
+ * The #GType for a boxed type holding a #GMatchInfo reference.
+ *
+ * Since: 2.30
+ */
+#define G_TYPE_MATCH_INFO (g_match_info_get_type ())
+
+/**
+ * G_TYPE_ARRAY:
+ *
+ * The #GType for a boxed type holding a #GArray reference.
+ *
+ * Since: 2.22
+ */
+#define G_TYPE_ARRAY (g_array_get_type ())
+
+/**
+ * G_TYPE_BYTE_ARRAY:
+ *
+ * The #GType for a boxed type holding a #GByteArray reference.
+ *
+ * Since: 2.22
+ */
+#define G_TYPE_BYTE_ARRAY (g_byte_array_get_type ())
+
+/**
+ * G_TYPE_PTR_ARRAY:
+ *
+ * The #GType for a boxed type holding a #GPtrArray reference.
+ *
+ * Since: 2.22
+ */
+#define G_TYPE_PTR_ARRAY (g_ptr_array_get_type ())
+
+/**
+ * G_TYPE_BYTES:
+ *
+ * The #GType for #GBytes.
+ *
+ * Since: 2.32
+ */
+#define G_TYPE_BYTES (g_bytes_get_type ())
+
+/**
+ * G_TYPE_VARIANT_TYPE:
+ *
+ * The #GType for a boxed type holding a #GVariantType.
+ *
+ * Since: 2.24
+ */
+#define G_TYPE_VARIANT_TYPE (g_variant_type_get_gtype ())
+
+/**
+ * G_TYPE_ERROR:
+ *
+ * The #GType for a boxed type holding a #GError.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_ERROR (g_error_get_type ())
+
+/**
+ * G_TYPE_DATE_TIME:
+ *
+ * The #GType for a boxed type holding a #GDateTime.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_DATE_TIME (g_date_time_get_type ())
+
+/**
+ * G_TYPE_TIME_ZONE:
+ *
+ * The #GType for a boxed type holding a #GTimeZone.
+ *
+ * Since: 2.34
+ */
+#define G_TYPE_TIME_ZONE (g_time_zone_get_type ())
+
+/**
+ * G_TYPE_IO_CHANNEL:
+ *
+ * The #GType for #GIOChannel.
+ */
+#define G_TYPE_IO_CHANNEL (g_io_channel_get_type ())
+
+/**
+ * G_TYPE_IO_CONDITION:
+ *
+ * The #GType for #GIOCondition.
+ */
+#define G_TYPE_IO_CONDITION (g_io_condition_get_type ())
+
+/**
+ * G_TYPE_VARIANT_BUILDER:
+ *
+ * The #GType for a boxed type holding a #GVariantBuilder.
+ *
+ * Since: 2.30
+ */
+#define G_TYPE_VARIANT_BUILDER (g_variant_builder_get_type ())
+
+/**
+ * G_TYPE_MAIN_LOOP:
+ *
+ * The #GType for a boxed type holding a #GMainLoop.
+ *
+ * Since: 2.30
+ */
+#define G_TYPE_MAIN_LOOP (g_main_loop_get_type ())
+
+/**
+ * G_TYPE_MAIN_CONTEXT:
+ *
+ * The #GType for a boxed type holding a #GMainContext.
+ *
+ * Since: 2.30
+ */
+#define G_TYPE_MAIN_CONTEXT (g_main_context_get_type ())
+
+/**
+ * G_TYPE_SOURCE:
+ *
+ * The #GType for a boxed type holding a #GSource.
+ *
+ * Since: 2.30
+ */
+#define G_TYPE_SOURCE (g_source_get_type ())
+
+/**
+ * G_TYPE_POLLFD:
+ *
+ * The #GType for a boxed type holding a #GPollFD.
+ *
+ * Since: 2.36
+ */
+#define G_TYPE_POLLFD (g_pollfd_get_type ())
+
+/**
+ * G_TYPE_MARKUP_PARSE_CONTEXT:
+ *
+ * The #GType for a boxed type holding a #GMarkupParseContext.
+ *
+ * Since: 2.36
+ */
+#define G_TYPE_MARKUP_PARSE_CONTEXT (g_markup_parse_context_get_type ())
+
+/**
+ * G_TYPE_KEY_FILE:
+ *
+ * The #GType for a boxed type holding a #GKeyFile.
+ *
+ * Since: 2.32
+ */
+#define G_TYPE_KEY_FILE (g_key_file_get_type ())
+
+/**
+ * G_TYPE_THREAD:
+ *
+ * The #GType for a boxed type holding a #GThread.
+ *
+ * Since: 2.36
+ */
+#define G_TYPE_THREAD (g_thread_get_type ())
+
+/**
+ * G_TYPE_CHECKSUM:
+ *
+ * The #GType for a boxed type holding a #GChecksum.
+ *
+ * Since: 2.36
+ */
+#define G_TYPE_CHECKSUM (g_checksum_get_type ())
+
+GLIB_AVAILABLE_IN_ALL
+GType   g_date_get_type            (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_strv_get_type            (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_gstring_get_type         (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_hash_table_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_array_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_byte_array_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_ptr_array_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_bytes_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_variant_type_get_gtype   (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_regex_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_30
+GType   g_match_info_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_error_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_date_time_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_time_zone_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_io_channel_get_type      (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_io_condition_get_type    (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_variant_builder_get_type (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+GType   g_key_file_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_30
+GType   g_main_loop_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_30
+GType   g_main_context_get_type    (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_30
+GType   g_source_get_type          (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_36
+GType   g_pollfd_get_type          (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_36
+GType   g_thread_get_type          (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_36
+GType   g_checksum_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_36
+GType   g_markup_parse_context_get_type (void) G_GNUC_CONST;
+
+GLIB_DEPRECATED_FOR('G_TYPE_VARIANT')
+GType   g_variant_get_gtype        (void) G_GNUC_CONST;
+
+/**
+ * GStrv:
+ *
+ * A C representable type name for #G_TYPE_STRV.
+ */
+typedef gchar** GStrv;
+
+G_END_DECLS
+
+#endif  /* __GLIB_TYPES_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gmarshal.h b/dist/usr/include/glib-2.0/gobject/gmarshal.h
new file mode 100644
index 0000000..d4fd76a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gmarshal.h
@@ -0,0 +1,385 @@
+/* Note: This file is no longer generated.  See the comment in gmarshal.list */
+#ifndef __G_MARSHAL_H__
+#define __G_MARSHAL_H__
+
+G_BEGIN_DECLS
+
+/* VOID:VOID (./gmarshal.list:6) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__VOID (GClosure     *closure,
+                                    GValue       *return_value,
+                                    guint         n_param_values,
+                                    const GValue *param_values,
+                                    gpointer      invocation_hint,
+                                    gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__VOIDv (GClosure *closure,
+                                     GValue   *return_value,
+                                     gpointer  instance,
+                                     va_list   args,
+                                     gpointer  marshal_data,
+                                     int       n_params,
+                                     GType    *param_types);
+
+/* VOID:BOOLEAN (./gmarshal.list:7) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__BOOLEAN (GClosure     *closure,
+                                       GValue       *return_value,
+                                       guint         n_param_values,
+                                       const GValue *param_values,
+                                       gpointer      invocation_hint,
+                                       gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__BOOLEANv (GClosure *closure,
+                                        GValue   *return_value,
+                                        gpointer  instance,
+                                        va_list   args,
+                                        gpointer  marshal_data,
+                                        int       n_params,
+                                        GType    *param_types);
+
+/* VOID:CHAR (./gmarshal.list:8) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__CHAR (GClosure     *closure,
+                                    GValue       *return_value,
+                                    guint         n_param_values,
+                                    const GValue *param_values,
+                                    gpointer      invocation_hint,
+                                    gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__CHARv (GClosure *closure,
+                                     GValue   *return_value,
+                                     gpointer  instance,
+                                     va_list   args,
+                                     gpointer  marshal_data,
+                                     int       n_params,
+                                     GType    *param_types);
+
+/* VOID:UCHAR (./gmarshal.list:9) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UCHAR (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UCHARv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:INT (./gmarshal.list:10) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__INT (GClosure     *closure,
+                                   GValue       *return_value,
+                                   guint         n_param_values,
+                                   const GValue *param_values,
+                                   gpointer      invocation_hint,
+                                   gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__INTv (GClosure *closure,
+                                    GValue   *return_value,
+                                    gpointer  instance,
+                                    va_list   args,
+                                    gpointer  marshal_data,
+                                    int       n_params,
+                                    GType    *param_types);
+
+/* VOID:UINT (./gmarshal.list:11) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UINT (GClosure     *closure,
+                                    GValue       *return_value,
+                                    guint         n_param_values,
+                                    const GValue *param_values,
+                                    gpointer      invocation_hint,
+                                    gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UINTv (GClosure *closure,
+                                     GValue   *return_value,
+                                     gpointer  instance,
+                                     va_list   args,
+                                     gpointer  marshal_data,
+                                     int       n_params,
+                                     GType    *param_types);
+
+/* VOID:LONG (./gmarshal.list:12) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__LONG (GClosure     *closure,
+                                    GValue       *return_value,
+                                    guint         n_param_values,
+                                    const GValue *param_values,
+                                    gpointer      invocation_hint,
+                                    gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__LONGv (GClosure *closure,
+                                     GValue   *return_value,
+                                     gpointer  instance,
+                                     va_list   args,
+                                     gpointer  marshal_data,
+                                     int       n_params,
+                                     GType    *param_types);
+
+/* VOID:ULONG (./gmarshal.list:13) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__ULONG (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__ULONGv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:ENUM (./gmarshal.list:14) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__ENUM (GClosure     *closure,
+                                    GValue       *return_value,
+                                    guint         n_param_values,
+                                    const GValue *param_values,
+                                    gpointer      invocation_hint,
+                                    gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__ENUMv (GClosure *closure,
+                                     GValue   *return_value,
+                                     gpointer  instance,
+                                     va_list   args,
+                                     gpointer  marshal_data,
+                                     int       n_params,
+                                     GType    *param_types);
+
+/* VOID:FLAGS (./gmarshal.list:15) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__FLAGS (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__FLAGSv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:FLOAT (./gmarshal.list:16) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__FLOAT (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__FLOATv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:DOUBLE (./gmarshal.list:17) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__DOUBLE (GClosure     *closure,
+                                      GValue       *return_value,
+                                      guint         n_param_values,
+                                      const GValue *param_values,
+                                      gpointer      invocation_hint,
+                                      gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__DOUBLEv (GClosure *closure,
+                                       GValue   *return_value,
+                                       gpointer  instance,
+                                       va_list   args,
+                                       gpointer  marshal_data,
+                                       int       n_params,
+                                       GType    *param_types);
+
+/* VOID:STRING (./gmarshal.list:18) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__STRING (GClosure     *closure,
+                                      GValue       *return_value,
+                                      guint         n_param_values,
+                                      const GValue *param_values,
+                                      gpointer      invocation_hint,
+                                      gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__STRINGv (GClosure *closure,
+                                       GValue   *return_value,
+                                       gpointer  instance,
+                                       va_list   args,
+                                       gpointer  marshal_data,
+                                       int       n_params,
+                                       GType    *param_types);
+
+/* VOID:PARAM (./gmarshal.list:19) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__PARAM (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__PARAMv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:BOXED (./gmarshal.list:20) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__BOXED (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__BOXEDv (GClosure *closure,
+                                      GValue   *return_value,
+                                      gpointer  instance,
+                                      va_list   args,
+                                      gpointer  marshal_data,
+                                      int       n_params,
+                                      GType    *param_types);
+
+/* VOID:POINTER (./gmarshal.list:21) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__POINTER (GClosure     *closure,
+                                       GValue       *return_value,
+                                       guint         n_param_values,
+                                       const GValue *param_values,
+                                       gpointer      invocation_hint,
+                                       gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__POINTERv (GClosure *closure,
+                                        GValue   *return_value,
+                                        gpointer  instance,
+                                        va_list   args,
+                                        gpointer  marshal_data,
+                                        int       n_params,
+                                        GType    *param_types);
+
+/* VOID:OBJECT (./gmarshal.list:22) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__OBJECT (GClosure     *closure,
+                                      GValue       *return_value,
+                                      guint         n_param_values,
+                                      const GValue *param_values,
+                                      gpointer      invocation_hint,
+                                      gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__OBJECTv (GClosure *closure,
+                                       GValue   *return_value,
+                                       gpointer  instance,
+                                       va_list   args,
+                                       gpointer  marshal_data,
+                                       int       n_params,
+                                       GType    *param_types);
+
+/* VOID:VARIANT (./gmarshal.list:23) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__VARIANT (GClosure     *closure,
+                                       GValue       *return_value,
+                                       guint         n_param_values,
+                                       const GValue *param_values,
+                                       gpointer      invocation_hint,
+                                       gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__VARIANTv (GClosure *closure,
+                                        GValue   *return_value,
+                                        gpointer  instance,
+                                        va_list   args,
+                                        gpointer  marshal_data,
+                                        int       n_params,
+                                        GType    *param_types);
+
+/* VOID:UINT,POINTER (./gmarshal.list:26) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UINT_POINTER (GClosure     *closure,
+                                            GValue       *return_value,
+                                            guint         n_param_values,
+                                            const GValue *param_values,
+                                            gpointer      invocation_hint,
+                                            gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_VOID__UINT_POINTERv (GClosure *closure,
+                                             GValue   *return_value,
+                                             gpointer  instance,
+                                             va_list   args,
+                                             gpointer  marshal_data,
+                                             int       n_params,
+                                             GType    *param_types);
+
+/* BOOL:FLAGS (./gmarshal.list:27) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_BOOLEAN__FLAGS (GClosure     *closure,
+                                        GValue       *return_value,
+                                        guint         n_param_values,
+                                        const GValue *param_values,
+                                        gpointer      invocation_hint,
+                                        gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_BOOLEAN__FLAGSv (GClosure *closure,
+                                         GValue   *return_value,
+                                         gpointer  instance,
+                                         va_list   args,
+                                         gpointer  marshal_data,
+                                         int       n_params,
+                                         GType    *param_types);
+#define g_cclosure_marshal_BOOL__FLAGS	g_cclosure_marshal_BOOLEAN__FLAGS
+
+/* STRING:OBJECT,POINTER (./gmarshal.list:28) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_STRING__OBJECT_POINTER (GClosure     *closure,
+                                                GValue       *return_value,
+                                                guint         n_param_values,
+                                                const GValue *param_values,
+                                                gpointer      invocation_hint,
+                                                gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_STRING__OBJECT_POINTERv (GClosure *closure,
+                                                 GValue   *return_value,
+                                                 gpointer  instance,
+                                                 va_list   args,
+                                                 gpointer  marshal_data,
+                                                 int       n_params,
+                                                 GType    *param_types);
+
+/* BOOL:BOXED,BOXED (./gmarshal.list:29) */
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_BOOLEAN__BOXED_BOXED (GClosure     *closure,
+                                              GValue       *return_value,
+                                              guint         n_param_values,
+                                              const GValue *param_values,
+                                              gpointer      invocation_hint,
+                                              gpointer      marshal_data);
+GLIB_AVAILABLE_IN_ALL
+void g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv (GClosure *closure,
+                                               GValue   *return_value,
+                                               gpointer  instance,
+                                               va_list   args,
+                                               gpointer  marshal_data,
+                                               int       n_params,
+                                               GType    *param_types);
+#define g_cclosure_marshal_BOOL__BOXED_BOXED	g_cclosure_marshal_BOOLEAN__BOXED_BOXED
+
+G_END_DECLS
+
+#endif /* __G_MARSHAL_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gobject.h b/dist/usr/include/glib-2.0/gobject/gobject.h
new file mode 100644
index 0000000..03a9629
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gobject.h
@@ -0,0 +1,670 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998-1999, 2000-2001 Tim Janik and 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_OBJECT_H__
+#define __G_OBJECT_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include        <gobject/gtype.h>
+#include        <gobject/gvalue.h>
+#include        <gobject/gparam.h>
+#include        <gobject/gclosure.h>
+#include        <gobject/gsignal.h>
+#include        <gobject/gboxed.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+/**
+ * G_TYPE_IS_OBJECT:
+ * @type: Type id to check
+ * 
+ * Check if the passed in type id is a %G_TYPE_OBJECT or derived from it.
+ * 
+ * Returns: %FALSE or %TRUE, indicating whether @type is a %G_TYPE_OBJECT.
+ */
+#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
+/**
+ * G_OBJECT:
+ * @object: Object which is subject to casting.
+ * 
+ * Casts a #GObject or derived pointer into a (GObject*) pointer.
+ * Depending on the current debugging level, this function may invoke
+ * certain runtime checks to identify invalid casts.
+ */
+#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
+/**
+ * G_OBJECT_CLASS:
+ * @class: a valid #GObjectClass
+ * 
+ * Casts a derived #GObjectClass structure into a #GObjectClass structure.
+ */
+#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
+/**
+ * G_IS_OBJECT:
+ * @object: Instance to check for being a %G_TYPE_OBJECT.
+ * 
+ * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_OBJECT.
+ */
+#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_OBJECT))
+/**
+ * G_IS_OBJECT_CLASS:
+ * @class: a #GObjectClass
+ * 
+ * Checks whether @class "is a" valid #GObjectClass structure of type
+ * %G_TYPE_OBJECT or derived.
+ */
+#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
+/**
+ * G_OBJECT_GET_CLASS:
+ * @object: a #GObject instance.
+ * 
+ * Get the class structure associated to a #GObject instance.
+ *
+ * Returns: pointer to object class structure.
+ */
+#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
+/**
+ * G_OBJECT_TYPE:
+ * @object: Object to return the type id for.
+ * 
+ * Get the type id of an object.
+ * 
+ * Returns: Type id of @object.
+ */
+#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
+/**
+ * G_OBJECT_TYPE_NAME:
+ * @object: Object to return the type name for.
+ * 
+ * Get the name of an object's type.
+ * 
+ * Returns: Type name of @object. The string is owned by the type system and 
+ *  should not be freed.
+ */
+#define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
+/**
+ * G_OBJECT_CLASS_TYPE:
+ * @class: a valid #GObjectClass
+ * 
+ * Get the type id of a class structure.
+ * 
+ * Returns: Type id of @class.
+ */
+#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
+/**
+ * G_OBJECT_CLASS_NAME:
+ * @class: a valid #GObjectClass
+ * 
+ * Return the name of a class structure's type.
+ * 
+ * Returns: Type name of @class. The string is owned by the type system and 
+ *  should not be freed.
+ */
+#define G_OBJECT_CLASS_NAME(class)  (g_type_name (G_OBJECT_CLASS_TYPE (class)))
+/**
+ * G_VALUE_HOLDS_OBJECT:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values derived from type %G_TYPE_OBJECT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_OBJECT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_OBJECT))
+
+/* --- type macros --- */
+/**
+ * G_TYPE_INITIALLY_UNOWNED:
+ * 
+ * The type for #GInitiallyUnowned.
+ */
+#define G_TYPE_INITIALLY_UNOWNED	      (g_initially_unowned_get_type())
+/**
+ * G_INITIALLY_UNOWNED:
+ * @object: Object which is subject to casting.
+ * 
+ * Casts a #GInitiallyUnowned or derived pointer into a (GInitiallyUnowned*) 
+ * pointer. Depending on the current debugging level, this function may invoke
+ * certain runtime checks to identify invalid casts.
+ */
+#define G_INITIALLY_UNOWNED(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnowned))
+/**
+ * G_INITIALLY_UNOWNED_CLASS:
+ * @class: a valid #GInitiallyUnownedClass
+ * 
+ * Casts a derived #GInitiallyUnownedClass structure into a
+ * #GInitiallyUnownedClass structure.
+ */
+#define G_INITIALLY_UNOWNED_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
+/**
+ * G_IS_INITIALLY_UNOWNED:
+ * @object: Instance to check for being a %G_TYPE_INITIALLY_UNOWNED.
+ * 
+ * Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_INITIALLY_UNOWNED.
+ */
+#define G_IS_INITIALLY_UNOWNED(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), G_TYPE_INITIALLY_UNOWNED))
+/**
+ * G_IS_INITIALLY_UNOWNED_CLASS:
+ * @class: a #GInitiallyUnownedClass
+ * 
+ * Checks whether @class "is a" valid #GInitiallyUnownedClass structure of type
+ * %G_TYPE_INITIALLY_UNOWNED or derived.
+ */
+#define G_IS_INITIALLY_UNOWNED_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_INITIALLY_UNOWNED))
+/**
+ * G_INITIALLY_UNOWNED_GET_CLASS:
+ * @object: a #GInitiallyUnowned instance.
+ * 
+ * Get the class structure associated to a #GInitiallyUnowned instance.
+ *
+ * Returns: pointer to object class structure.
+ */
+#define G_INITIALLY_UNOWNED_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_INITIALLY_UNOWNED, GInitiallyUnownedClass))
+/* GInitiallyUnowned ia a GObject with initially floating reference count */
+
+
+/* --- typedefs & structures --- */
+typedef struct _GObject                  GObject;
+typedef struct _GObjectClass             GObjectClass;
+typedef struct _GObject                  GInitiallyUnowned;
+typedef struct _GObjectClass             GInitiallyUnownedClass;
+typedef struct _GObjectConstructParam    GObjectConstructParam;
+/**
+ * GObjectGetPropertyFunc:
+ * @object: a #GObject
+ * @property_id: the numeric id under which the property was registered with
+ *  g_object_class_install_property().
+ * @value: a #GValue to return the property value in
+ * @pspec: the #GParamSpec describing the property
+ * 
+ * The type of the @get_property function of #GObjectClass. 
+ */
+typedef void (*GObjectGetPropertyFunc)  (GObject      *object,
+                                         guint         property_id,
+                                         GValue       *value,
+                                         GParamSpec   *pspec);
+/**
+ * GObjectSetPropertyFunc:
+ * @object: a #GObject
+ * @property_id: the numeric id under which the property was registered with
+ *  g_object_class_install_property().
+ * @value: the new value for the property
+ * @pspec: the #GParamSpec describing the property
+ * 
+ * The type of the @set_property function of #GObjectClass. 
+ */
+typedef void (*GObjectSetPropertyFunc)  (GObject      *object,
+                                         guint         property_id,
+                                         const GValue *value,
+                                         GParamSpec   *pspec);
+/**
+ * GObjectFinalizeFunc:
+ * @object: the #GObject being finalized
+ * 
+ * The type of the @finalize function of #GObjectClass.
+ */
+typedef void (*GObjectFinalizeFunc)     (GObject      *object);
+/**
+ * GWeakNotify:
+ * @data: data that was provided when the weak reference was established
+ * @where_the_object_was: the object being finalized
+ * 
+ * A #GWeakNotify function can be added to an object as a callback that gets
+ * triggered when the object is finalized. Since the object is already being
+ * finalized when the #GWeakNotify is called, there's not much you could do 
+ * with the object, apart from e.g. using its address as hash-index or the like. 
+ */
+typedef void (*GWeakNotify)		(gpointer      data,
+					 GObject      *where_the_object_was);
+/**
+ * GObject:
+ * 
+ * All the fields in the <structname>GObject</structname> structure are private 
+ * to the #GObject implementation and should never be accessed directly.
+ */
+struct  _GObject
+{
+  GTypeInstance  g_type_instance;
+  
+  /*< private >*/
+  volatile guint ref_count;
+  GData         *qdata;
+};
+/**
+ * GObjectClass:
+ * @g_type_class: the parent class
+ * @constructor: the @constructor function is called by g_object_new () to 
+ *  complete the object initialization after all the construction properties are
+ *  set. The first thing a @constructor implementation must do is chain up to the
+ *  @constructor of the parent class. Overriding @constructor should be rarely 
+ *  needed, e.g. to handle construct properties, or to implement singletons.
+ * @set_property: the generic setter for all properties of this type. Should be
+ *  overridden for every type with properties. If implementations of
+ *  @set_property don't emit property change notification explicitly, this will
+ *  be done implicitly by the type system. However, if the notify signal is
+ *  emitted explicitly, the type system will not emit it a second time.
+ * @get_property: the generic getter for all properties of this type. Should be
+ *  overridden for every type with properties.
+ * @dispose: the @dispose function is supposed to drop all references to other 
+ *  objects, but keep the instance otherwise intact, so that client method 
+ *  invocations still work. It may be run multiple times (due to reference 
+ *  loops). Before returning, @dispose should chain up to the @dispose method 
+ *  of the parent class.
+ * @finalize: instance finalization function, should finish the finalization of 
+ *  the instance begun in @dispose and chain up to the @finalize method of the 
+ *  parent class.
+ * @dispatch_properties_changed: emits property change notification for a bunch
+ *  of properties. Overriding @dispatch_properties_changed should be rarely 
+ *  needed.
+ * @notify: the class closure for the notify signal
+ * @constructed: the @constructed function is called by g_object_new() as the
+ *  final step of the object creation process.  At the point of the call, all
+ *  construction properties have been set on the object.  The purpose of this
+ *  call is to allow for object initialisation steps that can only be performed
+ *  after construction properties have been set.  @constructed implementors
+ *  should chain up to the @constructed call of their parent class to allow it
+ *  to complete its initialisation.
+ * 
+ * The class structure for the <structname>GObject</structname> type.
+ * 
+ * <example>
+ * <title>Implementing singletons using a constructor</title>
+ * <programlisting>
+ * static MySingleton *the_singleton = NULL;
+ * 
+ * static GObject*
+ * my_singleton_constructor (GType                  type,
+ *                           guint                  n_construct_params,
+ *                           GObjectConstructParam *construct_params)
+ * {
+ *   GObject *object;
+ *   
+ *   if (!the_singleton)
+ *     {
+ *       object = G_OBJECT_CLASS (parent_class)->constructor (type,
+ *                                                            n_construct_params,
+ *                                                            construct_params);
+ *       the_singleton = MY_SINGLETON (object);
+ *     }
+ *   else
+ *     object = g_object_ref (G_OBJECT (the_singleton));
+ * 
+ *   return object;
+ * }
+ * </programlisting></example>
+ */
+struct  _GObjectClass
+{
+  GTypeClass   g_type_class;
+
+  /*< private >*/
+  GSList      *construct_properties;
+
+  /*< public >*/
+  /* seldom overidden */
+  GObject*   (*constructor)     (GType                  type,
+                                 guint                  n_construct_properties,
+                                 GObjectConstructParam *construct_properties);
+  /* overridable methods */
+  void       (*set_property)		(GObject        *object,
+                                         guint           property_id,
+                                         const GValue   *value,
+                                         GParamSpec     *pspec);
+  void       (*get_property)		(GObject        *object,
+                                         guint           property_id,
+                                         GValue         *value,
+                                         GParamSpec     *pspec);
+  void       (*dispose)			(GObject        *object);
+  void       (*finalize)		(GObject        *object);
+  /* seldom overidden */
+  void       (*dispatch_properties_changed) (GObject      *object,
+					     guint	   n_pspecs,
+					     GParamSpec  **pspecs);
+  /* signals */
+  void	     (*notify)			(GObject	*object,
+					 GParamSpec	*pspec);
+
+  /* called when done constructing */
+  void	     (*constructed)		(GObject	*object);
+
+  /*< private >*/
+  gsize		flags;
+
+  /* padding */
+  gpointer	pdummy[6];
+};
+/**
+ * GObjectConstructParam:
+ * @pspec: the #GParamSpec of the construct parameter
+ * @value: the value to set the parameter to
+ * 
+ * The <structname>GObjectConstructParam</structname> struct is an auxiliary 
+ * structure used to hand #GParamSpec/#GValue pairs to the @constructor of
+ * a #GObjectClass.
+ */
+struct _GObjectConstructParam
+{
+  GParamSpec *pspec;
+  GValue     *value;
+};
+
+/**
+ * GInitiallyUnowned:
+ * 
+ * All the fields in the <structname>GInitiallyUnowned</structname> structure 
+ * are private to the #GInitiallyUnowned implementation and should never be 
+ * accessed directly.
+ */
+/**
+ * GInitiallyUnownedClass:
+ * 
+ * The class structure for the <structname>GInitiallyUnowned</structname> type.
+ */
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GType       g_initially_unowned_get_type      (void);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_class_install_property   (GObjectClass   *oclass,
+					       guint           property_id,
+					       GParamSpec     *pspec);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec* g_object_class_find_property      (GObjectClass   *oclass,
+					       const gchar    *property_name);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec**g_object_class_list_properties    (GObjectClass   *oclass,
+					       guint	      *n_properties);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_class_override_property  (GObjectClass   *oclass,
+					       guint           property_id,
+					       const gchar    *name);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_class_install_properties (GObjectClass   *oclass,
+                                               guint           n_pspecs,
+                                               GParamSpec    **pspecs);
+
+GLIB_AVAILABLE_IN_ALL
+void        g_object_interface_install_property (gpointer     g_iface,
+						 GParamSpec  *pspec);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec* g_object_interface_find_property    (gpointer     g_iface,
+						 const gchar *property_name);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec**g_object_interface_list_properties  (gpointer     g_iface,
+						 guint       *n_properties_p);
+
+GLIB_AVAILABLE_IN_ALL
+GType       g_object_get_type                 (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_new                      (GType           object_type,
+					       const gchar    *first_property_name,
+					       ...);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_newv		      (GType           object_type,
+					       guint	       n_parameters,
+					       GParameter     *parameters);
+GLIB_AVAILABLE_IN_ALL
+GObject*    g_object_new_valist               (GType           object_type,
+					       const gchar    *first_property_name,
+					       va_list         var_args);
+GLIB_AVAILABLE_IN_ALL
+void	    g_object_set                      (gpointer	       object,
+					       const gchar    *first_property_name,
+					       ...) G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
+void        g_object_get                      (gpointer        object,
+					       const gchar    *first_property_name,
+					       ...) G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_connect                  (gpointer	       object,
+					       const gchar    *signal_spec,
+					       ...) G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
+void	    g_object_disconnect               (gpointer	       object,
+					       const gchar    *signal_spec,
+					       ...) G_GNUC_NULL_TERMINATED;
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_valist               (GObject        *object,
+					       const gchar    *first_property_name,
+					       va_list         var_args);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_get_valist               (GObject        *object,
+					       const gchar    *first_property_name,
+					       va_list         var_args);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_property             (GObject        *object,
+					       const gchar    *property_name,
+					       const GValue   *value);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_get_property             (GObject        *object,
+					       const gchar    *property_name,
+					       GValue         *value);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_freeze_notify            (GObject        *object);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_notify                   (GObject        *object,
+					       const gchar    *property_name);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_notify_by_pspec          (GObject        *object,
+					       GParamSpec     *pspec);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_thaw_notify              (GObject        *object);
+GLIB_AVAILABLE_IN_ALL
+gboolean    g_object_is_floating    	      (gpointer        object);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_ref_sink       	      (gpointer	       object);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_ref                      (gpointer        object);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_unref                    (gpointer        object);
+GLIB_AVAILABLE_IN_ALL
+void	    g_object_weak_ref		      (GObject	      *object,
+					       GWeakNotify     notify,
+					       gpointer	       data);
+GLIB_AVAILABLE_IN_ALL
+void	    g_object_weak_unref		      (GObject	      *object,
+					       GWeakNotify     notify,
+					       gpointer	       data);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_add_weak_pointer         (GObject        *object, 
+                                               gpointer       *weak_pointer_location);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_remove_weak_pointer      (GObject        *object, 
+                                               gpointer       *weak_pointer_location);
+
+/**
+ * GToggleNotify:
+ * @data: Callback data passed to g_object_add_toggle_ref()
+ * @object: The object on which g_object_add_toggle_ref() was called.
+ * @is_last_ref: %TRUE if the toggle reference is now the
+ *  last reference to the object. %FALSE if the toggle
+ *  reference was the last reference and there are now other
+ *  references.
+ * 
+ * A callback function used for notification when the state
+ * of a toggle reference changes. See g_object_add_toggle_ref().
+ */
+typedef void (*GToggleNotify) (gpointer      data,
+			       GObject      *object,
+			       gboolean      is_last_ref);
+
+GLIB_AVAILABLE_IN_ALL
+void g_object_add_toggle_ref    (GObject       *object,
+				 GToggleNotify  notify,
+				 gpointer       data);
+GLIB_AVAILABLE_IN_ALL
+void g_object_remove_toggle_ref (GObject       *object,
+				 GToggleNotify  notify,
+				 gpointer       data);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_get_qdata                (GObject        *object,
+					       GQuark          quark);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_qdata                (GObject        *object,
+					       GQuark          quark,
+					       gpointer        data);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_qdata_full           (GObject        *object,
+					       GQuark          quark,
+					       gpointer        data,
+					       GDestroyNotify  destroy);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_steal_qdata              (GObject        *object,
+					       GQuark          quark);
+
+GLIB_AVAILABLE_IN_2_34
+gpointer    g_object_dup_qdata                (GObject        *object,
+                                               GQuark          quark,
+                                               GDuplicateFunc  dup_func,
+					       gpointer         user_data);
+GLIB_AVAILABLE_IN_2_34
+gboolean    g_object_replace_qdata            (GObject        *object,
+                                               GQuark          quark,
+                                               gpointer        oldval,
+                                               gpointer        newval,
+                                               GDestroyNotify  destroy,
+					       GDestroyNotify *old_destroy);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_get_data                 (GObject        *object,
+					       const gchar    *key);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_data                 (GObject        *object,
+					       const gchar    *key,
+					       gpointer        data);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_set_data_full            (GObject        *object,
+					       const gchar    *key,
+					       gpointer        data,
+					       GDestroyNotify  destroy);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_object_steal_data               (GObject        *object,
+					       const gchar    *key);
+
+GLIB_AVAILABLE_IN_2_34
+gpointer    g_object_dup_data                 (GObject        *object,
+                                               const gchar    *key,
+                                               GDuplicateFunc  dup_func,
+					       gpointer         user_data);
+GLIB_AVAILABLE_IN_2_34
+gboolean    g_object_replace_data             (GObject        *object,
+                                               const gchar    *key,
+                                               gpointer        oldval,
+                                               gpointer        newval,
+                                               GDestroyNotify  destroy,
+					       GDestroyNotify *old_destroy);
+
+
+GLIB_AVAILABLE_IN_ALL
+void        g_object_watch_closure            (GObject        *object,
+					       GClosure       *closure);
+GLIB_AVAILABLE_IN_ALL
+GClosure*   g_cclosure_new_object             (GCallback       callback_func,
+					       GObject	      *object);
+GLIB_AVAILABLE_IN_ALL
+GClosure*   g_cclosure_new_object_swap        (GCallback       callback_func,
+					       GObject	      *object);
+GLIB_AVAILABLE_IN_ALL
+GClosure*   g_closure_new_object              (guint           sizeof_closure,
+					       GObject        *object);
+GLIB_AVAILABLE_IN_ALL
+void        g_value_set_object                (GValue         *value,
+					       gpointer        v_object);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_value_get_object                (const GValue   *value);
+GLIB_AVAILABLE_IN_ALL
+gpointer    g_value_dup_object                (const GValue   *value);
+GLIB_AVAILABLE_IN_ALL
+gulong	    g_signal_connect_object           (gpointer	       instance,
+					       const gchar    *detailed_signal,
+					       GCallback       c_handler,
+					       gpointer	       gobject,
+					       GConnectFlags   connect_flags);
+
+/*< protected >*/
+GLIB_AVAILABLE_IN_ALL
+void        g_object_force_floating           (GObject        *object);
+GLIB_AVAILABLE_IN_ALL
+void        g_object_run_dispose	      (GObject	      *object);
+
+
+GLIB_AVAILABLE_IN_ALL
+void        g_value_take_object               (GValue         *value,
+					       gpointer        v_object);
+GLIB_DEPRECATED_FOR(g_value_take_object)
+void        g_value_set_object_take_ownership (GValue         *value,
+                                               gpointer        v_object);
+
+GLIB_DEPRECATED
+gsize	    g_object_compat_control	      (gsize	       what,
+					       gpointer	       data);
+
+/* --- implementation macros --- */
+#define G_OBJECT_WARN_INVALID_PSPEC(object, pname, property_id, pspec) \
+G_STMT_START { \
+  GObject *_glib__object = (GObject*) (object); \
+  GParamSpec *_glib__pspec = (GParamSpec*) (pspec); \
+  guint _glib__property_id = (property_id); \
+  g_warning ("%s: invalid %s id %u for \"%s\" of type '%s' in '%s'", \
+             G_STRLOC, \
+             (pname), \
+             _glib__property_id, \
+             _glib__pspec->name, \
+             g_type_name (G_PARAM_SPEC_TYPE (_glib__pspec)), \
+             G_OBJECT_TYPE_NAME (_glib__object)); \
+} G_STMT_END
+/**
+ * G_OBJECT_WARN_INVALID_PROPERTY_ID:
+ * @object: the #GObject on which set_property() or get_property() was called
+ * @property_id: the numeric id of the property
+ * @pspec: the #GParamSpec of the property
+ * 
+ * This macro should be used to emit a standard warning about unexpected 
+ * properties in set_property() and get_property() implementations.
+ */
+#define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec) \
+    G_OBJECT_WARN_INVALID_PSPEC ((object), "property", (property_id), (pspec))
+
+GLIB_AVAILABLE_IN_ALL
+void    g_clear_object (volatile GObject **object_ptr);
+#define g_clear_object(object_ptr) g_clear_pointer ((object_ptr), g_object_unref)
+
+typedef struct {
+    /*<private>*/
+    union { gpointer p; } priv;
+} GWeakRef;
+
+GLIB_AVAILABLE_IN_ALL
+void     g_weak_ref_init       (GWeakRef *weak_ref,
+                                gpointer  object);
+GLIB_AVAILABLE_IN_ALL
+void     g_weak_ref_clear      (GWeakRef *weak_ref);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_weak_ref_get        (GWeakRef *weak_ref);
+GLIB_AVAILABLE_IN_ALL
+void     g_weak_ref_set        (GWeakRef *weak_ref,
+                                gpointer  object);
+
+G_END_DECLS
+
+#endif /* __G_OBJECT_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gobjectnotifyqueue.c b/dist/usr/include/glib-2.0/gobject/gobjectnotifyqueue.c
new file mode 100644
index 0000000..cfe01ba
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gobjectnotifyqueue.c
@@ -0,0 +1,199 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998-1999, 2000-2001 Tim Janik and 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.
+ */
+
+/* WARNING:
+ *
+ *    This file is INSTALLED and other projects (outside of glib)
+ *    #include its contents.
+ */
+
+#ifndef __G_OBJECT_NOTIFY_QUEUE_H__
+#define __G_OBJECT_NOTIFY_QUEUE_H__
+
+#include <string.h> /* memset */
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+
+/* --- typedefs --- */
+typedef struct _GObjectNotifyContext          GObjectNotifyContext;
+typedef struct _GObjectNotifyQueue            GObjectNotifyQueue;
+typedef void (*GObjectNotifyQueueDispatcher) (GObject     *object,
+					      guint        n_pspecs,
+					      GParamSpec **pspecs);
+
+
+/* --- structures --- */
+struct _GObjectNotifyContext
+{
+  GQuark                       quark_notify_queue;
+  GObjectNotifyQueueDispatcher dispatcher;
+  GTrashStack                 *_nqueue_trash; /* unused */
+};
+struct _GObjectNotifyQueue
+{
+  GObjectNotifyContext *context;
+  GSList               *pspecs;
+  guint16               n_pspecs;
+  guint16               freeze_count;
+};
+
+G_LOCK_DEFINE_STATIC(notify_lock);
+
+/* --- functions --- */
+static void
+g_object_notify_queue_free (gpointer data)
+{
+  GObjectNotifyQueue *nqueue = data;
+
+  g_slist_free (nqueue->pspecs);
+  g_slice_free (GObjectNotifyQueue, nqueue);
+}
+
+static inline GObjectNotifyQueue*
+g_object_notify_queue_freeze (GObject		   *object,
+			      GObjectNotifyContext *context)
+{
+  GObjectNotifyQueue *nqueue;
+
+  G_LOCK(notify_lock);
+  nqueue = g_datalist_id_get_data (&object->qdata, context->quark_notify_queue);
+  if (!nqueue)
+    {
+      nqueue = g_slice_new0 (GObjectNotifyQueue);
+      nqueue->context = context;
+      g_datalist_id_set_data_full (&object->qdata, context->quark_notify_queue,
+				   nqueue, g_object_notify_queue_free);
+    }
+
+  if (nqueue->freeze_count >= 65535)
+    g_critical("Free queue for %s (%p) is larger than 65535,"
+               " called g_object_freeze_notify() too often."
+               " Forgot to call g_object_thaw_notify() or infinite loop",
+               G_OBJECT_TYPE_NAME (object), object);
+  else
+    nqueue->freeze_count++;
+  G_UNLOCK(notify_lock);
+
+  return nqueue;
+}
+
+static inline void
+g_object_notify_queue_thaw (GObject            *object,
+			    GObjectNotifyQueue *nqueue)
+{
+  GObjectNotifyContext *context = nqueue->context;
+  GParamSpec *pspecs_mem[16], **pspecs, **free_me = NULL;
+  GSList *slist;
+  guint n_pspecs = 0;
+
+  g_return_if_fail (nqueue->freeze_count > 0);
+  g_return_if_fail (g_atomic_int_get(&object->ref_count) > 0);
+
+  G_LOCK(notify_lock);
+
+  /* Just make sure we never get into some nasty race condition */
+  if (G_UNLIKELY(nqueue->freeze_count == 0)) {
+    G_UNLOCK(notify_lock);
+    g_warning ("%s: property-changed notification for %s(%p) is not frozen",
+	       G_STRFUNC, G_OBJECT_TYPE_NAME (object), object);
+    return;
+  }
+
+  nqueue->freeze_count--;
+  if (nqueue->freeze_count) {
+    G_UNLOCK(notify_lock);
+    return;
+  }
+
+  pspecs = nqueue->n_pspecs > 16 ? free_me = g_new (GParamSpec*, nqueue->n_pspecs) : pspecs_mem;
+
+  for (slist = nqueue->pspecs; slist; slist = slist->next)
+    {
+      pspecs[n_pspecs++] = slist->data;
+    }
+  g_datalist_id_set_data (&object->qdata, context->quark_notify_queue, NULL);
+
+  G_UNLOCK(notify_lock);
+
+  if (n_pspecs)
+    context->dispatcher (object, n_pspecs, pspecs);
+  g_free (free_me);
+}
+
+static inline void
+g_object_notify_queue_clear (GObject            *object,
+			     GObjectNotifyQueue *nqueue)
+{
+  g_return_if_fail (nqueue->freeze_count > 0);
+
+  G_LOCK(notify_lock);
+
+  g_slist_free (nqueue->pspecs);
+  nqueue->pspecs = NULL;
+  nqueue->n_pspecs = 0;
+
+  G_UNLOCK(notify_lock);
+}
+
+static inline void
+g_object_notify_queue_add (GObject            *object,
+			   GObjectNotifyQueue *nqueue,
+			   GParamSpec	      *pspec)
+{
+  if (pspec->flags & G_PARAM_READABLE)
+    {
+      GParamSpec *redirect;
+
+      G_LOCK(notify_lock);
+
+      g_return_if_fail (nqueue->n_pspecs < 65535);
+
+      redirect = g_param_spec_get_redirect_target (pspec);
+      if (redirect)
+	pspec = redirect;
+	    
+      /* we do the deduping in _thaw */
+      if (g_slist_find (nqueue->pspecs, pspec) == NULL)
+        {
+          nqueue->pspecs = g_slist_prepend (nqueue->pspecs, pspec);
+          nqueue->n_pspecs++;
+        }
+
+      G_UNLOCK(notify_lock);
+    }
+}
+
+/* NB: This function is not threadsafe, do not ever use it if
+ * you need a threadsafe notify queue.
+ * Use g_object_notify_queue_freeze() to acquire the queue and
+ * g_object_notify_queue_thaw() after you are done instead.
+ */
+static inline GObjectNotifyQueue*
+g_object_notify_queue_from_object (GObject              *object,
+                                   GObjectNotifyContext *context)
+{
+  return g_datalist_id_get_data (&object->qdata, context->quark_notify_queue);
+}
+
+G_END_DECLS
+
+#endif /* __G_OBJECT_NOTIFY_QUEUE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gparam.h b/dist/usr/include/glib-2.0/gobject/gparam.h
new file mode 100644
index 0000000..b35ad51
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gparam.h
@@ -0,0 +1,444 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1997-1999, 2000-2001 Tim Janik and 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.
+ *
+ * gparam.h: GParamSpec base class implementation
+ */
+#ifndef __G_PARAM_H__
+#define __G_PARAM_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gvalue.h>
+
+G_BEGIN_DECLS
+
+/* --- standard type macros --- */
+/**
+ * G_TYPE_IS_PARAM:
+ * @type: a #GType ID
+ * 
+ * Checks whether @type "is a" %G_TYPE_PARAM.
+ */
+#define G_TYPE_IS_PARAM(type)		(G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM)
+/**
+ * G_PARAM_SPEC:
+ * @pspec: a valid #GParamSpec
+ * 
+ * Casts a derived #GParamSpec object (e.g. of type #GParamSpecInt) into
+ * a #GParamSpec object.
+ */
+#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
+/**
+ * G_IS_PARAM_SPEC:
+ * @pspec: a #GParamSpec
+ * 
+ * Checks whether @pspec "is a" valid #GParamSpec structure of type %G_TYPE_PARAM
+ * or derived.
+ */
+#define G_IS_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM))
+/**
+ * G_PARAM_SPEC_CLASS:
+ * @pclass: a valid #GParamSpecClass
+ * 
+ * Casts a derived #GParamSpecClass structure into a #GParamSpecClass structure.
+ */
+#define G_PARAM_SPEC_CLASS(pclass)      (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass))
+/**
+ * G_IS_PARAM_SPEC_CLASS:
+ * @pclass: a #GParamSpecClass
+ * 
+ * Checks whether @pclass "is a" valid #GParamSpecClass structure of type 
+ * %G_TYPE_PARAM or derived.
+ */
+#define G_IS_PARAM_SPEC_CLASS(pclass)   (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM))
+/**
+ * G_PARAM_SPEC_GET_CLASS:
+ * @pspec: a valid #GParamSpec
+ * 
+ * Retrieves the #GParamSpecClass of a #GParamSpec.
+ */
+#define G_PARAM_SPEC_GET_CLASS(pspec)	(G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
+
+
+/* --- convenience macros --- */
+/**
+ * G_PARAM_SPEC_TYPE:
+ * @pspec: a valid #GParamSpec
+ * 
+ * Retrieves the #GType of this @pspec.
+ */
+#define G_PARAM_SPEC_TYPE(pspec)	(G_TYPE_FROM_INSTANCE (pspec))
+/**
+ * G_PARAM_SPEC_TYPE_NAME:
+ * @pspec: a valid #GParamSpec
+ * 
+ * Retrieves the #GType name of this @pspec.
+ */
+#define G_PARAM_SPEC_TYPE_NAME(pspec)	(g_type_name (G_PARAM_SPEC_TYPE (pspec)))
+/**
+ * G_PARAM_SPEC_VALUE_TYPE:
+ * @pspec: a valid #GParamSpec
+ * 
+ * Retrieves the #GType to initialize a #GValue for this parameter.
+ */
+#define	G_PARAM_SPEC_VALUE_TYPE(pspec)	(G_PARAM_SPEC (pspec)->value_type)
+/**
+ * G_VALUE_HOLDS_PARAM:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values derived from type %G_TYPE_PARAM.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_PARAM(value)	(G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_PARAM))
+       
+
+/* --- flags --- */
+/**
+ * GParamFlags:
+ * @G_PARAM_READABLE: the parameter is readable
+ * @G_PARAM_WRITABLE: the parameter is writable
+ * @G_PARAM_CONSTRUCT: the parameter will be set upon object construction
+ * @G_PARAM_CONSTRUCT_ONLY: the parameter will only be set upon object construction
+ * @G_PARAM_LAX_VALIDATION: upon parameter conversion (see g_param_value_convert())
+ *  strict validation is not required
+ * @G_PARAM_STATIC_NAME: the string used as name when constructing the 
+ *  parameter is guaranteed to remain valid and
+ *  unmodified for the lifetime of the parameter. 
+ *  Since 2.8
+ * @G_PARAM_STATIC_NICK: the string used as nick when constructing the
+ *  parameter is guaranteed to remain valid and
+ *  unmmodified for the lifetime of the parameter.
+ *  Since 2.8
+ * @G_PARAM_STATIC_BLURB: the string used as blurb when constructing the 
+ *  parameter is guaranteed to remain valid and 
+ *  unmodified for the lifetime of the parameter. 
+ *  Since 2.8
+ * @G_PARAM_PRIVATE: internal
+ * @G_PARAM_DEPRECATED: the parameter is deprecated and will be removed
+ *  in a future version. A warning will be generated if it is used
+ *  while running with G_ENABLE_DIAGNOSTIC=1.
+ *  Since 2.26
+ * 
+ * Through the #GParamFlags flag values, certain aspects of parameters
+ * can be configured.
+ */
+typedef enum
+{
+  G_PARAM_READABLE            = 1 << 0,
+  G_PARAM_WRITABLE            = 1 << 1,
+  G_PARAM_CONSTRUCT	      = 1 << 2,
+  G_PARAM_CONSTRUCT_ONLY      = 1 << 3,
+  G_PARAM_LAX_VALIDATION      = 1 << 4,
+  G_PARAM_STATIC_NAME	      = 1 << 5,
+#ifndef G_DISABLE_DEPRECATED
+  G_PARAM_PRIVATE	      = G_PARAM_STATIC_NAME,
+#endif
+  G_PARAM_STATIC_NICK	      = 1 << 6,
+  G_PARAM_STATIC_BLURB	      = 1 << 7,
+  /* User defined flags go up to 30 */
+  G_PARAM_DEPRECATED          = 1 << 31
+} GParamFlags;
+/**
+ * G_PARAM_READWRITE:
+ * 
+ * #GParamFlags value alias for %G_PARAM_READABLE | %G_PARAM_WRITABLE.
+ */
+#define	G_PARAM_READWRITE	(G_PARAM_READABLE | G_PARAM_WRITABLE)
+/**
+ * G_PARAM_STATIC_STRINGS:
+ * 
+ * #GParamFlags value alias for %G_PARAM_STATIC_NAME | %G_PARAM_STATIC_NICK | %G_PARAM_STATIC_BLURB.
+ * 
+ * Since 2.13.0
+ */
+#define	G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
+/* bits in the range 0xffffff00 are reserved for 3rd party usage */
+/**
+ * G_PARAM_MASK:
+ * 
+ * Mask containing the bits of #GParamSpec.flags which are reserved for GLib.
+ */
+#define	G_PARAM_MASK		(0x000000ff)
+/**
+ * G_PARAM_USER_SHIFT:
+ * 
+ * Minimum shift count to be used for user defined flags, to be stored in
+ * #GParamSpec.flags. The maximum allowed is 30 + G_PARAM_USER_SHIFT.
+ */
+#define	G_PARAM_USER_SHIFT	(8)
+
+/* --- typedefs & structures --- */
+typedef struct _GParamSpec      GParamSpec;
+typedef struct _GParamSpecClass GParamSpecClass;
+typedef struct _GParameter	GParameter;
+typedef struct _GParamSpecPool  GParamSpecPool;
+/**
+ * GParamSpec:
+ * @g_type_instance: private #GTypeInstance portion
+ * @name: name of this parameter: always an interned string
+ * @flags: #GParamFlags flags for this parameter
+ * @value_type: the #GValue type for this parameter
+ * @owner_type: #GType type that uses (introduces) this parameter
+ * 
+ * All other fields of the <structname>GParamSpec</structname> struct are private and
+ * should not be used directly.
+ */
+struct _GParamSpec
+{
+  GTypeInstance  g_type_instance;
+
+  const gchar   *name;          /* interned string */
+  GParamFlags    flags;
+  GType		 value_type;
+  GType		 owner_type;	/* class or interface using this property */
+
+  /*< private >*/
+  gchar         *_nick;
+  gchar         *_blurb;
+  GData		*qdata;
+  guint          ref_count;
+  guint		 param_id;	/* sort-criteria */
+};
+/**
+ * GParamSpecClass:
+ * @g_type_class: the parent class
+ * @value_type: the #GValue type for this parameter
+ * @finalize: The instance finalization function (optional), should chain 
+ *  up to the finalize method of the parent class.
+ * @value_set_default: Resets a @value to the default value for this type
+ *  (recommended, the default is g_value_reset()), see 
+ *  g_param_value_set_default().
+ * @value_validate: Ensures that the contents of @value comply with the 
+ *  specifications set out by this type (optional), see 
+ *  g_param_value_validate().
+ * @values_cmp: Compares @value1 with @value2 according to this type
+ *  (recommended, the default is memcmp()), see g_param_values_cmp().
+ * 
+ * The class structure for the <structname>GParamSpec</structname> type.
+ * Normally, <structname>GParamSpec</structname> classes are filled by
+ * g_param_type_register_static().
+ */
+struct _GParamSpecClass
+{
+  GTypeClass      g_type_class;
+
+  GType		  value_type;
+
+  void	        (*finalize)		(GParamSpec   *pspec);
+
+  /* GParam methods */
+  void          (*value_set_default)    (GParamSpec   *pspec,
+					 GValue       *value);
+  gboolean      (*value_validate)       (GParamSpec   *pspec,
+					 GValue       *value);
+  gint          (*values_cmp)           (GParamSpec   *pspec,
+					 const GValue *value1,
+					 const GValue *value2);
+  /*< private >*/
+  gpointer	  dummy[4];
+};
+/**
+ * GParameter:
+ * @name: the parameter name
+ * @value: the parameter value
+ * 
+ * The <structname>GParameter</structname> struct is an auxiliary structure used
+ * to hand parameter name/value pairs to g_object_newv().
+ */
+struct _GParameter /* auxiliary structure for _setv() variants */
+{
+  const gchar *name;
+  GValue       value;
+};
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_ref		(GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+void		g_param_spec_unref		(GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+void		g_param_spec_sink		(GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_ref_sink   	(GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+gpointer        g_param_spec_get_qdata		(GParamSpec    *pspec,
+						 GQuark         quark);
+GLIB_AVAILABLE_IN_ALL
+void            g_param_spec_set_qdata		(GParamSpec    *pspec,
+						 GQuark         quark,
+						 gpointer       data);
+GLIB_AVAILABLE_IN_ALL
+void            g_param_spec_set_qdata_full	(GParamSpec    *pspec,
+						 GQuark         quark,
+						 gpointer       data,
+						 GDestroyNotify destroy);
+GLIB_AVAILABLE_IN_ALL
+gpointer        g_param_spec_steal_qdata	(GParamSpec    *pspec,
+						 GQuark         quark);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*     g_param_spec_get_redirect_target (GParamSpec   *pspec);
+
+GLIB_AVAILABLE_IN_ALL
+void		g_param_value_set_default	(GParamSpec    *pspec,
+						 GValue	       *value);
+GLIB_AVAILABLE_IN_ALL
+gboolean	g_param_value_defaults		(GParamSpec    *pspec,
+						 GValue	       *value);
+GLIB_AVAILABLE_IN_ALL
+gboolean	g_param_value_validate		(GParamSpec    *pspec,
+						 GValue	       *value);
+GLIB_AVAILABLE_IN_ALL
+gboolean	g_param_value_convert		(GParamSpec    *pspec,
+						 const GValue  *src_value,
+						 GValue	       *dest_value,
+						 gboolean	strict_validation);
+GLIB_AVAILABLE_IN_ALL
+gint		g_param_values_cmp		(GParamSpec    *pspec,
+						 const GValue  *value1,
+						 const GValue  *value2);
+GLIB_AVAILABLE_IN_ALL
+const gchar *   g_param_spec_get_name           (GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+const gchar *   g_param_spec_get_nick           (GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+const gchar *   g_param_spec_get_blurb          (GParamSpec    *pspec);
+GLIB_AVAILABLE_IN_ALL
+void            g_value_set_param               (GValue	       *value,
+						 GParamSpec    *param);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*     g_value_get_param               (const GValue  *value);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*     g_value_dup_param               (const GValue  *value);
+
+
+GLIB_AVAILABLE_IN_ALL
+void           g_value_take_param               (GValue        *value,
+					         GParamSpec    *param);
+GLIB_DEPRECATED_FOR(g_value_take_param)
+void           g_value_set_param_take_ownership (GValue        *value,
+                                                 GParamSpec    *param);
+GLIB_AVAILABLE_IN_2_36
+const GValue *  g_param_spec_get_default_value  (GParamSpec     *param);
+
+/* --- convenience functions --- */
+typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo;
+/**
+ * GParamSpecTypeInfo:
+ * @instance_size: Size of the instance (object) structure.
+ * @n_preallocs: Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the <link linkend="glib-Memory-Slices">slice allocator</link> now.
+ * @instance_init: Location of the instance initialization function (optional).
+ * @value_type: The #GType of values conforming to this #GParamSpec
+ * @finalize: The instance finalization function (optional).
+ * @value_set_default: Resets a @value to the default value for @pspec 
+ *  (recommended, the default is g_value_reset()), see 
+ *  g_param_value_set_default().
+ * @value_validate: Ensures that the contents of @value comply with the 
+ *  specifications set out by @pspec (optional), see 
+ *  g_param_value_validate().
+ * @values_cmp: Compares @value1 with @value2 according to @pspec 
+ *  (recommended, the default is memcmp()), see g_param_values_cmp().
+ * 
+ * This structure is used to provide the type system with the information
+ * required to initialize and destruct (finalize) a parameter's class and
+ * instances thereof.
+ * The initialized structure is passed to the g_param_type_register_static() 
+ * The type system will perform a deep copy of this structure, so its memory 
+ * does not need to be persistent across invocation of 
+ * g_param_type_register_static().
+ */
+struct _GParamSpecTypeInfo
+{
+  /* type system portion */
+  guint16         instance_size;                               /* obligatory */
+  guint16         n_preallocs;                                 /* optional */
+  void		(*instance_init)	(GParamSpec   *pspec); /* optional */
+
+  /* class portion */
+  GType           value_type;				       /* obligatory */
+  void          (*finalize)             (GParamSpec   *pspec); /* optional */
+  void          (*value_set_default)    (GParamSpec   *pspec,  /* recommended */
+					 GValue       *value);
+  gboolean      (*value_validate)       (GParamSpec   *pspec,  /* optional */
+					 GValue       *value);
+  gint          (*values_cmp)           (GParamSpec   *pspec,  /* recommended */
+					 const GValue *value1,
+					 const GValue *value2);
+};
+GLIB_AVAILABLE_IN_ALL
+GType	g_param_type_register_static	(const gchar		  *name,
+					 const GParamSpecTypeInfo *pspec_info);
+
+/* For registering builting types */
+GType  _g_param_type_register_static_constant (const gchar              *name,
+					       const GParamSpecTypeInfo *pspec_info,
+					       GType                     opt_type);
+
+
+/* --- protected --- */
+GLIB_AVAILABLE_IN_ALL
+gpointer	g_param_spec_internal		(GType	        param_type,
+						 const gchar   *name,
+						 const gchar   *nick,
+						 const gchar   *blurb,
+						 GParamFlags    flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpecPool* g_param_spec_pool_new		(gboolean	type_prefixing);
+GLIB_AVAILABLE_IN_ALL
+void		g_param_spec_pool_insert	(GParamSpecPool	*pool,
+						 GParamSpec	*pspec,
+						 GType		 owner_type);
+GLIB_AVAILABLE_IN_ALL
+void		g_param_spec_pool_remove	(GParamSpecPool	*pool,
+						 GParamSpec	*pspec);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_pool_lookup	(GParamSpecPool	*pool,
+						 const gchar	*param_name,
+						 GType		 owner_type,
+						 gboolean	 walk_ancestors);
+GLIB_AVAILABLE_IN_ALL
+GList*		g_param_spec_pool_list_owned	(GParamSpecPool	*pool,
+						 GType		 owner_type);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec**	g_param_spec_pool_list		(GParamSpecPool	*pool,
+						 GType		 owner_type,
+						 guint		*n_pspecs_p);
+
+
+/* contracts:
+ *
+ * gboolean value_validate (GParamSpec *pspec,
+ *                          GValue     *value):
+ *	modify value contents in the least destructive way, so
+ *	that it complies with pspec's requirements (i.e.
+ *	according to minimum/maximum ranges etc...). return
+ *	whether modification was necessary.
+ *
+ * gint values_cmp (GParamSpec   *pspec,
+ *                  const GValue *value1,
+ *                  const GValue *value2):
+ *	return value1 - value2, i.e. (-1) if value1 < value2,
+ *	(+1) if value1 > value2, and (0) otherwise (equality)
+ */
+
+G_END_DECLS
+
+#endif /* __G_PARAM_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gparamspecs.h b/dist/usr/include/glib-2.0/gobject/gparamspecs.h
new file mode 100644
index 0000000..b3245a8
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gparamspecs.h
@@ -0,0 +1,1166 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1997-1999, 2000-2001 Tim Janik and 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.
+ *
+ * gparamspecs.h: GLib default param specs
+ */
+#ifndef __G_PARAMSPECS_H__
+#define __G_PARAMSPECS_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include        <gobject/gvalue.h>
+#include        <gobject/genums.h>
+#include        <gobject/gboxed.h>
+#include        <gobject/gobject.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+/**
+ * G_TYPE_PARAM_CHAR:
+ * 
+ * The #GType of #GParamSpecChar.
+ */
+#define	G_TYPE_PARAM_CHAR		   (g_param_spec_types[0])
+/**
+ * G_IS_PARAM_SPEC_CHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_CHAR.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_CHAR(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_CHAR))
+/**
+ * G_PARAM_SPEC_CHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecChar.
+ */
+#define G_PARAM_SPEC_CHAR(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_CHAR, GParamSpecChar))
+
+/**
+ * G_TYPE_PARAM_UCHAR:
+ * 
+ * The #GType of #GParamSpecUChar.
+ */
+#define	G_TYPE_PARAM_UCHAR		   (g_param_spec_types[1])
+/**
+ * G_IS_PARAM_SPEC_UCHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UCHAR.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_UCHAR(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UCHAR))
+/**
+ * G_PARAM_SPEC_UCHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecUChar.
+ */
+#define G_PARAM_SPEC_UCHAR(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UCHAR, GParamSpecUChar))
+
+/**
+ * G_TYPE_PARAM_BOOLEAN:
+ * 
+ * The #GType of #GParamSpecBoolean.
+ */
+#define	G_TYPE_PARAM_BOOLEAN		   (g_param_spec_types[2])
+/**
+ * G_IS_PARAM_SPEC_BOOLEAN:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOOLEAN.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_BOOLEAN(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOOLEAN))
+/**
+ * G_PARAM_SPEC_BOOLEAN:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecBoolean.
+ */
+#define G_PARAM_SPEC_BOOLEAN(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOOLEAN, GParamSpecBoolean))
+
+/**
+ * G_TYPE_PARAM_INT:
+ * 
+ * The #GType of #GParamSpecInt.
+ */
+#define	G_TYPE_PARAM_INT		   (g_param_spec_types[3])
+/**
+ * G_IS_PARAM_SPEC_INT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_INT(pspec)         (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT))
+/**
+ * G_PARAM_SPEC_INT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecInt.
+ */
+#define G_PARAM_SPEC_INT(pspec)            (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT, GParamSpecInt))
+
+/**
+ * G_TYPE_PARAM_UINT:
+ * 
+ * The #GType of #GParamSpecUInt.
+ */
+#define	G_TYPE_PARAM_UINT		   (g_param_spec_types[4])
+/**
+ * G_IS_PARAM_SPEC_UINT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_UINT(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT))
+/**
+ * G_PARAM_SPEC_UINT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecUInt.
+ */
+#define G_PARAM_SPEC_UINT(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT, GParamSpecUInt))
+
+/**
+ * G_TYPE_PARAM_LONG:
+ * 
+ * The #GType of #GParamSpecLong.
+ */
+#define	G_TYPE_PARAM_LONG		   (g_param_spec_types[5])
+/**
+ * G_IS_PARAM_SPEC_LONG:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_LONG.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_LONG(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_LONG))
+/**
+ * G_PARAM_SPEC_LONG:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecLong.
+ */
+#define G_PARAM_SPEC_LONG(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_LONG, GParamSpecLong))
+
+/**
+ * G_TYPE_PARAM_ULONG:
+ * 
+ * The #GType of #GParamSpecULong.
+ */
+#define	G_TYPE_PARAM_ULONG		   (g_param_spec_types[6])
+/**
+ * G_IS_PARAM_SPEC_ULONG:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ULONG.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_ULONG(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ULONG))
+/**
+ * G_PARAM_SPEC_ULONG:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecULong.
+ */
+#define G_PARAM_SPEC_ULONG(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ULONG, GParamSpecULong))
+
+/**
+ * G_TYPE_PARAM_INT64:
+ * 
+ * The #GType of #GParamSpecInt64.
+ */
+#define	G_TYPE_PARAM_INT64		   (g_param_spec_types[7])
+/**
+ * G_IS_PARAM_SPEC_INT64:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT64.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_INT64(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT64))
+/**
+ * G_PARAM_SPEC_INT64:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecInt64.
+ */
+#define G_PARAM_SPEC_INT64(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT64, GParamSpecInt64))
+
+/**
+ * G_TYPE_PARAM_UINT64:
+ * 
+ * The #GType of #GParamSpecUInt64.
+ */
+#define	G_TYPE_PARAM_UINT64		   (g_param_spec_types[8])
+/**
+ * G_IS_PARAM_SPEC_UINT64:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT64.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_UINT64(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT64))
+/**
+ * G_PARAM_SPEC_UINT64:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecUInt64.
+ */
+#define G_PARAM_SPEC_UINT64(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT64, GParamSpecUInt64))
+
+/**
+ * G_TYPE_PARAM_UNICHAR:
+ * 
+ * The #GType of #GParamSpecUnichar.
+ */
+#define	G_TYPE_PARAM_UNICHAR		   (g_param_spec_types[9])
+/**
+ * G_PARAM_SPEC_UNICHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecUnichar.
+ */
+#define G_PARAM_SPEC_UNICHAR(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar))
+/**
+ * G_IS_PARAM_SPEC_UNICHAR:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UNICHAR.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_UNICHAR(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR))
+
+/**
+ * G_TYPE_PARAM_ENUM:
+ * 
+ * The #GType of #GParamSpecEnum.
+ */
+#define	G_TYPE_PARAM_ENUM		   (g_param_spec_types[10])
+/**
+ * G_IS_PARAM_SPEC_ENUM:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ENUM.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_ENUM(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ENUM))
+/**
+ * G_PARAM_SPEC_ENUM:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecEnum.
+ */
+#define G_PARAM_SPEC_ENUM(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ENUM, GParamSpecEnum))
+
+/**
+ * G_TYPE_PARAM_FLAGS:
+ * 
+ * The #GType of #GParamSpecFlags.
+ */
+#define	G_TYPE_PARAM_FLAGS		   (g_param_spec_types[11])
+/**
+ * G_IS_PARAM_SPEC_FLAGS:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLAGS.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_FLAGS(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLAGS))
+/**
+ * G_PARAM_SPEC_FLAGS:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecFlags.
+ */
+#define G_PARAM_SPEC_FLAGS(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLAGS, GParamSpecFlags))
+
+/**
+ * G_TYPE_PARAM_FLOAT:
+ * 
+ * The #GType of #GParamSpecFloat.
+ */
+#define	G_TYPE_PARAM_FLOAT		   (g_param_spec_types[12])
+/**
+ * G_IS_PARAM_SPEC_FLOAT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLOAT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_FLOAT(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLOAT))
+/**
+ * G_PARAM_SPEC_FLOAT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecFloat.
+ */
+#define G_PARAM_SPEC_FLOAT(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLOAT, GParamSpecFloat))
+
+/**
+ * G_TYPE_PARAM_DOUBLE:
+ * 
+ * The #GType of #GParamSpecDouble.
+ */
+#define	G_TYPE_PARAM_DOUBLE		   (g_param_spec_types[13])
+/**
+ * G_IS_PARAM_SPEC_DOUBLE:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_DOUBLE.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_DOUBLE(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_DOUBLE))
+/**
+ * G_PARAM_SPEC_DOUBLE:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecDouble.
+ */
+#define G_PARAM_SPEC_DOUBLE(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_DOUBLE, GParamSpecDouble))
+
+/**
+ * G_TYPE_PARAM_STRING:
+ * 
+ * The #GType of #GParamSpecString.
+ */
+#define	G_TYPE_PARAM_STRING		   (g_param_spec_types[14])
+/**
+ * G_IS_PARAM_SPEC_STRING:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_STRING.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_STRING(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_STRING))
+/**
+ * G_PARAM_SPEC_STRING:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Casts a #GParamSpec instance into a #GParamSpecString.
+ */
+#define G_PARAM_SPEC_STRING(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_STRING, GParamSpecString))
+
+/**
+ * G_TYPE_PARAM_PARAM:
+ * 
+ * The #GType of #GParamSpecParam.
+ */
+#define	G_TYPE_PARAM_PARAM		   (g_param_spec_types[15])
+/**
+ * G_IS_PARAM_SPEC_PARAM:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_PARAM.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_PARAM(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_PARAM))
+/**
+ * G_PARAM_SPEC_PARAM:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Casts a #GParamSpec instance into a #GParamSpecParam.
+ */
+#define G_PARAM_SPEC_PARAM(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_PARAM, GParamSpecParam))
+
+/**
+ * G_TYPE_PARAM_BOXED:
+ * 
+ * The #GType of #GParamSpecBoxed.
+ */
+#define	G_TYPE_PARAM_BOXED		   (g_param_spec_types[16])
+/**
+ * G_IS_PARAM_SPEC_BOXED:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOXED.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_BOXED(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOXED))
+/**
+ * G_PARAM_SPEC_BOXED:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecBoxed.
+ */
+#define G_PARAM_SPEC_BOXED(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOXED, GParamSpecBoxed))
+
+/**
+ * G_TYPE_PARAM_POINTER:
+ * 
+ * The #GType of #GParamSpecPointer.
+ */
+#define	G_TYPE_PARAM_POINTER		   (g_param_spec_types[17])
+/**
+ * G_IS_PARAM_SPEC_POINTER:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_POINTER.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_POINTER(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_POINTER))
+/**
+ * G_PARAM_SPEC_POINTER:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Casts a #GParamSpec instance into a #GParamSpecPointer.
+ */
+#define G_PARAM_SPEC_POINTER(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_POINTER, GParamSpecPointer))
+
+/**
+ * G_TYPE_PARAM_VALUE_ARRAY:
+ * 
+ * The #GType of #GParamSpecValueArray.
+ *
+ * Deprecated: 2.32: Use #GArray instead of #GValueArray
+ */
+#define	G_TYPE_PARAM_VALUE_ARRAY	   (g_param_spec_types[18])
+/**
+ * G_IS_PARAM_SPEC_VALUE_ARRAY:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VALUE_ARRAY.
+ * 
+ * Returns: %TRUE on success.
+ *
+ * Deprecated: 2.32: Use #GArray instead of #GValueArray
+ */
+#define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY))
+/**
+ * G_PARAM_SPEC_VALUE_ARRAY:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Cast a #GParamSpec instance into a #GParamSpecValueArray.
+ *
+ * Deprecated: 2.32: Use #GArray instead of #GValueArray
+ */
+#define G_PARAM_SPEC_VALUE_ARRAY(pspec)    (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray))
+
+/**
+ * G_TYPE_PARAM_OBJECT:
+ * 
+ * The #GType of #GParamSpecObject.
+ */
+#define	G_TYPE_PARAM_OBJECT		   (g_param_spec_types[19])
+/**
+ * G_IS_PARAM_SPEC_OBJECT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OBJECT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_OBJECT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OBJECT))
+/**
+ * G_PARAM_SPEC_OBJECT:
+ * @pspec: a valid #GParamSpec instance
+ * 
+ * Casts a #GParamSpec instance into a #GParamSpecObject.
+ */
+#define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
+
+/**
+ * G_TYPE_PARAM_OVERRIDE:
+ * 
+ * The #GType of #GParamSpecOverride.
+ * 
+ * Since: 2.4
+ */
+#define	G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
+/**
+ * G_IS_PARAM_SPEC_OVERRIDE:
+ * @pspec: a #GParamSpec
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OVERRIDE.
+ * 
+ * Since: 2.4
+ * Returns: %TRUE on success.
+ */
+#define G_IS_PARAM_SPEC_OVERRIDE(pspec)    (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OVERRIDE))
+/**
+ * G_PARAM_SPEC_OVERRIDE:
+ * @pspec: a #GParamSpec
+ * 
+ * Casts a #GParamSpec into a #GParamSpecOverride.
+ * 
+ * Since: 2.4
+ */
+#define G_PARAM_SPEC_OVERRIDE(pspec)       (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OVERRIDE, GParamSpecOverride))
+
+/**
+ * G_TYPE_PARAM_GTYPE:
+ * 
+ * The #GType of #GParamSpecGType.
+ * 
+ * Since: 2.10
+ */
+#define	G_TYPE_PARAM_GTYPE		   (g_param_spec_types[21])
+/**
+ * G_IS_PARAM_SPEC_GTYPE:
+ * @pspec: a #GParamSpec
+ * 
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_GTYPE.
+ * 
+ * Since: 2.10
+ * Returns: %TRUE on success. 
+ */
+#define G_IS_PARAM_SPEC_GTYPE(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_GTYPE))
+/**
+ * G_PARAM_SPEC_GTYPE:
+ * @pspec: a #GParamSpec
+ * 
+ * Casts a #GParamSpec into a #GParamSpecGType.
+ * 
+ * Since: 2.10
+ */
+#define G_PARAM_SPEC_GTYPE(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_GTYPE, GParamSpecGType))
+
+/**
+ * G_TYPE_PARAM_VARIANT:
+ *
+ * The #GType of #GParamSpecVariant.
+ *
+ * Since: 2.26
+ */
+#define G_TYPE_PARAM_VARIANT                (g_param_spec_types[22])
+/**
+ * G_IS_PARAM_SPEC_VARIANT:
+ * @pspec: a #GParamSpec
+ *
+ * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VARIANT.
+ *
+ * Returns: %TRUE on success
+ *
+ * Since: 2.26
+ */
+#define G_IS_PARAM_SPEC_VARIANT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VARIANT))
+/**
+ * G_PARAM_SPEC_VARIANT:
+ * @pspec: a #GParamSpec
+ *
+ * Casts a #GParamSpec into a #GParamSpecVariant.
+ *
+ * Since: 2.26
+ */
+#define G_PARAM_SPEC_VARIANT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VARIANT, GParamSpecVariant))
+
+/* --- typedefs & structures --- */
+typedef struct _GParamSpecChar       GParamSpecChar;
+typedef struct _GParamSpecUChar      GParamSpecUChar;
+typedef struct _GParamSpecBoolean    GParamSpecBoolean;
+typedef struct _GParamSpecInt        GParamSpecInt;
+typedef struct _GParamSpecUInt       GParamSpecUInt;
+typedef struct _GParamSpecLong       GParamSpecLong;
+typedef struct _GParamSpecULong      GParamSpecULong;
+typedef struct _GParamSpecInt64      GParamSpecInt64;
+typedef struct _GParamSpecUInt64     GParamSpecUInt64;
+typedef struct _GParamSpecUnichar    GParamSpecUnichar;
+typedef struct _GParamSpecEnum       GParamSpecEnum;
+typedef struct _GParamSpecFlags      GParamSpecFlags;
+typedef struct _GParamSpecFloat      GParamSpecFloat;
+typedef struct _GParamSpecDouble     GParamSpecDouble;
+typedef struct _GParamSpecString     GParamSpecString;
+typedef struct _GParamSpecParam      GParamSpecParam;
+typedef struct _GParamSpecBoxed      GParamSpecBoxed;
+typedef struct _GParamSpecPointer    GParamSpecPointer;
+typedef struct _GParamSpecValueArray GParamSpecValueArray;
+typedef struct _GParamSpecObject     GParamSpecObject;
+typedef struct _GParamSpecOverride   GParamSpecOverride;
+typedef struct _GParamSpecGType      GParamSpecGType;
+typedef struct _GParamSpecVariant    GParamSpecVariant;
+
+/**
+ * GParamSpecChar:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for character properties.
+ */
+struct _GParamSpecChar
+{
+  GParamSpec    parent_instance;
+  
+  gint8         minimum;
+  gint8         maximum;
+  gint8         default_value;
+};
+/**
+ * GParamSpecUChar:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for unsigned character properties.
+ */
+struct _GParamSpecUChar
+{
+  GParamSpec    parent_instance;
+  
+  guint8        minimum;
+  guint8        maximum;
+  guint8        default_value;
+};
+/**
+ * GParamSpecBoolean:
+ * @parent_instance: private #GParamSpec portion
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for boolean properties.
+ */
+struct _GParamSpecBoolean
+{
+  GParamSpec    parent_instance;
+  
+  gboolean      default_value;
+};
+/**
+ * GParamSpecInt:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for integer properties.
+ */
+struct _GParamSpecInt
+{
+  GParamSpec    parent_instance;
+  
+  gint          minimum;
+  gint          maximum;
+  gint          default_value;
+};
+/**
+ * GParamSpecUInt:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for unsigned integer properties.
+ */
+struct _GParamSpecUInt
+{
+  GParamSpec    parent_instance;
+  
+  guint         minimum;
+  guint         maximum;
+  guint         default_value;
+};
+/**
+ * GParamSpecLong:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for long integer properties.
+ */
+struct _GParamSpecLong
+{
+  GParamSpec    parent_instance;
+  
+  glong         minimum;
+  glong         maximum;
+  glong         default_value;
+};
+/**
+ * GParamSpecULong:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for unsigned long integer properties.
+ */
+struct _GParamSpecULong
+{
+  GParamSpec    parent_instance;
+  
+  gulong        minimum;
+  gulong        maximum;
+  gulong        default_value;
+};
+/**
+ * GParamSpecInt64:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for 64bit integer properties.
+ */
+struct _GParamSpecInt64
+{
+  GParamSpec    parent_instance;
+  
+  gint64        minimum;
+  gint64        maximum;
+  gint64        default_value;
+};
+/**
+ * GParamSpecUInt64:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.
+ */
+struct _GParamSpecUInt64
+{
+  GParamSpec    parent_instance;
+  
+  guint64       minimum;
+  guint64       maximum;
+  guint64       default_value;
+};
+/**
+ * GParamSpecUnichar:
+ * @parent_instance: private #GParamSpec portion
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.
+ */
+struct _GParamSpecUnichar
+{
+  GParamSpec    parent_instance;
+  
+  gunichar      default_value;
+};
+/**
+ * GParamSpecEnum:
+ * @parent_instance: private #GParamSpec portion
+ * @enum_class: the #GEnumClass for the enum
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for enum 
+ * properties.
+ */
+struct _GParamSpecEnum
+{
+  GParamSpec    parent_instance;
+  
+  GEnumClass   *enum_class;
+  gint          default_value;
+};
+/**
+ * GParamSpecFlags:
+ * @parent_instance: private #GParamSpec portion
+ * @flags_class: the #GFlagsClass for the flags
+ * @default_value: default value for the property specified
+ * 
+ * A #GParamSpec derived structure that contains the meta data for flags
+ * properties.
+ */
+struct _GParamSpecFlags
+{
+  GParamSpec    parent_instance;
+  
+  GFlagsClass  *flags_class;
+  guint         default_value;
+};
+/**
+ * GParamSpecFloat:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * @epsilon: values closer than @epsilon will be considered identical
+ *  by g_param_values_cmp(); the default value is 1e-30.
+ * 
+ * A #GParamSpec derived structure that contains the meta data for float properties.
+ */
+struct _GParamSpecFloat
+{
+  GParamSpec    parent_instance;
+  
+  gfloat        minimum;
+  gfloat        maximum;
+  gfloat        default_value;
+  gfloat        epsilon;
+};
+/**
+ * GParamSpecDouble:
+ * @parent_instance: private #GParamSpec portion
+ * @minimum: minimum value for the property specified
+ * @maximum: maximum value for the property specified
+ * @default_value: default value for the property specified
+ * @epsilon: values closer than @epsilon will be considered identical
+ *  by g_param_values_cmp(); the default value is 1e-90.
+ * 
+ * A #GParamSpec derived structure that contains the meta data for double properties.
+ */
+struct _GParamSpecDouble
+{
+  GParamSpec    parent_instance;
+  
+  gdouble       minimum;
+  gdouble       maximum;
+  gdouble       default_value;
+  gdouble       epsilon;
+};
+/**
+ * GParamSpecString:
+ * @parent_instance: private #GParamSpec portion
+ * @default_value: default value for the property specified
+ * @cset_first: a string containing the allowed values for the first byte
+ * @cset_nth: a string containing the allowed values for the subsequent bytes
+ * @substitutor: the replacement byte for bytes which don't match @cset_first or @cset_nth.
+ * @null_fold_if_empty: replace empty string by %NULL
+ * @ensure_non_null: replace %NULL strings by an empty string
+ * 
+ * A #GParamSpec derived structure that contains the meta data for string
+ * properties.
+ */
+struct _GParamSpecString
+{
+  GParamSpec    parent_instance;
+  
+  gchar        *default_value;
+  gchar        *cset_first;
+  gchar        *cset_nth;
+  gchar         substitutor;
+  guint         null_fold_if_empty : 1;
+  guint         ensure_non_null : 1;
+};
+/**
+ * GParamSpecParam:
+ * @parent_instance: private #GParamSpec portion
+ * 
+ * A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM
+ * properties.
+ */
+struct _GParamSpecParam
+{
+  GParamSpec    parent_instance;
+};
+/**
+ * GParamSpecBoxed:
+ * @parent_instance: private #GParamSpec portion
+ * 
+ * A #GParamSpec derived structure that contains the meta data for boxed properties.
+ */
+struct _GParamSpecBoxed
+{
+  GParamSpec    parent_instance;
+};
+/**
+ * GParamSpecPointer:
+ * @parent_instance: private #GParamSpec portion
+ * 
+ * A #GParamSpec derived structure that contains the meta data for pointer properties.
+ */
+struct _GParamSpecPointer
+{
+  GParamSpec    parent_instance;
+};
+/**
+ * GParamSpecValueArray:
+ * @parent_instance: private #GParamSpec portion
+ * @element_spec: a #GParamSpec describing the elements contained in arrays of this property, may be %NULL
+ * @fixed_n_elements: if greater than 0, arrays of this property will always have this many elements
+ * 
+ * A #GParamSpec derived structure that contains the meta data for #GValueArray properties.
+ */
+struct _GParamSpecValueArray
+{
+  GParamSpec    parent_instance;
+  GParamSpec   *element_spec;
+  guint		fixed_n_elements;
+};
+/**
+ * GParamSpecObject:
+ * @parent_instance: private #GParamSpec portion
+ * 
+ * A #GParamSpec derived structure that contains the meta data for object properties.
+ */
+struct _GParamSpecObject
+{
+  GParamSpec    parent_instance;
+};
+/**
+ * GParamSpecOverride:
+ * 
+ * This is a type of #GParamSpec type that simply redirects operations to
+ * another paramspec.  All operations other than getting or
+ * setting the value are redirected, including accessing the nick and
+ * blurb, validating a value, and so forth. See
+ * g_param_spec_get_redirect_target() for retrieving the overidden
+ * property. #GParamSpecOverride is used in implementing
+ * g_object_class_override_property(), and will not be directly useful
+ * unless you are implementing a new base type similar to GObject.
+ * 
+ * Since: 2.4
+ */
+struct _GParamSpecOverride
+{
+  /*< private >*/
+  GParamSpec    parent_instance;
+  GParamSpec   *overridden;
+};
+/**
+ * GParamSpecGType:
+ * @parent_instance: private #GParamSpec portion
+ * @is_a_type: a #GType whose subtypes can occur as values
+ * 
+ * A #GParamSpec derived structure that contains the meta data for #GType properties.
+ * 
+ * Since: 2.10
+ */
+struct _GParamSpecGType
+{
+  GParamSpec    parent_instance;
+  GType         is_a_type;
+};
+/**
+ * GParamSpecVariant:
+ * @parent_instance: private #GParamSpec portion
+ * @type: a #GVariantType, or %NULL
+ * @default_value: a #GVariant, or %NULL
+ *
+ * A #GParamSpec derived structure that contains the meta data for #GVariant properties.
+ *
+ * Since: 2.26
+ */
+struct _GParamSpecVariant
+{
+  GParamSpec    parent_instance;
+  GVariantType *type;
+  GVariant     *default_value;
+
+  /*< private >*/
+  gpointer      padding[4];
+};
+
+/* --- GParamSpec prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_char	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gint8		  minimum,
+					  gint8		  maximum,
+					  gint8		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_uchar	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  guint8	  minimum,
+					  guint8	  maximum,
+					  guint8	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_boolean	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gboolean	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_int	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gint		  minimum,
+					  gint		  maximum,
+					  gint		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_uint	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  guint		  minimum,
+					  guint		  maximum,
+					  guint		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_long	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  glong		  minimum,
+					  glong		  maximum,
+					  glong		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_ulong	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gulong	  minimum,
+					  gulong	  maximum,
+					  gulong	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_int64	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gint64       	  minimum,
+					  gint64       	  maximum,
+					  gint64       	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_uint64	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  guint64	  minimum,
+					  guint64	  maximum,
+					  guint64	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_unichar      (const gchar    *name,
+				          const gchar    *nick,
+				          const gchar    *blurb,
+				          gunichar	  default_value,
+				          GParamFlags     flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_enum	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType		  enum_type,
+					  gint		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_flags	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType		  flags_type,
+					  guint		  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_float	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gfloat	  minimum,
+					  gfloat	  maximum,
+					  gfloat	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_double	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  gdouble	  minimum,
+					  gdouble	  maximum,
+					  gdouble	  default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_string	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  const gchar	 *default_value,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_param	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType		  param_type,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_boxed	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType		  boxed_type,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_pointer	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_value_array (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GParamSpec	 *element_spec,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_object	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType		  object_type,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_override    (const gchar    *name,
+					  GParamSpec     *overridden);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_gtype	 (const gchar	 *name,
+					  const gchar	 *nick,
+					  const gchar	 *blurb,
+					  GType           is_a_type,
+					  GParamFlags	  flags);
+GLIB_AVAILABLE_IN_ALL
+GParamSpec*	g_param_spec_variant	 (const gchar        *name,
+					  const gchar        *nick,
+					  const gchar	     *blurb,
+					  const GVariantType *type,
+					  GVariant           *default_value,
+					  GParamFlags         flags);
+
+/* --- internal --- */
+/* We prefix variable declarations so they can
+ * properly get exported in windows dlls.
+ */
+#ifndef GOBJECT_VAR
+#  ifdef G_PLATFORM_WIN32
+#    ifdef GOBJECT_STATIC_COMPILATION
+#      define GOBJECT_VAR extern
+#    else /* !GOBJECT_STATIC_COMPILATION */
+#      ifdef GOBJECT_COMPILATION
+#        ifdef DLL_EXPORT
+#          define GOBJECT_VAR __declspec(dllexport)
+#        else /* !DLL_EXPORT */
+#          define GOBJECT_VAR extern
+#        endif /* !DLL_EXPORT */
+#      else /* !GOBJECT_COMPILATION */
+#        define GOBJECT_VAR extern __declspec(dllimport)
+#      endif /* !GOBJECT_COMPILATION */
+#    endif /* !GOBJECT_STATIC_COMPILATION */
+#  else /* !G_PLATFORM_WIN32 */
+#    define GOBJECT_VAR _GLIB_EXTERN
+#  endif /* !G_PLATFORM_WIN32 */
+#endif /* GOBJECT_VAR */
+
+GOBJECT_VAR GType *g_param_spec_types;
+
+G_END_DECLS
+
+#endif /* __G_PARAMSPECS_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gsignal.h b/dist/usr/include/glib-2.0/gobject/gsignal.h
new file mode 100644
index 0000000..46721ca
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gsignal.h
@@ -0,0 +1,585 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000-2001 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_SIGNAL_H__
+#define __G_SIGNAL_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gclosure.h>
+#include	<gobject/gvalue.h>
+#include	<gobject/gparam.h>
+#include	<gobject/gmarshal.h>
+
+G_BEGIN_DECLS
+
+/* --- typedefs --- */
+typedef struct _GSignalQuery		 GSignalQuery;
+typedef struct _GSignalInvocationHint	 GSignalInvocationHint;
+/**
+ * GSignalCMarshaller:
+ * 
+ * This is the signature of marshaller functions, required to marshall
+ * arrays of parameter values to signal emissions into C language callback
+ * invocations. It is merely an alias to #GClosureMarshal since the #GClosure
+ * mechanism takes over responsibility of actual function invocation for the
+ * signal system.
+ */
+typedef GClosureMarshal			 GSignalCMarshaller;
+/**
+ * GSignalCVaMarshaller:
+ * 
+ * This is the signature of va_list marshaller functions, an optional
+ * marshaller that can be used in some situations to avoid
+ * marshalling the signal argument into GValues.
+ */
+typedef GVaClosureMarshal		 GSignalCVaMarshaller;
+/**
+ * GSignalEmissionHook:
+ * @ihint: Signal invocation hint, see #GSignalInvocationHint.
+ * @n_param_values: the number of parameters to the function, including
+ *  the instance on which the signal was emitted.
+ * @param_values: (array length=n_param_values): the instance on which
+ *  the signal was emitted, followed by the parameters of the emission.
+ * @data: user data associated with the hook.
+ * 
+ * A simple function pointer to get invoked when the signal is emitted. This 
+ * allows you to tie a hook to the signal type, so that it will trap all 
+ * emissions of that signal, from any object.
+ * 
+ * You may not attach these to signals created with the #G_SIGNAL_NO_HOOKS flag.
+ * 
+ * Returns: whether it wants to stay connected. If it returns %FALSE, the signal 
+ *  hook is disconnected (and destroyed).
+ */
+typedef gboolean (*GSignalEmissionHook) (GSignalInvocationHint *ihint,
+					 guint			n_param_values,
+					 const GValue	       *param_values,
+					 gpointer		data);
+/**
+ * GSignalAccumulator:
+ * @ihint: Signal invocation hint, see #GSignalInvocationHint.
+ * @return_accu: Accumulator to collect callback return values in, this
+ *  is the return value of the current signal emission.
+ * @handler_return: A #GValue holding the return value of the signal handler.
+ * @data: Callback data that was specified when creating the signal.
+ * 
+ * The signal accumulator is a special callback function that can be used
+ * to collect return values of the various callbacks that are called
+ * during a signal emission. The signal accumulator is specified at signal
+ * creation time, if it is left %NULL, no accumulation of callback return
+ * values is performed. The return value of signal emissions is then the
+ * value returned by the last callback.
+ * 
+ * Returns: The accumulator function returns whether the signal emission
+ *  should be aborted. Returning %FALSE means to abort the
+ *  current emission and %TRUE is returned for continuation.
+ */
+typedef gboolean (*GSignalAccumulator)	(GSignalInvocationHint *ihint,
+					 GValue		       *return_accu,
+					 const GValue	       *handler_return,
+					 gpointer               data);
+
+
+/* --- run, match and connect types --- */
+/**
+ * GSignalFlags:
+ * @G_SIGNAL_RUN_FIRST: Invoke the object method handler in the first emission stage.
+ * @G_SIGNAL_RUN_LAST: Invoke the object method handler in the third emission stage.
+ * @G_SIGNAL_RUN_CLEANUP: Invoke the object method handler in the last emission stage.
+ * @G_SIGNAL_NO_RECURSE: Signals being emitted for an object while currently being in
+ *  emission for this very object will not be emitted recursively,
+ *  but instead cause the first emission to be restarted.
+ * @G_SIGNAL_DETAILED: This signal supports "::detail" appendices to the signal name
+ *  upon handler connections and emissions.
+ * @G_SIGNAL_ACTION: Action signals are signals that may freely be emitted on alive
+ *  objects from user code via g_signal_emit() and friends, without
+ *  the need of being embedded into extra code that performs pre or
+ *  post emission adjustments on the object. They can also be thought
+ *  of as object methods which can be called generically by 
+ *  third-party code.
+ * @G_SIGNAL_NO_HOOKS: No emissions hooks are supported for this signal.
+ * @G_SIGNAL_MUST_COLLECT: Varargs signal emission will always collect the
+ *   arguments, even if there are no signal handlers connected.  Since 2.30.
+ * @G_SIGNAL_DEPRECATED: The signal is deprecated and will be removed
+ *   in a future version. A warning will be generated if it is connected while
+ *   running with G_ENABLE_DIAGNOSTIC=1.  Since 2.32.
+ * 
+ * The signal flags are used to specify a signal's behaviour, the overall
+ * signal description outlines how especially the RUN flags control the
+ * stages of a signal emission.
+ */
+typedef enum
+{
+  G_SIGNAL_RUN_FIRST	= 1 << 0,
+  G_SIGNAL_RUN_LAST	= 1 << 1,
+  G_SIGNAL_RUN_CLEANUP	= 1 << 2,
+  G_SIGNAL_NO_RECURSE	= 1 << 3,
+  G_SIGNAL_DETAILED	= 1 << 4,
+  G_SIGNAL_ACTION	= 1 << 5,
+  G_SIGNAL_NO_HOOKS	= 1 << 6,
+  G_SIGNAL_MUST_COLLECT = 1 << 7,
+  G_SIGNAL_DEPRECATED   = 1 << 8
+} GSignalFlags;
+/**
+ * G_SIGNAL_FLAGS_MASK:
+ * 
+ * A mask for all #GSignalFlags bits.
+ */
+#define G_SIGNAL_FLAGS_MASK  0x1ff
+/**
+ * GConnectFlags:
+ * @G_CONNECT_AFTER: whether the handler should be called before or after the 
+ *  default handler of the signal.
+ * @G_CONNECT_SWAPPED: whether the instance and data should be swapped when
+ *  calling the handler.
+ * 
+ * The connection flags are used to specify the behaviour of a signal's 
+ * connection.
+ */
+typedef enum
+{
+  G_CONNECT_AFTER	= 1 << 0,
+  G_CONNECT_SWAPPED	= 1 << 1
+} GConnectFlags;
+/**
+ * GSignalMatchType:
+ * @G_SIGNAL_MATCH_ID: The signal id must be equal.
+ * @G_SIGNAL_MATCH_DETAIL: The signal detail be equal.
+ * @G_SIGNAL_MATCH_CLOSURE: The closure must be the same.
+ * @G_SIGNAL_MATCH_FUNC: The C closure callback must be the same.
+ * @G_SIGNAL_MATCH_DATA: The closure data must be the same.
+ * @G_SIGNAL_MATCH_UNBLOCKED: Only unblocked signals may matched.
+ * 
+ * The match types specify what g_signal_handlers_block_matched(),
+ * g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
+ * match signals by.
+ */
+typedef enum
+{
+  G_SIGNAL_MATCH_ID	   = 1 << 0,
+  G_SIGNAL_MATCH_DETAIL	   = 1 << 1,
+  G_SIGNAL_MATCH_CLOSURE   = 1 << 2,
+  G_SIGNAL_MATCH_FUNC	   = 1 << 3,
+  G_SIGNAL_MATCH_DATA	   = 1 << 4,
+  G_SIGNAL_MATCH_UNBLOCKED = 1 << 5
+} GSignalMatchType;
+/**
+ * G_SIGNAL_MATCH_MASK:
+ * 
+ * A mask for all #GSignalMatchType bits.
+ */
+#define G_SIGNAL_MATCH_MASK  0x3f
+/**
+ * G_SIGNAL_TYPE_STATIC_SCOPE:
+ * 
+ * This macro flags signal argument types for which the signal system may 
+ * assume that instances thereof remain persistent across all signal emissions
+ * they are used in. This is only useful for non ref-counted, value-copy types.
+ * 
+ * To flag a signal argument in this way, add 
+ * <literal>| G_SIGNAL_TYPE_STATIC_SCOPE</literal> to the corresponding argument
+ * of g_signal_new().
+ * |[
+ * g_signal_new ("size_request",
+ *   G_TYPE_FROM_CLASS (gobject_class),
+ * 	 G_SIGNAL_RUN_FIRST,
+ * 	 G_STRUCT_OFFSET (GtkWidgetClass, size_request),
+ * 	 NULL, NULL,
+ * 	 _gtk_marshal_VOID__BOXED,
+ * 	 G_TYPE_NONE, 1,
+ * 	 GTK_TYPE_REQUISITION | G_SIGNAL_TYPE_STATIC_SCOPE);
+ * ]|
+ */
+#define	G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
+
+
+/* --- signal information --- */
+/**
+ * GSignalInvocationHint:
+ * @signal_id: The signal id of the signal invoking the callback
+ * @detail: The detail passed on for this emission
+ * @run_type: The stage the signal emission is currently in, this
+ *  field will contain one of %G_SIGNAL_RUN_FIRST,
+ *  %G_SIGNAL_RUN_LAST or %G_SIGNAL_RUN_CLEANUP.
+ * 
+ * The #GSignalInvocationHint structure is used to pass on additional information
+ * to callbacks during a signal emission.
+ */
+struct _GSignalInvocationHint
+{
+  guint		signal_id;
+  GQuark	detail;
+  GSignalFlags	run_type;
+};
+/**
+ * GSignalQuery:
+ * @signal_id: The signal id of the signal being queried, or 0 if the
+ *  signal to be queried was unknown.
+ * @signal_name: The signal name.
+ * @itype: The interface/instance type that this signal can be emitted for.
+ * @signal_flags: The signal flags as passed in to g_signal_new().
+ * @return_type: The return type for user callbacks.
+ * @n_params: The number of parameters that user callbacks take.
+ * @param_types: (array length=n_params): The individual parameter types for
+ *  user callbacks, note that the effective callback signature is:
+ *  <programlisting>
+ *  @return_type callback (#gpointer     data1,
+ *  [param_types param_names,]
+ *  gpointer     data2);
+ *  </programlisting>
+ * 
+ * A structure holding in-depth information for a specific signal. It is
+ * filled in by the g_signal_query() function.
+ */
+struct _GSignalQuery
+{
+  guint		signal_id;
+  const gchar  *signal_name;
+  GType		itype;
+  GSignalFlags	signal_flags;
+  GType		return_type; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
+  guint		n_params;
+  const GType  *param_types; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
+};
+
+
+/* --- signals --- */
+GLIB_AVAILABLE_IN_ALL
+guint                 g_signal_newv         (const gchar        *signal_name,
+					     GType               itype,
+					     GSignalFlags        signal_flags,
+					     GClosure           *class_closure,
+					     GSignalAccumulator	 accumulator,
+					     gpointer		 accu_data,
+					     GSignalCMarshaller  c_marshaller,
+					     GType               return_type,
+					     guint               n_params,
+					     GType              *param_types);
+GLIB_AVAILABLE_IN_ALL
+guint                 g_signal_new_valist   (const gchar        *signal_name,
+					     GType               itype,
+					     GSignalFlags        signal_flags,
+					     GClosure           *class_closure,
+					     GSignalAccumulator	 accumulator,
+					     gpointer		 accu_data,
+					     GSignalCMarshaller  c_marshaller,
+					     GType               return_type,
+					     guint               n_params,
+					     va_list             args);
+GLIB_AVAILABLE_IN_ALL
+guint                 g_signal_new          (const gchar        *signal_name,
+					     GType               itype,
+					     GSignalFlags        signal_flags,
+					     guint               class_offset,
+					     GSignalAccumulator	 accumulator,
+					     gpointer		 accu_data,
+					     GSignalCMarshaller  c_marshaller,
+					     GType               return_type,
+					     guint               n_params,
+					     ...);
+GLIB_AVAILABLE_IN_ALL
+guint            g_signal_new_class_handler (const gchar        *signal_name,
+                                             GType               itype,
+                                             GSignalFlags        signal_flags,
+                                             GCallback           class_handler,
+                                             GSignalAccumulator  accumulator,
+                                             gpointer            accu_data,
+                                             GSignalCMarshaller  c_marshaller,
+                                             GType               return_type,
+                                             guint               n_params,
+                                             ...);
+GLIB_AVAILABLE_IN_ALL
+void             g_signal_set_va_marshaller (guint              signal_id,
+					     GType              instance_type,
+					     GSignalCVaMarshaller va_marshaller);
+
+GLIB_AVAILABLE_IN_ALL
+void                  g_signal_emitv        (const GValue       *instance_and_params,
+					     guint               signal_id,
+					     GQuark              detail,
+					     GValue             *return_value);
+GLIB_AVAILABLE_IN_ALL
+void                  g_signal_emit_valist  (gpointer            instance,
+					     guint               signal_id,
+					     GQuark              detail,
+					     va_list             var_args);
+GLIB_AVAILABLE_IN_ALL
+void                  g_signal_emit         (gpointer            instance,
+					     guint               signal_id,
+					     GQuark              detail,
+					     ...);
+GLIB_AVAILABLE_IN_ALL
+void                  g_signal_emit_by_name (gpointer            instance,
+					     const gchar        *detailed_signal,
+					     ...);
+GLIB_AVAILABLE_IN_ALL
+guint                 g_signal_lookup       (const gchar        *name,
+					     GType               itype);
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_signal_name         (guint               signal_id);
+GLIB_AVAILABLE_IN_ALL
+void                  g_signal_query        (guint               signal_id,
+					     GSignalQuery       *query);
+GLIB_AVAILABLE_IN_ALL
+guint*                g_signal_list_ids     (GType               itype,
+					     guint              *n_ids);
+GLIB_AVAILABLE_IN_ALL
+gboolean	      g_signal_parse_name   (const gchar	*detailed_signal,
+					     GType		 itype,
+					     guint		*signal_id_p,
+					     GQuark		*detail_p,
+					     gboolean		 force_detail_quark);
+GLIB_AVAILABLE_IN_ALL
+GSignalInvocationHint* g_signal_get_invocation_hint (gpointer    instance);
+
+
+/* --- signal emissions --- */
+GLIB_AVAILABLE_IN_ALL
+void	g_signal_stop_emission		    (gpointer		  instance,
+					     guint		  signal_id,
+					     GQuark		  detail);
+GLIB_AVAILABLE_IN_ALL
+void	g_signal_stop_emission_by_name	    (gpointer		  instance,
+					     const gchar	 *detailed_signal);
+GLIB_AVAILABLE_IN_ALL
+gulong	g_signal_add_emission_hook	    (guint		  signal_id,
+					     GQuark		  detail,
+					     GSignalEmissionHook  hook_func,
+					     gpointer	       	  hook_data,
+					     GDestroyNotify	  data_destroy);
+GLIB_AVAILABLE_IN_ALL
+void	g_signal_remove_emission_hook	    (guint		  signal_id,
+					     gulong		  hook_id);
+
+
+/* --- signal handlers --- */
+GLIB_AVAILABLE_IN_ALL
+gboolean g_signal_has_handler_pending	      (gpointer		  instance,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       gboolean		  may_be_blocked);
+GLIB_AVAILABLE_IN_ALL
+gulong	 g_signal_connect_closure_by_id	      (gpointer		  instance,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       GClosure		 *closure,
+					       gboolean		  after);
+GLIB_AVAILABLE_IN_ALL
+gulong	 g_signal_connect_closure	      (gpointer		  instance,
+					       const gchar       *detailed_signal,
+					       GClosure		 *closure,
+					       gboolean		  after);
+GLIB_AVAILABLE_IN_ALL
+gulong	 g_signal_connect_data		      (gpointer		  instance,
+					       const gchar	 *detailed_signal,
+					       GCallback	  c_handler,
+					       gpointer		  data,
+					       GClosureNotify	  destroy_data,
+					       GConnectFlags	  connect_flags);
+GLIB_AVAILABLE_IN_ALL
+void	 g_signal_handler_block		      (gpointer		  instance,
+					       gulong		  handler_id);
+GLIB_AVAILABLE_IN_ALL
+void	 g_signal_handler_unblock	      (gpointer		  instance,
+					       gulong		  handler_id);
+GLIB_AVAILABLE_IN_ALL
+void	 g_signal_handler_disconnect	      (gpointer		  instance,
+					       gulong		  handler_id);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_signal_handler_is_connected	      (gpointer		  instance,
+					       gulong		  handler_id);
+GLIB_AVAILABLE_IN_ALL
+gulong	 g_signal_handler_find		      (gpointer		  instance,
+					       GSignalMatchType	  mask,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       GClosure		 *closure,
+					       gpointer		  func,
+					       gpointer		  data);
+GLIB_AVAILABLE_IN_ALL
+guint	 g_signal_handlers_block_matched      (gpointer		  instance,
+					       GSignalMatchType	  mask,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       GClosure		 *closure,
+					       gpointer		  func,
+					       gpointer		  data);
+GLIB_AVAILABLE_IN_ALL
+guint	 g_signal_handlers_unblock_matched    (gpointer		  instance,
+					       GSignalMatchType	  mask,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       GClosure		 *closure,
+					       gpointer		  func,
+					       gpointer		  data);
+GLIB_AVAILABLE_IN_ALL
+guint	 g_signal_handlers_disconnect_matched (gpointer		  instance,
+					       GSignalMatchType	  mask,
+					       guint		  signal_id,
+					       GQuark		  detail,
+					       GClosure		 *closure,
+					       gpointer		  func,
+					       gpointer		  data);
+
+
+/* --- overriding and chaining --- */
+GLIB_AVAILABLE_IN_ALL
+void    g_signal_override_class_closure       (guint              signal_id,
+                                               GType              instance_type,
+                                               GClosure          *class_closure);
+GLIB_AVAILABLE_IN_ALL
+void    g_signal_override_class_handler       (const gchar       *signal_name,
+                                               GType              instance_type,
+                                               GCallback          class_handler);
+GLIB_AVAILABLE_IN_ALL
+void    g_signal_chain_from_overridden        (const GValue      *instance_and_params,
+                                               GValue            *return_value);
+GLIB_AVAILABLE_IN_ALL
+void   g_signal_chain_from_overridden_handler (gpointer           instance,
+                                               ...);
+
+
+/* --- convenience --- */
+/**
+ * g_signal_connect:
+ * @instance: the instance to connect to.
+ * @detailed_signal: a string of the form "signal-name::detail".
+ * @c_handler: the #GCallback to connect.
+ * @data: data to pass to @c_handler calls.
+ * 
+ * Connects a #GCallback function to a signal for a particular object.
+ * 
+ * The handler will be called before the default handler of the signal.
+ * 
+ * Returns: the handler id
+ */
+#define g_signal_connect(instance, detailed_signal, c_handler, data) \
+    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
+/**
+ * g_signal_connect_after:
+ * @instance: the instance to connect to.
+ * @detailed_signal: a string of the form "signal-name::detail".
+ * @c_handler: the #GCallback to connect.
+ * @data: data to pass to @c_handler calls.
+ * 
+ * Connects a #GCallback function to a signal for a particular object.
+ * 
+ * The handler will be called after the default handler of the signal.
+ * 
+ * Returns: the handler id
+ */
+#define g_signal_connect_after(instance, detailed_signal, c_handler, data) \
+    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_AFTER)
+/**
+ * g_signal_connect_swapped:
+ * @instance: the instance to connect to.
+ * @detailed_signal: a string of the form "signal-name::detail".
+ * @c_handler: the #GCallback to connect.
+ * @data: data to pass to @c_handler calls.
+ * 
+ * Connects a #GCallback function to a signal for a particular object.
+ * 
+ * The instance on which the signal is emitted and @data will be swapped when 
+ * calling the handler.
+ * 
+ * Returns: the handler id
+ */
+#define g_signal_connect_swapped(instance, detailed_signal, c_handler, data) \
+    g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_SWAPPED)
+/**
+ * g_signal_handlers_disconnect_by_func:
+ * @instance: The instance to remove handlers from.
+ * @func: The C closure callback of the handlers (useless for non-C closures).
+ * @data: The closure data of the handlers' closures.
+ * 
+ * Disconnects all handlers on an instance that match @func and @data.
+ * 
+ * Returns: The number of handlers that matched.
+ */
+#define	g_signal_handlers_disconnect_by_func(instance, func, data)						\
+    g_signal_handlers_disconnect_matched ((instance),								\
+					  (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA),	\
+					  0, 0, NULL, (func), (data))
+
+/**
+ * g_signal_handlers_disconnect_by_data:
+ * @instance: The instance to remove handlers from
+ * @data: the closure data of the handlers' closures
+ *
+ * Disconnects all handlers on an instance that match @data.
+ *
+ * Returns: The number of handlers that matched.
+ *
+ * Since: 2.32
+ */
+#define g_signal_handlers_disconnect_by_data(instance, data) \
+  g_signal_handlers_disconnect_matched ((instance), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, (data))
+
+/**
+ * g_signal_handlers_block_by_func:
+ * @instance: The instance to block handlers from.
+ * @func: The C closure callback of the handlers (useless for non-C closures).
+ * @data: The closure data of the handlers' closures.
+ * 
+ * Blocks all handlers on an instance that match @func and @data.
+ * 
+ * Returns: The number of handlers that matched.
+ */
+#define	g_signal_handlers_block_by_func(instance, func, data)							\
+    g_signal_handlers_block_matched      ((instance),								\
+				          (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA),	\
+				          0, 0, NULL, (func), (data))
+/**
+ * g_signal_handlers_unblock_by_func:
+ * @instance: The instance to unblock handlers from.
+ * @func: The C closure callback of the handlers (useless for non-C closures).
+ * @data: The closure data of the handlers' closures.
+ * 
+ * Unblocks all handlers on an instance that match @func and @data.
+ * 
+ * Returns: The number of handlers that matched.
+ */
+#define	g_signal_handlers_unblock_by_func(instance, func, data)							\
+    g_signal_handlers_unblock_matched    ((instance),								\
+				          (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA),	\
+				          0, 0, NULL, (func), (data))
+
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
+					    GValue                *return_accu,
+					    const GValue          *handler_return,
+					    gpointer               dummy);
+
+GLIB_AVAILABLE_IN_ALL
+gboolean g_signal_accumulator_first_wins   (GSignalInvocationHint *ihint,
+                                            GValue                *return_accu,
+                                            const GValue          *handler_return,
+                                            gpointer               dummy);
+
+/*< private >*/
+GLIB_AVAILABLE_IN_ALL
+void	 g_signal_handlers_destroy	      (gpointer		  instance);
+void	 _g_signals_destroy		      (GType		  itype);
+
+G_END_DECLS
+
+#endif /* __G_SIGNAL_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gsourceclosure.h b/dist/usr/include/glib-2.0/gobject/gsourceclosure.h
new file mode 100644
index 0000000..6f07786
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gsourceclosure.h
@@ -0,0 +1,40 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2001 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_SOURCECLOSURE_H__
+#define __G_SOURCECLOSURE_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <gobject/gclosure.h>
+#include <gobject/glib-types.h>
+
+G_BEGIN_DECLS
+
+GLIB_AVAILABLE_IN_ALL
+void g_source_set_closure        (GSource  *source,
+				  GClosure *closure);
+
+GLIB_AVAILABLE_IN_ALL
+void g_source_set_dummy_callback (GSource  *source);
+
+G_END_DECLS
+
+#endif /* __G_SOURCECLOSURE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gtype.h b/dist/usr/include/glib-2.0/gobject/gtype.h
new file mode 100644
index 0000000..76c79c0
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gtype.h
@@ -0,0 +1,1950 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998-1999, 2000-2001 Tim Janik and 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_TYPE_H__
+#define __G_TYPE_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include        <glib.h>
+
+G_BEGIN_DECLS
+
+/* Basic Type Macros
+ */
+/**
+ * G_TYPE_FUNDAMENTAL:
+ * @type: A #GType value.
+ * 
+ * The fundamental type which is the ancestor of @type.
+ * Fundamental types are types that serve as ultimate bases for the derived types, 
+ * thus they are the roots of distinct inheritance hierarchies.
+ */
+#define G_TYPE_FUNDAMENTAL(type)	(g_type_fundamental (type))
+/**
+ * G_TYPE_FUNDAMENTAL_MAX:
+ * 
+ * An integer constant that represents the number of identifiers reserved
+ * for types that are assigned at compile-time.
+ */
+#define	G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
+
+/* Constant fundamental types,
+ */
+/**
+ * G_TYPE_INVALID:
+ * 
+ * An invalid #GType used as error return value in some functions which return
+ * a #GType. 
+ */
+#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
+/**
+ * G_TYPE_NONE:
+ * 
+ * A fundamental type which is used as a replacement for the C
+ * <literal>void</literal> return type.
+ */
+#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
+/**
+ * G_TYPE_INTERFACE:
+ * 
+ * The fundamental type from which all interfaces are derived.
+ */
+#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
+/**
+ * G_TYPE_CHAR:
+ * 
+ * The fundamental type corresponding to #gchar.
+ * The type designated by G_TYPE_CHAR is unconditionally an 8-bit signed integer.
+ * This may or may not be the same type a the C type "gchar".
+ */
+#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
+/**
+ * G_TYPE_UCHAR:
+ * 
+ * The fundamental type corresponding to #guchar.
+ */
+#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
+/**
+ * G_TYPE_BOOLEAN:
+ * 
+ * The fundamental type corresponding to #gboolean.
+ */
+#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
+/**
+ * G_TYPE_INT:
+ * 
+ * The fundamental type corresponding to #gint.
+ */
+#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
+/**
+ * G_TYPE_UINT:
+ * 
+ * The fundamental type corresponding to #guint.
+ */
+#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
+/**
+ * G_TYPE_LONG:
+ * 
+ * The fundamental type corresponding to #glong.
+ */
+#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
+/**
+ * G_TYPE_ULONG:
+ * 
+ * The fundamental type corresponding to #gulong.
+ */
+#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
+/**
+ * G_TYPE_INT64:
+ * 
+ * The fundamental type corresponding to #gint64.
+ */
+#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
+/**
+ * G_TYPE_UINT64:
+ * 
+ * The fundamental type corresponding to #guint64.
+ */
+#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
+/**
+ * G_TYPE_ENUM:
+ * 
+ * The fundamental type from which all enumeration types are derived.
+ */
+#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
+/**
+ * G_TYPE_FLAGS:
+ * 
+ * The fundamental type from which all flags types are derived.
+ */
+#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
+/**
+ * G_TYPE_FLOAT:
+ * 
+ * The fundamental type corresponding to #gfloat.
+ */
+#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
+/**
+ * G_TYPE_DOUBLE:
+ * 
+ * The fundamental type corresponding to #gdouble.
+ */
+#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
+/**
+ * G_TYPE_STRING:
+ * 
+ * The fundamental type corresponding to nul-terminated C strings.
+ */
+#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
+/**
+ * G_TYPE_POINTER:
+ * 
+ * The fundamental type corresponding to #gpointer.
+ */
+#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
+/**
+ * G_TYPE_BOXED:
+ * 
+ * The fundamental type from which all boxed types are derived.
+ */
+#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
+/**
+ * G_TYPE_PARAM:
+ * 
+ * The fundamental type from which all #GParamSpec types are derived.
+ */
+#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
+/**
+ * G_TYPE_OBJECT:
+ * 
+ * The fundamental type for #GObject.
+ */
+#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
+/**
+ * G_TYPE_VARIANT:
+ *
+ * The fundamental type corresponding to #GVariant.
+ *
+ * All floating #GVariant instances passed through the #GType system are
+ * consumed.
+ * 
+ * Note that callbacks in closures, and signal handlers
+ * for signals of return type %G_TYPE_VARIANT, must never return floating
+ * variants.
+ *
+ * Note: GLib 2.24 did include a boxed type with this name. It was replaced
+ * with this fundamental type in 2.26.
+ *
+ * Since: 2.26
+ */
+#define	G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
+
+
+/* Reserved fundamental type numbers to create new fundamental
+ * type IDs with G_TYPE_MAKE_FUNDAMENTAL().
+ * Send email to gtk-devel-list@gnome.org for reservations.
+ */
+/**
+ * G_TYPE_FUNDAMENTAL_SHIFT:
+ *
+ * Shift value used in converting numbers to type IDs.
+ */
+#define	G_TYPE_FUNDAMENTAL_SHIFT	(2)
+/**
+ * G_TYPE_MAKE_FUNDAMENTAL:
+ * @x: the fundamental type number.
+ * 
+ * Get the type ID for the fundamental type number @x.
+ * Use g_type_fundamental_next() instead of this macro to create new fundamental 
+ * types.
+ *
+ * Returns: the GType
+ */
+#define	G_TYPE_MAKE_FUNDAMENTAL(x)	((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
+/**
+ * G_TYPE_RESERVED_GLIB_FIRST:
+ * 
+ * First fundamental type number to create a new fundamental type id with
+ * G_TYPE_MAKE_FUNDAMENTAL() reserved for GLib.
+ */
+#define G_TYPE_RESERVED_GLIB_FIRST	(22)
+/**
+ * G_TYPE_RESERVED_GLIB_LAST:
+ * 
+ * Last fundamental type number reserved for GLib.
+ */
+#define G_TYPE_RESERVED_GLIB_LAST	(31)
+/**
+ * G_TYPE_RESERVED_BSE_FIRST:
+ * 
+ * First fundamental type number to create a new fundamental type id with
+ * G_TYPE_MAKE_FUNDAMENTAL() reserved for BSE.
+ */
+#define G_TYPE_RESERVED_BSE_FIRST	(32)
+/**
+ * G_TYPE_RESERVED_BSE_LAST:
+ * 
+ * Last fundamental type number reserved for BSE.
+ */
+#define G_TYPE_RESERVED_BSE_LAST	(48)
+/**
+ * G_TYPE_RESERVED_USER_FIRST:
+ * 
+ * First available fundamental type number to create new fundamental 
+ * type id with G_TYPE_MAKE_FUNDAMENTAL().
+ */
+#define G_TYPE_RESERVED_USER_FIRST	(49)
+
+
+/* Type Checking Macros
+ */
+/**
+ * G_TYPE_IS_FUNDAMENTAL:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is a fundamental type.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_FUNDAMENTAL(type)             ((type) <= G_TYPE_FUNDAMENTAL_MAX)
+/**
+ * G_TYPE_IS_DERIVED:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is derived (or in object-oriented terminology:
+ * inherited) from another type (this holds true for all non-fundamental
+ * types).
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_DERIVED(type)                 ((type) > G_TYPE_FUNDAMENTAL_MAX)
+/**
+ * G_TYPE_IS_INTERFACE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is an interface type.
+ * An interface type provides a pure API, the implementation
+ * of which is provided by another type (which is then said to conform
+ * to the interface).  GLib interfaces are somewhat analogous to Java
+ * interfaces and C++ classes containing only pure virtual functions, 
+ * with the difference that GType interfaces are not derivable (but see
+ * g_type_interface_add_prerequisite() for an alternative).
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
+/**
+ * G_TYPE_IS_CLASSED:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is a classed type.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_CLASSED(type)                 (g_type_test_flags ((type), G_TYPE_FLAG_CLASSED))
+/**
+ * G_TYPE_IS_INSTANTIATABLE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type can be instantiated.  Instantiation is the
+ * process of creating an instance (object) of this type.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_INSTANTIATABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE))
+/**
+ * G_TYPE_IS_DERIVABLE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is a derivable type.  A derivable type can
+ * be used as the base class of a flat (single-level) class hierarchy.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_DERIVABLE(type)               (g_type_test_flags ((type), G_TYPE_FLAG_DERIVABLE))
+/**
+ * G_TYPE_IS_DEEP_DERIVABLE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is a deep derivable type.  A deep derivable type
+ * can be used as the base class of a deep (multi-level) class hierarchy.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_DEEP_DERIVABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_DEEP_DERIVABLE))
+/**
+ * G_TYPE_IS_ABSTRACT:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is an abstract type.  An abstract type cannot be
+ * instantiated and is normally used as an abstract base class for
+ * derived classes.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))
+/**
+ * G_TYPE_IS_VALUE_ABSTRACT:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is an abstract value type.  An abstract value type introduces
+ * a value table, but can't be used for g_value_init() and is normally used as
+ * an abstract base type for derived value types.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_VALUE_ABSTRACT(type)          (g_type_test_flags ((type), G_TYPE_FLAG_VALUE_ABSTRACT))
+/**
+ * G_TYPE_IS_VALUE_TYPE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type is a value type and can be used with g_value_init(). 
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_IS_VALUE_TYPE(type)              (g_type_check_is_value_type (type))
+/**
+ * G_TYPE_HAS_VALUE_TABLE:
+ * @type: A #GType value.
+ * 
+ * Checks if @type has a #GTypeValueTable.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_HAS_VALUE_TABLE(type)            (g_type_value_table_peek (type) != NULL)
+
+
+/* Typedefs
+ */
+/**
+ * GType:
+ * 
+ * A numerical value which represents the unique identifier of a registered
+ * type.
+ */
+#if     GLIB_SIZEOF_SIZE_T != GLIB_SIZEOF_LONG || !defined __cplusplus
+typedef gsize                           GType;
+#else   /* for historic reasons, C++ links against gulong GTypes */
+typedef gulong                          GType;
+#endif
+typedef struct _GValue                  GValue;
+typedef union  _GTypeCValue             GTypeCValue;
+typedef struct _GTypePlugin             GTypePlugin;
+typedef struct _GTypeClass              GTypeClass;
+typedef struct _GTypeInterface          GTypeInterface;
+typedef struct _GTypeInstance           GTypeInstance;
+typedef struct _GTypeInfo               GTypeInfo;
+typedef struct _GTypeFundamentalInfo    GTypeFundamentalInfo;
+typedef struct _GInterfaceInfo          GInterfaceInfo;
+typedef struct _GTypeValueTable         GTypeValueTable;
+typedef struct _GTypeQuery		GTypeQuery;
+
+
+/* Basic Type Structures
+ */
+/**
+ * GTypeClass:
+ * 
+ * An opaque structure used as the base of all classes.
+ */
+struct _GTypeClass
+{
+  /*< private >*/
+  GType g_type;
+};
+/**
+ * GTypeInstance:
+ * 
+ * An opaque structure used as the base of all type instances.
+ */
+struct _GTypeInstance
+{
+  /*< private >*/
+  GTypeClass *g_class;
+};
+/**
+ * GTypeInterface:
+ * 
+ * An opaque structure used as the base of all interface types.
+ */
+struct _GTypeInterface
+{
+  /*< private >*/
+  GType g_type;         /* iface type */
+  GType g_instance_type;
+};
+/**
+ * GTypeQuery:
+ * @type: the #GType value of the type.
+ * @type_name: the name of the type.
+ * @class_size: the size of the class structure.
+ * @instance_size: the size of the instance structure.
+ * 
+ * A structure holding information for a specific type. It is
+ * filled in by the g_type_query() function.
+ */
+struct _GTypeQuery
+{
+  GType		type;
+  const gchar  *type_name;
+  guint		class_size;
+  guint		instance_size;
+};
+
+
+/* Casts, checks and accessors for structured types
+ * usage of these macros is reserved to type implementations only
+ */
+/*< protected >*/
+/**
+ * G_TYPE_CHECK_INSTANCE:
+ * @instance: Location of a #GTypeInstance structure.
+ * 
+ * Checks if @instance is a valid #GTypeInstance structure,
+ * otherwise issues a warning and returns %FALSE.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_CHECK_INSTANCE(instance)				(_G_TYPE_CHI ((GTypeInstance*) (instance)))
+/**
+ * G_TYPE_CHECK_INSTANCE_CAST:
+ * @instance: Location of a #GTypeInstance structure.
+ * @g_type: The type to be returned.
+ * @c_type: The corresponding C type of @g_type.
+ * 
+ * Checks that @instance is an instance of the type identified by @g_type
+ * and issues a warning if this is not the case. Returns @instance casted 
+ * to a pointer to @c_type.
+ * 
+ * This macro should only be used in type implementations.
+ */
+#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_type))
+/**
+ * G_TYPE_CHECK_INSTANCE_TYPE:
+ * @instance: Location of a #GTypeInstance structure.
+ * @g_type: The type to be checked
+ * 
+ * Checks if @instance is an instance of the type identified by @g_type.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
+/**
+ * G_TYPE_INSTANCE_GET_CLASS:
+ * @instance: Location of the #GTypeInstance structure.
+ * @g_type: The #GType of the class to be returned.
+ * @c_type: The C type of the class structure.
+ * 
+ * Get the class structure of a given @instance, casted
+ * to a specified ancestor type @g_type of the instance.
+ * 
+ * Note that while calling a GInstanceInitFunc(), the class pointer gets
+ * modified, so it might not always return the expected pointer.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: a pointer to the class structure
+ */
+#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
+/**
+ * G_TYPE_INSTANCE_GET_INTERFACE:
+ * @instance: Location of the #GTypeInstance structure.
+ * @g_type: The #GType of the interface to be returned.
+ * @c_type: The C type of the interface structure.
+ * 
+ * Get the interface structure for interface @g_type of a given @instance.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: a pointer to the interface structure
+ */
+#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
+/**
+ * G_TYPE_CHECK_CLASS_CAST:
+ * @g_class: Location of a #GTypeClass structure.
+ * @g_type: The type to be returned.
+ * @c_type: The corresponding C type of class structure of @g_type.
+ * 
+ * Checks that @g_class is a class structure of the type identified by @g_type
+ * and issues a warning if this is not the case. Returns @g_class casted 
+ * to a pointer to @c_type.
+ * 
+ * This macro should only be used in type implementations.
+ */
+#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_type))
+/**
+ * G_TYPE_CHECK_CLASS_TYPE:
+ * @g_class: Location of a #GTypeClass structure.
+ * @g_type: The type to be checked.
+ * 
+ * Checks if @g_class is a class structure of the type identified by 
+ * @g_type.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
+/**
+ * G_TYPE_CHECK_VALUE:
+ * @value: a #GValue
+ * 
+ * Checks if @value has been initialized to hold values
+ * of a value type.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_CHECK_VALUE(value)				(_G_TYPE_CHV ((value)))
+/**
+ * G_TYPE_CHECK_VALUE_TYPE:
+ * @value: a #GValue
+ * @g_type: The type to be checked.
+ * 
+ * Checks if @value has been initialized to hold values
+ * of type @g_type. 
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: %TRUE on success.
+ */
+#define G_TYPE_CHECK_VALUE_TYPE(value, g_type)			(_G_TYPE_CVH ((value), (g_type)))
+/**
+ * G_TYPE_FROM_INSTANCE:
+ * @instance: Location of a valid #GTypeInstance structure.
+ * 
+ * Get the type identifier from a given @instance structure. 
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: the #GType
+ */
+#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
+/**
+ * G_TYPE_FROM_CLASS:
+ * @g_class: Location of a valid #GTypeClass structure.
+ * 
+ * Get the type identifier from a given @class structure.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: the #GType
+ */
+#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
+/**
+ * G_TYPE_FROM_INTERFACE:
+ * @g_iface: Location of a valid #GTypeInterface structure.
+ * 
+ * Get the type identifier from a given @interface structure.
+ * 
+ * This macro should only be used in type implementations.
+ *
+ * Returns: the #GType
+ */
+#define G_TYPE_FROM_INTERFACE(g_iface)                          (((GTypeInterface*) (g_iface))->g_type)
+
+/**
+ * G_TYPE_INSTANCE_GET_PRIVATE:
+ * @instance: the instance of a type deriving from @private_type.
+ * @g_type: the type identifying which private data to retrieve.
+ * @c_type: The C type for the private structure.
+ * 
+ * Gets the private structure for a particular type.
+ * The private structure must have been registered in the
+ * class_init function with g_type_class_add_private().
+ * 
+ * This macro should only be used in type implementations.
+ * 
+ * Since: 2.4
+ * Returns: a pointer to the private data structure.
+ */
+#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type)   ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type)))
+
+/**
+ * G_TYPE_CLASS_GET_PRIVATE:
+ * @klass: the class of a type deriving from @private_type.
+ * @g_type: the type identifying which private data to retrieve.
+ * @c_type: The C type for the private structure.
+ * 
+ * Gets the private class structure for a particular type.
+ * The private structure must have been registered in the
+ * get_type() function with g_type_add_class_private().
+ * 
+ * This macro should only be used in type implementations.
+ * 
+ * Since: 2.24
+ * Returns: a pointer to the private data structure.
+ */
+#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
+
+/**
+ * GTypeDebugFlags:
+ * @G_TYPE_DEBUG_NONE: Print no messages.
+ * @G_TYPE_DEBUG_OBJECTS: Print messages about object bookkeeping.
+ * @G_TYPE_DEBUG_SIGNALS: Print messages about signal emissions.
+ * @G_TYPE_DEBUG_MASK: Mask covering all debug flags.
+ *
+ * These flags used to be passed to g_type_init_with_debug_flags() which
+ * is now deprecated.
+ *
+ * If you need to enable debugging features, use the GOBJECT_DEBUG
+ * environment variable.
+ *
+ * Deprecated: 2.36: g_type_init() is now done automatically
+ */
+typedef enum	/*< skip >*/
+{
+  G_TYPE_DEBUG_NONE	= 0,
+  G_TYPE_DEBUG_OBJECTS	= 1 << 0,
+  G_TYPE_DEBUG_SIGNALS	= 1 << 1,
+  G_TYPE_DEBUG_MASK	= 0x03
+} GTypeDebugFlags;
+
+
+/* --- prototypes --- */
+GLIB_DEPRECATED_IN_2_36
+void                  g_type_init                    (void);
+GLIB_DEPRECATED_IN_2_36
+void                  g_type_init_with_debug_flags   (GTypeDebugFlags  debug_flags);
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_type_name                    (GType            type);
+GLIB_AVAILABLE_IN_ALL
+GQuark                g_type_qname                   (GType            type);
+GLIB_AVAILABLE_IN_ALL
+GType                 g_type_from_name               (const gchar     *name);
+GLIB_AVAILABLE_IN_ALL
+GType                 g_type_parent                  (GType            type);
+GLIB_AVAILABLE_IN_ALL
+guint                 g_type_depth                   (GType            type);
+GLIB_AVAILABLE_IN_ALL
+GType                 g_type_next_base               (GType            leaf_type,
+						      GType            root_type);
+GLIB_AVAILABLE_IN_ALL
+gboolean              g_type_is_a                    (GType            type,
+						      GType            is_a_type);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_class_ref               (GType            type);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_class_peek              (GType            type);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_class_peek_static       (GType            type);
+GLIB_AVAILABLE_IN_ALL
+void                  g_type_class_unref             (gpointer         g_class);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_class_peek_parent       (gpointer         g_class);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_interface_peek          (gpointer         instance_class,
+						      GType            iface_type);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_interface_peek_parent   (gpointer         g_iface);
+
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_default_interface_ref   (GType            g_type);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_default_interface_peek  (GType            g_type);
+GLIB_AVAILABLE_IN_ALL
+void                  g_type_default_interface_unref (gpointer         g_iface);
+
+/* g_free() the returned arrays */
+GLIB_AVAILABLE_IN_ALL
+GType*                g_type_children                (GType            type,
+						      guint           *n_children);
+GLIB_AVAILABLE_IN_ALL
+GType*                g_type_interfaces              (GType            type,
+						      guint           *n_interfaces);
+
+/* per-type _static_ data */
+GLIB_AVAILABLE_IN_ALL
+void                  g_type_set_qdata               (GType            type,
+						      GQuark           quark,
+						      gpointer         data);
+GLIB_AVAILABLE_IN_ALL
+gpointer              g_type_get_qdata               (GType            type,
+						      GQuark           quark);
+GLIB_AVAILABLE_IN_ALL
+void		      g_type_query		     (GType	       type,
+						      GTypeQuery      *query);
+
+
+/* --- type registration --- */
+/**
+ * GBaseInitFunc:
+ * @g_class: The #GTypeClass structure to initialize.
+ * 
+ * A callback function used by the type system to do base initialization
+ * of the class structures of derived types. It is called as part of the
+ * initialization process of all derived classes and should reallocate
+ * or reset all dynamic class members copied over from the parent class.
+ * For example, class members (such as strings) that are not sufficiently
+ * handled by a plain memory copy of the parent class into the derived class
+ * have to be altered. See GClassInitFunc() for a discussion of the class
+ * intialization process.
+ */
+typedef void   (*GBaseInitFunc)              (gpointer         g_class);
+/**
+ * GBaseFinalizeFunc:
+ * @g_class: The #GTypeClass structure to finalize.
+ * 
+ * A callback function used by the type system to finalize those portions
+ * of a derived types class structure that were setup from the corresponding
+ * GBaseInitFunc() function. Class finalization basically works the inverse
+ * way in which class intialization is performed.
+ * See GClassInitFunc() for a discussion of the class intialization process.
+ */
+typedef void   (*GBaseFinalizeFunc)          (gpointer         g_class);
+/**
+ * GClassInitFunc:
+ * @g_class: The #GTypeClass structure to initialize.
+ * @class_data: The @class_data member supplied via the #GTypeInfo structure.
+ * 
+ * A callback function used by the type system to initialize the class
+ * of a specific type. This function should initialize all static class
+ * members.
+ * The initialization process of a class involves:
+ * <itemizedlist>
+ * <listitem><para>
+ * 	1 - Copying common members from the parent class over to the
+ * 	derived class structure.
+ * </para></listitem>
+ * <listitem><para>
+ * 	2 -  Zero initialization of the remaining members not copied
+ * 	over from the parent class.
+ * </para></listitem>
+ * <listitem><para>
+ * 	3 - Invocation of the GBaseInitFunc() initializers of all parent
+ * 	types and the class' type.
+ * </para></listitem>
+ * <listitem><para>
+ * 	4 - Invocation of the class' GClassInitFunc() initializer.
+ * </para></listitem>
+ * </itemizedlist>
+ * Since derived classes are partially initialized through a memory copy
+ * of the parent class, the general rule is that GBaseInitFunc() and
+ * GBaseFinalizeFunc() should take care of necessary reinitialization
+ * and release of those class members that were introduced by the type
+ * that specified these GBaseInitFunc()/GBaseFinalizeFunc().
+ * GClassInitFunc() should only care about initializing static
+ * class members, while dynamic class members (such as allocated strings
+ * or reference counted resources) are better handled by a GBaseInitFunc()
+ * for this type, so proper initialization of the dynamic class members
+ * is performed for class initialization of derived types as well.
+ * An example may help to correspond the intend of the different class
+ * initializers:
+ * 
+ * |[
+ * typedef struct {
+ *   GObjectClass parent_class;
+ *   gint         static_integer;
+ *   gchar       *dynamic_string;
+ * } TypeAClass;
+ * static void
+ * type_a_base_class_init (TypeAClass *class)
+ * {
+ *   class->dynamic_string = g_strdup ("some string");
+ * }
+ * static void
+ * type_a_base_class_finalize (TypeAClass *class)
+ * {
+ *   g_free (class->dynamic_string);
+ * }
+ * static void
+ * type_a_class_init (TypeAClass *class)
+ * {
+ *   class->static_integer = 42;
+ * }
+ * 
+ * typedef struct {
+ *   TypeAClass   parent_class;
+ *   gfloat       static_float;
+ *   GString     *dynamic_gstring;
+ * } TypeBClass;
+ * static void
+ * type_b_base_class_init (TypeBClass *class)
+ * {
+ *   class->dynamic_gstring = g_string_new ("some other string");
+ * }
+ * static void
+ * type_b_base_class_finalize (TypeBClass *class)
+ * {
+ *   g_string_free (class->dynamic_gstring);
+ * }
+ * static void
+ * type_b_class_init (TypeBClass *class)
+ * {
+ *   class->static_float = 3.14159265358979323846;
+ * }
+ * ]|
+ * Initialization of TypeBClass will first cause initialization of
+ * TypeAClass (derived classes reference their parent classes, see
+ * g_type_class_ref() on this).
+ * Initialization of TypeAClass roughly involves zero-initializing its fields,
+ * then calling its GBaseInitFunc() type_a_base_class_init() to allocate
+ * its dynamic members (dynamic_string), and finally calling its GClassInitFunc()
+ * type_a_class_init() to initialize its static members (static_integer).
+ * The first step in the initialization process of TypeBClass is then
+ * a plain memory copy of the contents of TypeAClass into TypeBClass and 
+ * zero-initialization of the remaining fields in TypeBClass.
+ * The dynamic members of TypeAClass within TypeBClass now need
+ * reinitialization which is performed by calling type_a_base_class_init()
+ * with an argument of TypeBClass.
+ * After that, the GBaseInitFunc() of TypeBClass, type_b_base_class_init()
+ * is called to allocate the dynamic members of TypeBClass (dynamic_gstring),
+ * and finally the GClassInitFunc() of TypeBClass, type_b_class_init(),
+ * is called to complete the initialization process with the static members
+ * (static_float).
+ * Corresponding finalization counter parts to the GBaseInitFunc() functions
+ * have to be provided to release allocated resources at class finalization
+ * time.
+ */
+typedef void   (*GClassInitFunc)             (gpointer         g_class,
+					      gpointer         class_data);
+/**
+ * GClassFinalizeFunc:
+ * @g_class: The #GTypeClass structure to finalize.
+ * @class_data: The @class_data member supplied via the #GTypeInfo structure.
+ * 
+ * A callback function used by the type system to finalize a class.
+ * This function is rarely needed, as dynamically allocated class resources
+ * should be handled by GBaseInitFunc() and GBaseFinalizeFunc().
+ * Also, specification of a GClassFinalizeFunc() in the #GTypeInfo
+ * structure of a static type is invalid, because classes of static types
+ * will never be finalized (they are artificially kept alive when their
+ * reference count drops to zero).
+ */
+typedef void   (*GClassFinalizeFunc)         (gpointer         g_class,
+					      gpointer         class_data);
+/**
+ * GInstanceInitFunc:
+ * @instance: The instance to initialize.
+ * @g_class: The class of the type the instance is created for.
+ * 
+ * A callback function used by the type system to initialize a new
+ * instance of a type. This function initializes all instance members and
+ * allocates any resources required by it.
+ * Initialization of a derived instance involves calling all its parent
+ * types instance initializers, so the class member of the instance
+ * is altered during its initialization to always point to the class that
+ * belongs to the type the current initializer was introduced for.
+ */
+typedef void   (*GInstanceInitFunc)          (GTypeInstance   *instance,
+					      gpointer         g_class);
+/**
+ * GInterfaceInitFunc:
+ * @g_iface: The interface structure to initialize.
+ * @iface_data: The @interface_data supplied via the #GInterfaceInfo structure.
+ * 
+ * A callback function used by the type system to initialize a new
+ * interface.  This function should initialize all internal data and
+ * allocate any resources required by the interface.
+ */
+typedef void   (*GInterfaceInitFunc)         (gpointer         g_iface,
+					      gpointer         iface_data);
+/**
+ * GInterfaceFinalizeFunc:
+ * @g_iface: The interface structure to finalize.
+ * @iface_data: The @interface_data supplied via the #GInterfaceInfo structure.
+ * 
+ * A callback function used by the type system to finalize an interface.
+ * This function should destroy any internal data and release any resources
+ * allocated by the corresponding GInterfaceInitFunc() function.
+ */
+typedef void   (*GInterfaceFinalizeFunc)     (gpointer         g_iface,
+					      gpointer         iface_data);
+/**
+ * GTypeClassCacheFunc:
+ * @cache_data: data that was given to the g_type_add_class_cache_func() call
+ * @g_class: The #GTypeClass structure which is unreferenced
+ * 
+ * A callback function which is called when the reference count of a class 
+ * drops to zero. It may use g_type_class_ref() to prevent the class from
+ * being freed. You should not call g_type_class_unref() from a 
+ * #GTypeClassCacheFunc function to prevent infinite recursion, use 
+ * g_type_class_unref_uncached() instead.
+ * 
+ * The functions have to check the class id passed in to figure 
+ * whether they actually want to cache the class of this type, since all
+ * classes are routed through the same #GTypeClassCacheFunc chain.
+ * 
+ * Returns: %TRUE to stop further #GTypeClassCacheFunc<!-- -->s from being 
+ *  called, %FALSE to continue.
+ */
+typedef gboolean (*GTypeClassCacheFunc)	     (gpointer	       cache_data,
+					      GTypeClass      *g_class);
+/**
+ * GTypeInterfaceCheckFunc:
+ * @check_data: data passed to g_type_add_interface_check().
+ * @g_iface: the interface that has been initialized
+ * 
+ * A callback called after an interface vtable is initialized.
+ * See g_type_add_interface_check().
+ * 
+ * Since: 2.4
+ */
+typedef void     (*GTypeInterfaceCheckFunc)  (gpointer	       check_data,
+					      gpointer         g_iface);
+/**
+ * GTypeFundamentalFlags:
+ * @G_TYPE_FLAG_CLASSED: Indicates a classed type.
+ * @G_TYPE_FLAG_INSTANTIATABLE: Indicates an instantiable type (implies classed).
+ * @G_TYPE_FLAG_DERIVABLE: Indicates a flat derivable type.
+ * @G_TYPE_FLAG_DEEP_DERIVABLE: Indicates a deep derivable type (implies derivable).
+ * 
+ * Bit masks used to check or determine specific characteristics of a
+ * fundamental type.
+ */
+typedef enum    /*< skip >*/
+{
+  G_TYPE_FLAG_CLASSED           = (1 << 0),
+  G_TYPE_FLAG_INSTANTIATABLE    = (1 << 1),
+  G_TYPE_FLAG_DERIVABLE         = (1 << 2),
+  G_TYPE_FLAG_DEEP_DERIVABLE    = (1 << 3)
+} GTypeFundamentalFlags;
+/**
+ * GTypeFlags:
+ * @G_TYPE_FLAG_ABSTRACT: Indicates an abstract type. No instances can be
+ *  created for an abstract type.
+ * @G_TYPE_FLAG_VALUE_ABSTRACT: Indicates an abstract value type, i.e. a type
+ *  that introduces a value table, but can't be used for
+ *  g_value_init().
+ * 
+ * Bit masks used to check or determine characteristics of a type.
+ */
+typedef enum    /*< skip >*/
+{
+  G_TYPE_FLAG_ABSTRACT		= (1 << 4),
+  G_TYPE_FLAG_VALUE_ABSTRACT	= (1 << 5)
+} GTypeFlags;
+/**
+ * GTypeInfo:
+ * @class_size: Size of the class structure (required for interface, classed and instantiatable types).
+ * @base_init: Location of the base initialization function (optional).
+ * @base_finalize: Location of the base finalization function (optional).
+ * @class_init: Location of the class initialization function for
+ *  classed and instantiatable types. Location of the default vtable 
+ *  inititalization function for interface types. (optional) This function 
+ *  is used both to fill in virtual functions in the class or default vtable, 
+ *  and to do type-specific setup such as registering signals and object
+ *  properties.
+ * @class_finalize: Location of the class finalization function for
+ *  classed and instantiatable types. Location fo the default vtable 
+ *  finalization function for interface types. (optional)
+ * @class_data: User-supplied data passed to the class init/finalize functions.
+ * @instance_size: Size of the instance (object) structure (required for instantiatable types only).
+ * @n_preallocs: Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the <link linkend="glib-Memory-Slices">slice allocator</link> now.
+ * @instance_init: Location of the instance initialization function (optional, for instantiatable types only).
+ * @value_table: A #GTypeValueTable function table for generic handling of GValues of this type (usually only
+ *  useful for fundamental types).
+ * 
+ * This structure is used to provide the type system with the information
+ * required to initialize and destruct (finalize) a type's class and
+ * its instances.
+ * The initialized structure is passed to the g_type_register_static() function
+ * (or is copied into the provided #GTypeInfo structure in the
+ * g_type_plugin_complete_type_info()). The type system will perform a deep
+ * copy of this structure, so its memory does not need to be persistent
+ * across invocation of g_type_register_static().
+ */
+struct _GTypeInfo
+{
+  /* interface types, classed types, instantiated types */
+  guint16                class_size;
+  
+  GBaseInitFunc          base_init;
+  GBaseFinalizeFunc      base_finalize;
+  
+  /* interface types, classed types, instantiated types */
+  GClassInitFunc         class_init;
+  GClassFinalizeFunc     class_finalize;
+  gconstpointer          class_data;
+  
+  /* instantiated types */
+  guint16                instance_size;
+  guint16                n_preallocs;
+  GInstanceInitFunc      instance_init;
+  
+  /* value handling */
+  const GTypeValueTable	*value_table;
+};
+/**
+ * GTypeFundamentalInfo:
+ * @type_flags: #GTypeFundamentalFlags describing the characteristics of the fundamental type
+ * 
+ * A structure that provides information to the type system which is
+ * used specifically for managing fundamental types.  
+ */
+struct _GTypeFundamentalInfo
+{
+  GTypeFundamentalFlags  type_flags;
+};
+/**
+ * GInterfaceInfo:
+ * @interface_init: location of the interface initialization function
+ * @interface_finalize: location of the interface finalization function
+ * @interface_data: user-supplied data passed to the interface init/finalize functions
+ * 
+ * A structure that provides information to the type system which is
+ * used specifically for managing interface types.
+ */
+struct _GInterfaceInfo
+{
+  GInterfaceInitFunc     interface_init;
+  GInterfaceFinalizeFunc interface_finalize;
+  gpointer               interface_data;
+};
+/**
+ * GTypeValueTable:
+ * @value_init: Default initialize @values contents by poking values
+ *  directly into the value->data array. The data array of
+ *  the #GValue passed into this function was zero-filled
+ *  with <function>memset()</function>, so no care has to
+ *  be taken to free any
+ *  old contents. E.g. for the implementation of a string
+ *  value that may never be %NULL, the implementation might
+ *  look like:
+ *  |[
+ *  value->data[0].v_pointer = g_strdup ("");
+ *  ]|
+ * @value_free: Free any old contents that might be left in the
+ *  data array of the passed in @value. No resources may
+ *  remain allocated through the #GValue contents after
+ *  this function returns. E.g. for our above string type:
+ *  |[
+ *  // only free strings without a specific flag for static storage
+ *  if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
+ *    g_free (value->data[0].v_pointer);
+ *  ]|
+ * @value_copy: @dest_value is a #GValue with zero-filled data section
+ *  and @src_value is a properly setup #GValue of same or
+ *  derived type.
+ *  The purpose of this function is to copy the contents of
+ *  @src_value into @dest_value in a way, that even after
+ *  @src_value has been freed, the contents of @dest_value
+ *  remain valid. String type example:
+ *  |[
+ *  dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer);
+ *  ]|
+ * @value_peek_pointer: If the value contents fit into a pointer, such as objects
+ *  or strings, return this pointer, so the caller can peek at
+ *  the current contents. To extend on our above string example:
+ *  |[
+ *  return value->data[0].v_pointer;
+ *  ]|
+ * @collect_format: A string format describing how to collect the contents of
+ *  this value bit-by-bit. Each character in the format represents
+ *  an argument to be collected, and the characters themselves indicate
+ *  the type of the argument. Currently supported arguments are:
+ *  <variablelist>
+ *  <varlistentry><term /><listitem><para>
+ *  'i' - Integers. passed as collect_values[].v_int.
+ *  </para></listitem></varlistentry>
+ *  <varlistentry><term /><listitem><para>
+ *  'l' - Longs. passed as collect_values[].v_long.
+ *  </para></listitem></varlistentry>
+ *  <varlistentry><term /><listitem><para>
+ *  'd' - Doubles. passed as collect_values[].v_double.
+ *  </para></listitem></varlistentry>
+ *  <varlistentry><term /><listitem><para>
+ *  'p' - Pointers. passed as collect_values[].v_pointer.
+ *  </para></listitem></varlistentry>
+ *  </variablelist>
+ *  It should be noted that for variable argument list construction,
+ *  ANSI C promotes every type smaller than an integer to an int, and
+ *  floats to doubles. So for collection of short int or char, 'i'
+ *  needs to be used, and for collection of floats 'd'.
+ * @collect_value: The collect_value() function is responsible for converting the
+ *  values collected from a variable argument list into contents
+ *  suitable for storage in a GValue. This function should setup
+ *  @value similar to value_init(); e.g. for a string value that
+ *  does not allow %NULL pointers, it needs to either spew an error,
+ *  or do an implicit conversion by storing an empty string.
+ *  The @value passed in to this function has a zero-filled data
+ *  array, so just like for value_init() it is guaranteed to not
+ *  contain any old contents that might need freeing.
+ *  @n_collect_values is exactly the string length of @collect_format,
+ *  and @collect_values is an array of unions #GTypeCValue with
+ *  length @n_collect_values, containing the collected values
+ *  according to @collect_format.
+ *  @collect_flags is an argument provided as a hint by the caller.
+ *  It may contain the flag %G_VALUE_NOCOPY_CONTENTS indicating,
+ *  that the collected value contents may be considered "static"
+ *  for the duration of the @value lifetime.
+ *  Thus an extra copy of the contents stored in @collect_values is
+ *  not required for assignment to @value.
+ *  For our above string example, we continue with:
+ *  |[
+ *  if (!collect_values[0].v_pointer)
+ *    value->data[0].v_pointer = g_strdup ("");
+ *  else if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
+ *  {
+ *    value->data[0].v_pointer = collect_values[0].v_pointer;
+ *    // keep a flag for the value_free() implementation to not free this string
+ *    value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS;
+ *  }
+ *  else
+ *    value->data[0].v_pointer = g_strdup (collect_values[0].v_pointer);
+ *  return NULL;
+ *  ]|
+ *  It should be noted, that it is generally a bad idea to follow the
+ *  #G_VALUE_NOCOPY_CONTENTS hint for reference counted types. Due to
+ *  reentrancy requirements and reference count assertions performed
+ *  by the signal emission code, reference counts should always be
+ *  incremented for reference counted contents stored in the value->data
+ *  array.  To deviate from our string example for a moment, and taking
+ *  a look at an exemplary implementation for collect_value() of
+ *  #GObject:
+ *  |[
+ *  if (collect_values[0].v_pointer)
+ *  {
+ *    GObject *object = G_OBJECT (collect_values[0].v_pointer);
+ *    // never honour G_VALUE_NOCOPY_CONTENTS for ref-counted types
+ *    value->data[0].v_pointer = g_object_ref (object);
+ *    return NULL;
+ *  }
+ *  else
+ *    return g_strdup_printf ("Object passed as invalid NULL pointer");
+ *  }
+ *  ]|
+ *  The reference count for valid objects is always incremented,
+ *  regardless of @collect_flags. For invalid objects, the example
+ *  returns a newly allocated string without altering @value.
+ *  Upon success, collect_value() needs to return %NULL. If, however,
+ *  an error condition occurred, collect_value() may spew an
+ *  error by returning a newly allocated non-%NULL string, giving
+ *  a suitable description of the error condition.
+ *  The calling code makes no assumptions about the @value
+ *  contents being valid upon error returns, @value
+ *  is simply thrown away without further freeing. As such, it is
+ *  a good idea to not allocate #GValue contents, prior to returning
+ *  an error, however, collect_values() is not obliged to return
+ *  a correctly setup @value for error returns, simply because
+ *  any non-%NULL return is considered a fatal condition so further
+ *  program behaviour is undefined.
+ * @lcopy_format: Format description of the arguments to collect for @lcopy_value,
+ *  analogous to @collect_format. Usually, @lcopy_format string consists
+ *  only of 'p's to provide lcopy_value() with pointers to storage locations.
+ * @lcopy_value: This function is responsible for storing the @value contents into
+ *  arguments passed through a variable argument list which got
+ *  collected into @collect_values according to @lcopy_format.
+ *  @n_collect_values equals the string length of @lcopy_format,
+ *  and @collect_flags may contain %G_VALUE_NOCOPY_CONTENTS.
+ *  In contrast to collect_value(), lcopy_value() is obliged to
+ *  always properly support %G_VALUE_NOCOPY_CONTENTS.
+ *  Similar to collect_value() the function may prematurely abort
+ *  by returning a newly allocated string describing an error condition.
+ *  To complete the string example:
+ *  |[
+ *  gchar **string_p = collect_values[0].v_pointer;
+ *  if (!string_p)
+ *    return g_strdup_printf ("string location passed as NULL");
+ *  if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
+ *    *string_p = value->data[0].v_pointer;
+ *  else
+ *    *string_p = g_strdup (value->data[0].v_pointer);
+ *  ]|
+ *  And an illustrative version of lcopy_value() for
+ *  reference-counted types:
+ *  |[
+ *  GObject **object_p = collect_values[0].v_pointer;
+ *  if (!object_p)
+ *    return g_strdup_printf ("object location passed as NULL");
+ *  if (!value->data[0].v_pointer)
+ *    *object_p = NULL;
+ *  else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) /&ast; always honour &ast;/
+ *    *object_p = value->data[0].v_pointer;
+ *  else
+ *    *object_p = g_object_ref (value->data[0].v_pointer);
+ *  return NULL;
+ *  ]|
+ * 
+ * The #GTypeValueTable provides the functions required by the #GValue implementation,
+ * to serve as a container for values of a type.
+ */
+
+struct _GTypeValueTable
+{
+  void     (*value_init)         (GValue       *value);
+  void     (*value_free)         (GValue       *value);
+  void     (*value_copy)         (const GValue *src_value,
+				  GValue       *dest_value);
+  /* varargs functionality (optional) */
+  gpointer (*value_peek_pointer) (const GValue *value);
+  const gchar *collect_format;
+  gchar*   (*collect_value)      (GValue       *value,
+				  guint         n_collect_values,
+				  GTypeCValue  *collect_values,
+				  guint		collect_flags);
+  const gchar *lcopy_format;
+  gchar*   (*lcopy_value)        (const GValue *value,
+				  guint         n_collect_values,
+				  GTypeCValue  *collect_values,
+				  guint		collect_flags);
+};
+GLIB_AVAILABLE_IN_ALL
+GType g_type_register_static		(GType			     parent_type,
+					 const gchar		    *type_name,
+					 const GTypeInfo	    *info,
+					 GTypeFlags		     flags);
+GLIB_AVAILABLE_IN_ALL
+GType g_type_register_static_simple     (GType                       parent_type,
+					 const gchar                *type_name,
+					 guint                       class_size,
+					 GClassInitFunc              class_init,
+					 guint                       instance_size,
+					 GInstanceInitFunc           instance_init,
+					 GTypeFlags	             flags);
+  
+GLIB_AVAILABLE_IN_ALL
+GType g_type_register_dynamic		(GType			     parent_type,
+					 const gchar		    *type_name,
+					 GTypePlugin		    *plugin,
+					 GTypeFlags		     flags);
+GLIB_AVAILABLE_IN_ALL
+GType g_type_register_fundamental	(GType			     type_id,
+					 const gchar		    *type_name,
+					 const GTypeInfo	    *info,
+					 const GTypeFundamentalInfo *finfo,
+					 GTypeFlags		     flags);
+GLIB_AVAILABLE_IN_ALL
+void  g_type_add_interface_static	(GType			     instance_type,
+					 GType			     interface_type,
+					 const GInterfaceInfo	    *info);
+GLIB_AVAILABLE_IN_ALL
+void  g_type_add_interface_dynamic	(GType			     instance_type,
+					 GType			     interface_type,
+					 GTypePlugin		    *plugin);
+GLIB_AVAILABLE_IN_ALL
+void  g_type_interface_add_prerequisite (GType			     interface_type,
+					 GType			     prerequisite_type);
+GLIB_AVAILABLE_IN_ALL
+GType*g_type_interface_prerequisites    (GType                       interface_type,
+					 guint                      *n_prerequisites);
+GLIB_AVAILABLE_IN_ALL
+void     g_type_class_add_private       (gpointer                    g_class,
+                                         gsize                       private_size);
+GLIB_AVAILABLE_IN_2_38
+gint     g_type_add_instance_private    (GType                       class_type,
+                                         gsize                       private_size);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_type_instance_get_private    (GTypeInstance              *instance,
+                                         GType                       private_type);
+GLIB_AVAILABLE_IN_2_38
+void     g_type_class_adjust_private_offset (gpointer                g_class,
+                                             gint                   *private_size_or_offset);
+
+GLIB_AVAILABLE_IN_ALL
+void      g_type_add_class_private      (GType    		     class_type,
+					 gsize    		     private_size);
+GLIB_AVAILABLE_IN_ALL
+gpointer  g_type_class_get_private      (GTypeClass 		    *klass,
+					 GType			     private_type);
+GLIB_AVAILABLE_IN_2_38
+gint      g_type_class_get_instance_private_offset (gpointer         g_class);
+
+GLIB_AVAILABLE_IN_2_34
+void      g_type_ensure                 (GType                       type);
+GLIB_AVAILABLE_IN_2_36
+guint     g_type_get_type_registration_serial (void);
+
+
+/* --- GType boilerplate --- */
+/**
+ * G_DEFINE_TYPE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words 
+ *  separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * 
+ * A convenience macro for type implementations, which declares a 
+ * class initialization function, an instance initialization function (see #GTypeInfo for information about 
+ * these) and a static variable named @t_n<!-- -->_parent_class pointing to the parent class. Furthermore, it defines 
+ * a *_get_type() function. See G_DEFINE_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.4
+ */
+#define G_DEFINE_TYPE(TN, t_n, T_P)			    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
+/**
+ * G_DEFINE_TYPE_WITH_CODE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type in lowercase, with words separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * @_C_: Custom code that gets inserted in the *_get_type() function.
+ * 
+ * A convenience macro for type implementations.  
+ * Similar to G_DEFINE_TYPE(), but allows you to insert custom code into the 
+ * *_get_type() function, e.g. interface implementations via G_IMPLEMENT_INTERFACE().
+ * See G_DEFINE_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.4
+ */
+#define G_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
+/**
+ * G_DEFINE_TYPE_WITH_PRIVATE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words 
+ *  separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * 
+ * A convenience macro for type implementations, which declares a 
+ * class initialization function, an instance initialization function (see #GTypeInfo for information about 
+ * these), a static variable named @t_n<!-- -->_parent_class pointing to the parent class, and adds private
+ * instance data to the type. Furthermore, it defines a *_get_type() function. See G_DEFINE_TYPE_EXTENDED()
+ * for an example.
+ * 
+ * Since: 2.38
+ */
+#define G_DEFINE_TYPE_WITH_PRIVATE(TN, t_n, T_P)            G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, G_ADD_PRIVATE (TN))
+/**
+ * G_DEFINE_ABSTRACT_TYPE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words 
+ *  separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * 
+ * A convenience macro for type implementations. 
+ * Similar to G_DEFINE_TYPE(), but defines an abstract type. 
+ * See G_DEFINE_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.4
+ */
+#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P)		    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
+/**
+ * G_DEFINE_ABSTRACT_TYPE_WITH_CODE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words 
+ *  separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * @_C_: Custom code that gets inserted in the @type_name_get_type() function.
+ * 
+ * A convenience macro for type implementations.
+ * Similar to G_DEFINE_TYPE_WITH_CODE(), but defines an abstract type and allows you to 
+ * insert custom code into the *_get_type() function, e.g. interface implementations 
+ * via G_IMPLEMENT_INTERFACE(). See G_DEFINE_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.4
+ */
+#define G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
+/**
+ * G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words 
+ *  separated by '_'.
+ *
+ * @T_P: The #GType of the parent type.
+ * Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines an abstract type. 
+ * See G_DEFINE_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.4
+ */
+#define G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(TN, t_n, T_P)   G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, G_ADD_PRIVATE (TN))
+/**
+ * G_DEFINE_TYPE_EXTENDED:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words
+ *    separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * @_f_: #GTypeFlags to pass to g_type_register_static()
+ * @_C_: Custom code that gets inserted in the *_get_type() function.
+ *
+ * The most general convenience macro for type implementations, on which
+ * G_DEFINE_TYPE(), etc are based.
+ *
+ * |[
+ * G_DEFINE_TYPE_EXTENDED (GtkGadget,
+ *                         gtk_gadget,
+ *                         GTK_TYPE_WIDGET,
+ *                         0,
+ *                         G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
+ *                                                gtk_gadget_gizmo_init));
+ * ]|
+ * expands to
+ * |[
+ * static void     gtk_gadget_init       (GtkGadget      *self);
+ * static void     gtk_gadget_class_init (GtkGadgetClass *klass);
+ * static gpointer gtk_gadget_parent_class = NULL;
+ * static void     gtk_gadget_class_intern_init (gpointer klass)
+ * {
+ *   gtk_gadget_parent_class = g_type_class_peek_parent (klass);
+ *   gtk_gadget_class_init ((GtkGadgetClass*) klass);
+ * }
+ *
+ * GType
+ * gtk_gadget_get_type (void)
+ * {
+ *   static volatile gsize g_define_type_id__volatile = 0;
+ *   if (g_once_init_enter (&g_define_type_id__volatile))
+ *     {
+ *       GType g_define_type_id =
+ *         g_type_register_static_simple (GTK_TYPE_WIDGET,
+ *                                        g_intern_static_string ("GtkGadget"),
+ *                                        sizeof (GtkGadgetClass),
+ *                                        (GClassInitFunc) gtk_gadget_class_intern_init,
+ *                                        sizeof (GtkGadget),
+ *                                        (GInstanceInitFunc) gtk_gadget_init,
+ *                                        0);
+ *       {
+ *         const GInterfaceInfo g_implement_interface_info = {
+ *           (GInterfaceInitFunc) gtk_gadget_gizmo_init
+ *         };
+ *         g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
+ *       }
+ *       g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
+ *     }
+ *   return g_define_type_id__volatile;
+ * }
+ * ]|
+ * The only pieces which have to be manually provided are the definitions of
+ * the instance and class structure and the definitions of the instance and
+ * class init functions.
+ *
+ * Since: 2.4
+ */
+#define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)	    _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
+
+/**
+ * G_DEFINE_INTERFACE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words separated by '_'.
+ * @T_P: The #GType of the prerequisite type for the interface, or 0
+ * (%G_TYPE_INVALID) for no prerequisite type.
+ *
+ * A convenience macro for #GTypeInterface definitions, which declares
+ * a default vtable initialization function and defines a *_get_type()
+ * function.
+ *
+ * The macro expects the interface initialization function to have the
+ * name <literal>t_n ## _default_init</literal>, and the interface
+ * structure to have the name <literal>TN ## Interface</literal>.
+ *
+ * Since: 2.24
+ */
+#define G_DEFINE_INTERFACE(TN, t_n, T_P)		    G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, ;)
+
+/**
+ * G_DEFINE_INTERFACE_WITH_CODE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words separated by '_'.
+ * @T_P: The #GType of the prerequisite type for the interface, or 0
+ * (%G_TYPE_INVALID) for no prerequisite type.
+ * @_C_: Custom code that gets inserted in the *_get_type() function.
+ *
+ * A convenience macro for #GTypeInterface definitions. Similar to
+ * G_DEFINE_INTERFACE(), but allows you to insert custom code into the
+ * *_get_type() function, e.g. additional interface implementations
+ * via G_IMPLEMENT_INTERFACE(), or additional prerequisite types. See
+ * G_DEFINE_TYPE_EXTENDED() for a similar example using
+ * G_DEFINE_TYPE_WITH_CODE().
+ *
+ * Since: 2.24
+ */
+#define G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, _C_)     _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TN, t_n, T_P) {_C_;} _G_DEFINE_INTERFACE_EXTENDED_END()
+
+/**
+ * G_IMPLEMENT_INTERFACE:
+ * @TYPE_IFACE: The #GType of the interface to add
+ * @iface_init: The interface init function
+ *
+ * A convenience macro to ease interface addition in the @_C_ section
+ * of G_DEFINE_TYPE_WITH_CODE() or G_DEFINE_ABSTRACT_TYPE_WITH_CODE().
+ * See G_DEFINE_TYPE_EXTENDED() for an example.
+ *
+ * Note that this macro can only be used together with the G_DEFINE_TYPE_*
+ * macros, since it depends on variable names from those macros.
+ *
+ * Since: 2.4
+ */
+#define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)       { \
+  const GInterfaceInfo g_implement_interface_info = { \
+    (GInterfaceInitFunc) iface_init, NULL, NULL \
+  }; \
+  g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
+}
+
+/**
+ * G_ADD_PRIVATE:
+ * @TypeName: the name of the type in CamelCase
+ *
+ * A convenience macro to ease adding private data to instances of a new type
+ * in the @_C_ section of G_DEFINE_TYPE_WITH_CODE() or
+ * G_DEFINE_ABSTRACT_TYPE_WITH_CODE().
+ *
+ * For instance:
+ *
+ * |[
+ *   typedef struct _MyObject MyObject;
+ *   typedef struct _MyObjectClass MyObjectClass;
+ *
+ *   typedef struct {
+ *     gint foo;
+ *     gint bar;
+ *   } MyObjectPrivate;
+ *
+ *   G_DEFINE_TYPE_WITH_CODE (MyObject, my_object, G_TYPE_OBJECT,
+ *                            G_ADD_PRIVATE (MyObject))
+ * ]|
+ *
+ * Will add MyObjectPrivate as the private data to any instance of the MyObject
+ * type.
+ *
+ * G_DEFINE_TYPE_* macros will automatically create a private function
+ * based on the arguments to this macro, which can be used to safely
+ * retrieve the private data from an instance of the type; for instance:
+ *
+ * |[
+ *   gint
+ *   my_object_get_foo (MyObject *obj)
+ *   {
+ *     MyObjectPrivate *priv = my_object_get_instance_private (obj);
+ *
+ *     return priv->foo;
+ *   }
+ *
+ *   void
+ *   my_object_set_bar (MyObject *obj,
+ *                      gint      bar)
+ *   {
+ *     MyObjectPrivate *priv = my_object_get_instance_private (obj);
+ *
+ *     if (priv->bar != bar)
+ *       priv->bar = bar;
+ *   }
+ * ]|
+ *
+ * Note that this macro can only be used together with the G_DEFINE_TYPE_*
+ * macros, since it depends on variable names from those macros.
+ *
+ * Since: 2.38
+ */
+#define G_ADD_PRIVATE(TypeName) { \
+  TypeName##_private_offset = \
+    g_type_add_instance_private (g_define_type_id, sizeof (TypeName##Private)); \
+}
+
+/**
+ * G_PRIVATE_OFFSET:
+ * @TypeName: the name of the type in CamelCase
+ * @field: the name of the field in the private data structure
+ *
+ * Evaluates to the offset of the @field inside the instance private data
+ * structure for @TypeName.
+ *
+ * Note that this macro can only be used together with the G_DEFINE_TYPE_*
+ * and G_ADD_PRIVATE() macros, since it depends on variable names from
+ * those macros.
+ *
+ * Since: 2.38
+ */
+#define G_PRIVATE_OFFSET(TypeName, field) \
+  (TypeName##_private_offset + (G_STRUCT_OFFSET (TypeName##Private, field)))
+
+/**
+ * G_PRIVATE_FIELD_P:
+ * @TypeName: the name of the type in CamelCase
+ * @inst: the instance of @TypeName you wish to access
+ * @field_name: the name of the field in the private data structure
+ *
+ * Evaluates to a pointer to the @field_name inside the @inst private data
+ * structure for @TypeName.
+ *
+ * Note that this macro can only be used together with the G_DEFINE_TYPE_*
+ * and G_ADD_PRIVATE() macros, since it depends on variable names from
+ * those macros.
+ *
+ * Since: 2.38
+ */
+#define G_PRIVATE_FIELD_P(TypeName, inst, field_name) \
+  G_STRUCT_MEMBER_P (inst, G_PRIVATE_OFFSET (TypeName, field_name))
+
+/**
+ * G_PRIVATE_FIELD:
+ * @TypeName: the name of the type in CamelCase
+ * @inst: the instance of @TypeName you wish to access
+ * @field_type: the type of the field in the private data structure
+ * @field_name: the name of the field in the private data structure
+ *
+ * Evaluates to the @field_name inside the @inst private data
+ * structure for @TypeName.
+ *
+ * Note that this macro can only be used together with the G_DEFINE_TYPE_*
+ * and G_ADD_PRIVATE() macros, since it depends on variable names from
+ * those macros.
+ *
+ * Since: 2.38
+ */
+#define G_PRIVATE_FIELD(TypeName, inst, field_type, field_name) \
+  G_STRUCT_MEMBER (field_type, inst, G_PRIVATE_OFFSET (TypeName, field_name))
+
+#define _G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \
+\
+static void     type_name##_init              (TypeName        *self); \
+static void     type_name##_class_init        (TypeName##Class *klass); \
+static gpointer type_name##_parent_class = NULL; \
+static gint     TypeName##_private_offset; \
+static void     type_name##_class_intern_init (gpointer klass) \
+{ \
+  type_name##_parent_class = g_type_class_peek_parent (klass); \
+  if (TypeName##_private_offset != 0) \
+    g_type_class_adjust_private_offset (klass, &TypeName##_private_offset); \
+  type_name##_class_init ((TypeName##Class*) klass); \
+} \
+\
+static inline gpointer \
+type_name##_get_instance_private (TypeName *self) \
+{ \
+  return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \
+} \
+\
+GType \
+type_name##_get_type (void) \
+{ \
+  static volatile gsize g_define_type_id__volatile = 0; \
+  if (g_once_init_enter (&g_define_type_id__volatile))  \
+    { \
+      GType g_define_type_id = \
+        g_type_register_static_simple (TYPE_PARENT, \
+                                       g_intern_static_string (#TypeName), \
+                                       sizeof (TypeName##Class), \
+                                       (GClassInitFunc) type_name##_class_intern_init, \
+                                       sizeof (TypeName), \
+                                       (GInstanceInitFunc) type_name##_init, \
+                                       (GTypeFlags) flags); \
+      { /* custom code follows */
+#define _G_DEFINE_TYPE_EXTENDED_END()	\
+        /* following custom code */	\
+      }					\
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
+    }					\
+  return g_define_type_id__volatile;	\
+} /* closes type_name##_get_type() */
+
+#define _G_DEFINE_INTERFACE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PREREQ) \
+\
+static void     type_name##_default_init        (TypeName##Interface *klass); \
+\
+GType \
+type_name##_get_type (void) \
+{ \
+  static volatile gsize g_define_type_id__volatile = 0; \
+  if (g_once_init_enter (&g_define_type_id__volatile))  \
+    { \
+      GType g_define_type_id = \
+        g_type_register_static_simple (G_TYPE_INTERFACE, \
+                                       g_intern_static_string (#TypeName), \
+                                       sizeof (TypeName##Interface), \
+                                       (GClassInitFunc)type_name##_default_init, \
+                                       0, \
+                                       (GInstanceInitFunc)NULL, \
+                                       (GTypeFlags) 0); \
+      if (TYPE_PREREQ) \
+        g_type_interface_add_prerequisite (g_define_type_id, TYPE_PREREQ); \
+      { /* custom code follows */
+#define _G_DEFINE_INTERFACE_EXTENDED_END()	\
+        /* following custom code */		\
+      }						\
+      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
+    }						\
+  return g_define_type_id__volatile;			\
+} /* closes type_name##_get_type() */
+
+/**
+ * G_DEFINE_BOXED_TYPE:
+ * @TypeName: The name of the new type, in Camel case.
+ * @type_name: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ * @copy_func: the #GBoxedCopyFunc for the new type
+ * @free_func: the #GBoxedFreeFunc for the new type
+ *
+ * A convenience macro for boxed type implementations, which defines a
+ * type_name_get_type() function registering the boxed type.
+ *
+ * Since: 2.26
+ */
+#define G_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) G_DEFINE_BOXED_TYPE_WITH_CODE (TypeName, type_name, copy_func, free_func, {})
+/**
+ * G_DEFINE_BOXED_TYPE_WITH_CODE:
+ * @TypeName: The name of the new type, in Camel case.
+ * @type_name: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ * @copy_func: the #GBoxedCopyFunc for the new type
+ * @free_func: the #GBoxedFreeFunc for the new type
+ * @_C_: Custom code that gets inserted in the *_get_type() function.
+ *
+ * A convenience macro for boxed type implementations.
+ * Similar to G_DEFINE_BOXED_TYPE(), but allows to insert custom code into the
+ * type_name_get_type() function, e.g. to register value transformations with
+ * g_value_register_transform_func().
+ *
+ * Since: 2.26
+ */
+#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
+
+#if !defined (__cplusplus) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
+#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
+GType \
+type_name##_get_type (void) \
+{ \
+  static volatile gsize g_define_type_id__volatile = 0; \
+  if (g_once_init_enter (&g_define_type_id__volatile))  \
+    { \
+      GType (* _g_register_boxed) \
+        (const gchar *, \
+         union \
+           { \
+             TypeName * (*do_copy_type) (TypeName *); \
+             TypeName * (*do_const_copy_type) (const TypeName *); \
+             GBoxedCopyFunc do_copy_boxed; \
+           } __attribute__((__transparent_union__)), \
+         union \
+           { \
+             void (* do_free_type) (TypeName *); \
+             GBoxedFreeFunc do_free_boxed; \
+           } __attribute__((__transparent_union__)) \
+        ) = g_boxed_type_register_static; \
+      GType g_define_type_id = \
+        _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \
+      { /* custom code follows */
+#else
+#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
+GType \
+type_name##_get_type (void) \
+{ \
+  static volatile gsize g_define_type_id__volatile = 0; \
+  if (g_once_init_enter (&g_define_type_id__volatile))  \
+    { \
+      GType g_define_type_id = \
+        g_boxed_type_register_static (g_intern_static_string (#TypeName), \
+                                      (GBoxedCopyFunc) copy_func, \
+                                      (GBoxedFreeFunc) free_func); \
+      { /* custom code follows */
+#endif /* __GNUC__ */
+
+/**
+ * G_DEFINE_POINTER_TYPE:
+ * @TypeName: The name of the new type, in Camel case.
+ * @type_name: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ *
+ * A convenience macro for pointer type implementations, which defines a
+ * type_name_get_type() function registering the pointer type.
+ *
+ * Since: 2.26
+ */
+#define G_DEFINE_POINTER_TYPE(TypeName, type_name) G_DEFINE_POINTER_TYPE_WITH_CODE (TypeName, type_name, {})
+/**
+ * G_DEFINE_POINTER_TYPE_WITH_CODE:
+ * @TypeName: The name of the new type, in Camel case.
+ * @type_name: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ * @_C_: Custom code that gets inserted in the *_get_type() function.
+ *
+ * A convenience macro for pointer type implementations.
+ * Similar to G_DEFINE_POINTER_TYPE(), but allows to insert custom code into the
+ * type_name_get_type() function.
+ *
+ * Since: 2.26
+ */
+#define G_DEFINE_POINTER_TYPE_WITH_CODE(TypeName, type_name, _C_) _G_DEFINE_POINTER_TYPE_BEGIN (TypeName, type_name) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
+
+#define _G_DEFINE_POINTER_TYPE_BEGIN(TypeName, type_name) \
+GType \
+type_name##_get_type (void) \
+{ \
+  static volatile gsize g_define_type_id__volatile = 0; \
+  if (g_once_init_enter (&g_define_type_id__volatile))  \
+    { \
+      GType g_define_type_id = \
+        g_pointer_type_register_static (g_intern_static_string (#TypeName)); \
+      { /* custom code follows */
+
+/* --- protected (for fundamental type implementations) --- */
+GLIB_AVAILABLE_IN_ALL
+GTypePlugin*	 g_type_get_plugin		(GType		     type);
+GLIB_AVAILABLE_IN_ALL
+GTypePlugin*	 g_type_interface_get_plugin	(GType		     instance_type,
+						 GType               interface_type);
+GLIB_AVAILABLE_IN_ALL
+GType		 g_type_fundamental_next	(void);
+GLIB_AVAILABLE_IN_ALL
+GType		 g_type_fundamental		(GType		     type_id);
+GLIB_AVAILABLE_IN_ALL
+GTypeInstance*   g_type_create_instance         (GType               type);
+GLIB_AVAILABLE_IN_ALL
+void             g_type_free_instance           (GTypeInstance      *instance);
+
+GLIB_AVAILABLE_IN_ALL
+void		 g_type_add_class_cache_func    (gpointer	     cache_data,
+						 GTypeClassCacheFunc cache_func);
+GLIB_AVAILABLE_IN_ALL
+void		 g_type_remove_class_cache_func (gpointer	     cache_data,
+						 GTypeClassCacheFunc cache_func);
+GLIB_AVAILABLE_IN_ALL
+void             g_type_class_unref_uncached    (gpointer            g_class);
+
+GLIB_AVAILABLE_IN_ALL
+void             g_type_add_interface_check     (gpointer	         check_data,
+						 GTypeInterfaceCheckFunc check_func);
+GLIB_AVAILABLE_IN_ALL
+void             g_type_remove_interface_check  (gpointer	         check_data,
+						 GTypeInterfaceCheckFunc check_func);
+
+GLIB_AVAILABLE_IN_ALL
+GTypeValueTable* g_type_value_table_peek        (GType		     type);
+
+
+/*< private >*/
+GLIB_AVAILABLE_IN_ALL
+gboolean	 g_type_check_instance          (GTypeInstance      *instance) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
+GTypeInstance*   g_type_check_instance_cast     (GTypeInstance      *instance,
+						 GType               iface_type);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_type_check_instance_is_a	(GTypeInstance      *instance,
+						 GType               iface_type) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
+GTypeClass*      g_type_check_class_cast        (GTypeClass         *g_class,
+						 GType               is_a_type);
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_type_check_class_is_a        (GTypeClass         *g_class,
+						 GType               is_a_type) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
+gboolean	 g_type_check_is_value_type     (GType		     type) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+gboolean	 g_type_check_value             (GValue		    *value) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
+gboolean	 g_type_check_value_holds	(GValue		    *value,
+						 GType		     type) G_GNUC_PURE;
+GLIB_AVAILABLE_IN_ALL
+gboolean         g_type_test_flags              (GType               type,
+						 guint               flags) G_GNUC_CONST;
+
+
+/* --- debugging functions --- */
+GLIB_AVAILABLE_IN_ALL
+const gchar *    g_type_name_from_instance      (GTypeInstance	*instance);
+GLIB_AVAILABLE_IN_ALL
+const gchar *    g_type_name_from_class         (GTypeClass	*g_class);
+
+
+/* --- implementation bits --- */
+#ifndef G_DISABLE_CAST_CHECKS
+#  define _G_TYPE_CIC(ip, gt, ct) \
+    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
+#  define _G_TYPE_CCC(cp, gt, ct) \
+    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
+#else /* G_DISABLE_CAST_CHECKS */
+#  define _G_TYPE_CIC(ip, gt, ct)       ((ct*) ip)
+#  define _G_TYPE_CCC(cp, gt, ct)       ((ct*) cp)
+#endif /* G_DISABLE_CAST_CHECKS */
+#define _G_TYPE_CHI(ip)			(g_type_check_instance ((GTypeInstance*) ip))
+#define _G_TYPE_CHV(vl)			(g_type_check_value ((GValue*) vl))
+#define _G_TYPE_IGC(ip, gt, ct)         ((ct*) (((GTypeInstance*) ip)->g_class))
+#define _G_TYPE_IGI(ip, gt, ct)         ((ct*) g_type_interface_peek (((GTypeInstance*) ip)->g_class, gt))
+#ifdef	__GNUC__
+#  define _G_TYPE_CIT(ip, gt)             (G_GNUC_EXTENSION ({ \
+  GTypeInstance *__inst = (GTypeInstance*) ip; GType __t = gt; gboolean __r; \
+  if (!__inst) \
+    __r = FALSE; \
+  else if (__inst->g_class && __inst->g_class->g_type == __t) \
+    __r = TRUE; \
+  else \
+    __r = g_type_check_instance_is_a (__inst, __t); \
+  __r; \
+}))
+#  define _G_TYPE_CCT(cp, gt)             (G_GNUC_EXTENSION ({ \
+  GTypeClass *__class = (GTypeClass*) cp; GType __t = gt; gboolean __r; \
+  if (!__class) \
+    __r = FALSE; \
+  else if (__class->g_type == __t) \
+    __r = TRUE; \
+  else \
+    __r = g_type_check_class_is_a (__class, __t); \
+  __r; \
+}))
+#  define _G_TYPE_CVH(vl, gt)             (G_GNUC_EXTENSION ({ \
+  GValue *__val = (GValue*) vl; GType __t = gt; gboolean __r; \
+  if (!__val) \
+    __r = FALSE; \
+  else if (__val->g_type == __t)		\
+    __r = TRUE; \
+  else \
+    __r = g_type_check_value_holds (__val, __t); \
+  __r; \
+}))
+#else  /* !__GNUC__ */
+#  define _G_TYPE_CIT(ip, gt)             (g_type_check_instance_is_a ((GTypeInstance*) ip, gt))
+#  define _G_TYPE_CCT(cp, gt)             (g_type_check_class_is_a ((GTypeClass*) cp, gt))
+#  define _G_TYPE_CVH(vl, gt)             (g_type_check_value_holds ((GValue*) vl, gt))
+#endif /* !__GNUC__ */
+/**
+ * G_TYPE_FLAG_RESERVED_ID_BIT:
+ * 
+ * A bit in the type number that's supposed to be left untouched.
+ */
+#define	G_TYPE_FLAG_RESERVED_ID_BIT	((GType) (1 << 0))
+extern GTypeDebugFlags			_g_type_debug_flags;
+
+G_END_DECLS
+
+#endif /* __G_TYPE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gtypemodule.h b/dist/usr/include/glib-2.0/gobject/gtypemodule.h
new file mode 100644
index 0000000..cc42bdd
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gtypemodule.h
@@ -0,0 +1,271 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000 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_TYPE_MODULE_H__
+#define __G_TYPE_MODULE_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <gobject/gobject.h>
+#include <gobject/genums.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GTypeModule      GTypeModule;
+typedef struct _GTypeModuleClass GTypeModuleClass;
+
+#define G_TYPE_TYPE_MODULE              (g_type_module_get_type ())
+#define G_TYPE_MODULE(module)           (G_TYPE_CHECK_INSTANCE_CAST ((module), G_TYPE_TYPE_MODULE, GTypeModule))
+#define G_TYPE_MODULE_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_TYPE_MODULE, GTypeModuleClass))
+#define G_IS_TYPE_MODULE(module)        (G_TYPE_CHECK_INSTANCE_TYPE ((module), G_TYPE_TYPE_MODULE))
+#define G_IS_TYPE_MODULE_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_TYPE_MODULE))
+#define G_TYPE_MODULE_GET_CLASS(module) (G_TYPE_INSTANCE_GET_CLASS ((module), G_TYPE_TYPE_MODULE, GTypeModuleClass))
+
+/**
+ * GTypeModule:
+ * @name: the name of the module
+ * 
+ * The members of the <structname>GTypeModule</structname> structure should not 
+ * be accessed directly, except for the @name field.
+ */
+struct _GTypeModule 
+{
+  GObject parent_instance;
+
+  guint use_count;
+  GSList *type_infos;
+  GSList *interface_infos;
+
+  /*< public >*/
+  gchar *name;
+};
+
+/**
+ * GTypeModuleClass:
+ * @parent_class: the parent class
+ * @load: loads the module and registers one or more types using
+ *  g_type_module_register_type().
+ * @unload: unloads the module
+ * 
+ * In order to implement dynamic loading of types based on #GTypeModule, 
+ * the @load and @unload functions in #GTypeModuleClass must be implemented.
+ */
+struct _GTypeModuleClass
+{
+  GObjectClass parent_class;
+
+  /*< public >*/
+  gboolean (* load)   (GTypeModule *module);
+  void     (* unload) (GTypeModule *module);
+
+  /*< private >*/
+  /* Padding for future expansion */
+  void (*reserved1) (void);
+  void (*reserved2) (void);
+  void (*reserved3) (void);
+  void (*reserved4) (void);
+};
+
+/**
+ * G_DEFINE_DYNAMIC_TYPE:
+ * @TN: The name of the new type, in Camel case.
+ * @t_n: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ * @T_P: The #GType of the parent type.
+ * 
+ * A convenience macro for dynamic type implementations, which declares a
+ * class initialization function, an instance initialization function (see 
+ * #GTypeInfo for information about these) and a static variable named 
+ * @t_n<!-- -->_parent_class pointing to the parent class. Furthermore, 
+ * it defines a <function>*_get_type()</function> and a static 
+ * <function>*_register_type()</function> function for use in your
+ * <function>module_init()</function>.
+ * See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.
+ * 
+ * Since: 2.14
+ */
+#define G_DEFINE_DYNAMIC_TYPE(TN, t_n, T_P)          G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
+/**
+ * G_DEFINE_DYNAMIC_TYPE_EXTENDED:
+ * @TypeName: The name of the new type, in Camel case.
+ * @type_name: The name of the new type, in lowercase, with words
+ *  separated by '_'.
+ * @TYPE_PARENT: The #GType of the parent type.
+ * @flags: #GTypeFlags to pass to g_type_module_register_type()
+ * @CODE: Custom code that gets inserted in the *_get_type() function.
+ * 
+ * A more general version of G_DEFINE_DYNAMIC_TYPE() which
+ * allows to specify #GTypeFlags and custom code.
+ * 
+ * |[
+ * G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget,
+ *                                 gtk_gadget,
+ *                                 GTK_TYPE_THING,
+ *                                 0,
+ *                                 G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO,
+ *                                                                gtk_gadget_gizmo_init));
+ * ]|
+ * expands to
+ * |[
+ * static void     gtk_gadget_init              (GtkGadget      *self);
+ * static void     gtk_gadget_class_init        (GtkGadgetClass *klass);
+ * static void     gtk_gadget_class_finalize    (GtkGadgetClass *klass);
+ * 
+ * static gpointer gtk_gadget_parent_class = NULL;
+ * static GType    gtk_gadget_type_id = 0;
+ * 
+ * static void     gtk_gadget_class_intern_init (gpointer klass)
+ * {
+ *   gtk_gadget_parent_class = g_type_class_peek_parent (klass); 
+ *   gtk_gadget_class_init ((GtkGadgetClass*) klass); 
+ * }
+ * 
+ * GType
+ * gtk_gadget_get_type (void)
+ * {
+ *   return gtk_gadget_type_id;
+ * }
+ * 
+ * static void
+ * gtk_gadget_register_type (GTypeModule *type_module)
+ * {
+ *   const GTypeInfo g_define_type_info = {
+ *     sizeof (GtkGadgetClass),
+ *     (GBaseInitFunc) NULL,
+ *     (GBaseFinalizeFunc) NULL,
+ *     (GClassInitFunc) gtk_gadget_class_intern_init,
+ *     (GClassFinalizeFunc) gtk_gadget_class_finalize,
+ *     NULL,   // class_data
+ *     sizeof (GtkGadget),
+ *     0,      // n_preallocs
+ *     (GInstanceInitFunc) gtk_gadget_init, 
+ *     NULL    // value_table
+ *   };
+ *   gtk_gadget_type_id = g_type_module_register_type (type_module,
+ *                                                     GTK_TYPE_THING,
+ *                                                     "GtkGadget",
+ *                                                     &g_define_type_info,
+ *                                                     (GTypeFlags) flags);
+ *   {
+ *     const GInterfaceInfo g_implement_interface_info = {
+ *       (GInterfaceInitFunc) gtk_gadget_gizmo_init
+ *     };
+ *     g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
+ *   }
+ * }
+ * ]|
+ * 
+ * Since: 2.14
+ */
+#define G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE) \
+static void     type_name##_init              (TypeName        *self); \
+static void     type_name##_class_init        (TypeName##Class *klass); \
+static void     type_name##_class_finalize    (TypeName##Class *klass); \
+static gpointer type_name##_parent_class = NULL; \
+static GType    type_name##_type_id = 0; \
+static void     type_name##_class_intern_init (gpointer klass) \
+{ \
+  type_name##_parent_class = g_type_class_peek_parent (klass); \
+  type_name##_class_init ((TypeName##Class*) klass); \
+} \
+GType \
+type_name##_get_type (void) \
+{ \
+  return type_name##_type_id; \
+} \
+static void \
+type_name##_register_type (GTypeModule *type_module) \
+{ \
+  GType g_define_type_id G_GNUC_UNUSED; \
+  const GTypeInfo g_define_type_info = { \
+    sizeof (TypeName##Class), \
+    (GBaseInitFunc) NULL, \
+    (GBaseFinalizeFunc) NULL, \
+    (GClassInitFunc) type_name##_class_intern_init, \
+    (GClassFinalizeFunc) type_name##_class_finalize, \
+    NULL,   /* class_data */ \
+    sizeof (TypeName), \
+    0,      /* n_preallocs */ \
+    (GInstanceInitFunc) type_name##_init, \
+    NULL    /* value_table */ \
+  }; \
+  type_name##_type_id = g_type_module_register_type (type_module, \
+						     TYPE_PARENT, \
+						     #TypeName, \
+						     &g_define_type_info, \
+						     (GTypeFlags) flags); \
+  g_define_type_id = type_name##_type_id; \
+  { CODE ; } \
+}
+
+/**
+ * G_IMPLEMENT_INTERFACE_DYNAMIC:
+ * @TYPE_IFACE: The #GType of the interface to add
+ * @iface_init: The interface init function
+ *
+ * A convenience macro to ease interface addition in the @_C_ section
+ * of G_DEFINE_DYNAMIC_TYPE_EXTENDED(). See G_DEFINE_DYNAMIC_TYPE_EXTENDED()
+ * for an example.
+ *
+ * Note that this macro can only be used together with the
+ * G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable
+ * names from that macro.
+ *
+ * Since: 2.24
+ */
+#define G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init)       { \
+  const GInterfaceInfo g_implement_interface_info = { \
+    (GInterfaceInitFunc) iface_init, NULL, NULL      \
+  }; \
+  g_type_module_add_interface (type_module, g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
+}
+
+GLIB_AVAILABLE_IN_ALL
+GType    g_type_module_get_type       (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+gboolean g_type_module_use            (GTypeModule          *module);
+GLIB_AVAILABLE_IN_ALL
+void     g_type_module_unuse          (GTypeModule          *module);
+GLIB_AVAILABLE_IN_ALL
+void     g_type_module_set_name       (GTypeModule          *module,
+                                       const gchar          *name);
+GLIB_AVAILABLE_IN_ALL
+GType    g_type_module_register_type  (GTypeModule          *module,
+                                       GType                 parent_type,
+                                       const gchar          *type_name,
+                                       const GTypeInfo      *type_info,
+                                       GTypeFlags            flags);
+GLIB_AVAILABLE_IN_ALL
+void     g_type_module_add_interface  (GTypeModule          *module,
+                                       GType                 instance_type,
+                                       GType                 interface_type,
+                                       const GInterfaceInfo *interface_info);
+GLIB_AVAILABLE_IN_ALL
+GType    g_type_module_register_enum  (GTypeModule          *module,
+                                       const gchar          *name,
+                                       const GEnumValue     *const_static_values);
+GLIB_AVAILABLE_IN_ALL
+GType    g_type_module_register_flags (GTypeModule          *module,
+                                       const gchar          *name,
+                                       const GFlagsValue    *const_static_values);
+
+G_END_DECLS
+
+#endif /* __G_TYPE_MODULE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gtypeplugin.h b/dist/usr/include/glib-2.0/gobject/gtypeplugin.h
new file mode 100644
index 0000000..c744f9e
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gtypeplugin.h
@@ -0,0 +1,139 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2000 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_TYPE_PLUGIN_H__
+#define __G_TYPE_PLUGIN_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gtype.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+#define G_TYPE_TYPE_PLUGIN		(g_type_plugin_get_type ())
+#define G_TYPE_PLUGIN(inst)		(G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_TYPE_PLUGIN, GTypePlugin))
+#define G_TYPE_PLUGIN_CLASS(vtable)	(G_TYPE_CHECK_CLASS_CAST ((vtable), G_TYPE_TYPE_PLUGIN, GTypePluginClass))
+#define G_IS_TYPE_PLUGIN(inst)		(G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_TYPE_PLUGIN))
+#define G_IS_TYPE_PLUGIN_CLASS(vtable)	(G_TYPE_CHECK_CLASS_TYPE ((vtable), G_TYPE_TYPE_PLUGIN))
+#define G_TYPE_PLUGIN_GET_CLASS(inst)	(G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_TYPE_PLUGIN, GTypePluginClass))
+
+
+/* --- typedefs & structures --- */
+typedef struct _GTypePluginClass		   GTypePluginClass;
+/**
+ * GTypePluginUse:
+ * @plugin: the #GTypePlugin whose use count should be increased
+ * 
+ * The type of the @use_plugin function of #GTypePluginClass, which gets called
+ * to increase the use count of @plugin.
+ */
+typedef void  (*GTypePluginUse)			  (GTypePlugin     *plugin);
+/**
+ * GTypePluginUnuse:
+ * @plugin: the #GTypePlugin whose use count should be decreased
+ * 
+ * The type of the @unuse_plugin function of #GTypePluginClass.
+ */
+typedef void  (*GTypePluginUnuse)		  (GTypePlugin     *plugin);
+/**
+ * GTypePluginCompleteTypeInfo:
+ * @plugin: the #GTypePlugin
+ * @g_type: the #GType whose info is completed
+ * @info: the #GTypeInfo struct to fill in
+ * @value_table: the #GTypeValueTable to fill in
+ * 
+ * The type of the @complete_type_info function of #GTypePluginClass.
+ */
+typedef void  (*GTypePluginCompleteTypeInfo)	  (GTypePlugin     *plugin,
+						   GType            g_type,
+						   GTypeInfo       *info,
+						   GTypeValueTable *value_table);
+/**
+ * GTypePluginCompleteInterfaceInfo:
+ * @plugin: the #GTypePlugin
+ * @instance_type: the #GType of an instantiable type to which the interface
+ *  is added
+ * @interface_type: the #GType of the interface whose info is completed
+ * @info: the #GInterfaceInfo to fill in
+ * 
+ * The type of the @complete_interface_info function of #GTypePluginClass.
+ */
+typedef void  (*GTypePluginCompleteInterfaceInfo) (GTypePlugin     *plugin,
+						   GType            instance_type,
+						   GType            interface_type,
+						   GInterfaceInfo  *info);
+/**
+ * GTypePlugin:
+ * 
+ * The <structname>GTypePlugin</structname> typedef is used as a placeholder 
+ * for objects that implement the <structname>GTypePlugin</structname> 
+ * interface.
+ */
+/**
+ * GTypePluginClass:
+ * @use_plugin: Increases the use count of the plugin.
+ * @unuse_plugin: Decreases the use count of the plugin.
+ * @complete_type_info: Fills in the #GTypeInfo and 
+ *  #GTypeValueTable structs for the type. The structs are initialized
+ *  with <literal>memset(s, 0, sizeof (s))</literal> before calling 
+ *  this function.
+ * @complete_interface_info: Fills in missing parts of the #GInterfaceInfo 
+ *  for the interface. The structs is initialized with 
+ *  <literal>memset(s, 0, sizeof (s))</literal> before calling
+ *  this function.
+ * 
+ * The #GTypePlugin interface is used by the type system in order to handle
+ * the lifecycle of dynamically loaded types.
+ */
+struct _GTypePluginClass
+{
+  /*< private >*/
+  GTypeInterface		   base_iface;
+  
+  /*< public >*/
+  GTypePluginUse		   use_plugin;
+  GTypePluginUnuse		   unuse_plugin;
+  GTypePluginCompleteTypeInfo	   complete_type_info;
+  GTypePluginCompleteInterfaceInfo complete_interface_info;
+};
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GType	g_type_plugin_get_type			(void)	G_GNUC_CONST;
+GLIB_AVAILABLE_IN_ALL
+void	g_type_plugin_use			(GTypePlugin	 *plugin);
+GLIB_AVAILABLE_IN_ALL
+void	g_type_plugin_unuse			(GTypePlugin	 *plugin);
+GLIB_AVAILABLE_IN_ALL
+void	g_type_plugin_complete_type_info	(GTypePlugin     *plugin,
+						 GType            g_type,
+						 GTypeInfo       *info,
+						 GTypeValueTable *value_table);
+GLIB_AVAILABLE_IN_ALL
+void	g_type_plugin_complete_interface_info	(GTypePlugin     *plugin,
+						 GType            instance_type,
+						 GType            interface_type,
+						 GInterfaceInfo  *info);
+
+G_END_DECLS
+
+#endif /* __G_TYPE_PLUGIN_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gvalue.h b/dist/usr/include/glib-2.0/gobject/gvalue.h
new file mode 100644
index 0000000..56ea0c6
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gvalue.h
@@ -0,0 +1,194 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1997-1999, 2000-2001 Tim Janik and 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.
+ *
+ * gvalue.h: generic GValue functions
+ */
+#ifndef __G_VALUE_H__
+#define __G_VALUE_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gtype.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+/**
+ * G_TYPE_IS_VALUE:
+ * @type: A #GType value.
+ * 
+ * Checks whether the passed in type ID can be used for g_value_init().
+ * That is, this macro checks whether this type provides an implementation
+ * of the #GTypeValueTable functions required for a type to create a #GValue of.
+ * 
+ * Returns: Whether @type is suitable as a #GValue type.
+ */
+#define	G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
+/**
+ * G_IS_VALUE:
+ * @value: A #GValue structure.
+ * 
+ * Checks if @value is a valid and initialized #GValue structure.
+ *
+ * Returns: %TRUE on success.
+ */
+#define	G_IS_VALUE(value)		(G_TYPE_CHECK_VALUE (value))
+/**
+ * G_VALUE_TYPE:
+ * @value: A #GValue structure.
+ *
+ * Get the type identifier of @value.
+ *
+ * Returns: the #GType.
+ */
+#define	G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
+/**
+ * G_VALUE_TYPE_NAME:
+ * @value: A #GValue structure.
+ *
+ * Gets the type name of @value.
+ *
+ * Returns: the type name.
+ */
+#define	G_VALUE_TYPE_NAME(value)	(g_type_name (G_VALUE_TYPE (value)))
+/**
+ * G_VALUE_HOLDS:
+ * @value: A #GValue structure.
+ * @type: A #GType value.
+ *
+ * Checks if @value holds (or contains) a value of @type.
+ * This macro will also check for @value != %NULL and issue a
+ * warning if the check fails.
+ *
+ * Returns: %TRUE if @value holds the @type.
+ */
+#define G_VALUE_HOLDS(value,type)	(G_TYPE_CHECK_VALUE_TYPE ((value), (type)))
+
+
+/* --- typedefs & structures --- */
+/**
+ * GValueTransform:
+ * @src_value: Source value.
+ * @dest_value: Target value.
+ * 
+ * The type of value transformation functions which can be registered with
+ * g_value_register_transform_func().
+ */
+typedef void (*GValueTransform) (const GValue *src_value,
+				 GValue       *dest_value);
+/**
+ * GValue:
+ * 
+ * An opaque structure used to hold different types of values.
+ * The data within the structure has protected scope: it is accessible only
+ * to functions within a #GTypeValueTable structure, or implementations of
+ * the g_value_*() API. That is, code portions which implement new fundamental
+ * types.
+ * #GValue users cannot make any assumptions about how data is stored
+ * within the 2 element @data union, and the @g_type member should
+ * only be accessed through the G_VALUE_TYPE() macro.
+ */
+struct _GValue
+{
+  /*< private >*/
+  GType		g_type;
+
+  /* public for GTypeValueTable methods */
+  union {
+    gint	v_int;
+    guint	v_uint;
+    glong	v_long;
+    gulong	v_ulong;
+    gint64      v_int64;
+    guint64     v_uint64;
+    gfloat	v_float;
+    gdouble	v_double;
+    gpointer	v_pointer;
+  } data[2];
+};
+
+
+/* --- prototypes --- */
+GLIB_AVAILABLE_IN_ALL
+GValue*         g_value_init	   	(GValue       *value,
+					 GType         g_type);
+GLIB_AVAILABLE_IN_ALL
+void            g_value_copy    	(const GValue *src_value,
+					 GValue       *dest_value);
+GLIB_AVAILABLE_IN_ALL
+GValue*         g_value_reset   	(GValue       *value);
+GLIB_AVAILABLE_IN_ALL
+void            g_value_unset   	(GValue       *value);
+GLIB_AVAILABLE_IN_ALL
+void		g_value_set_instance	(GValue	      *value,
+					 gpointer      instance);
+
+
+/* --- private --- */
+GLIB_AVAILABLE_IN_ALL
+gboolean	g_value_fits_pointer	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+gpointer	g_value_peek_pointer	(const GValue *value);
+
+
+/* --- implementation details --- */
+GLIB_AVAILABLE_IN_ALL
+gboolean g_value_type_compatible	(GType		 src_type,
+					 GType		 dest_type);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_value_type_transformable	(GType           src_type,
+					 GType           dest_type);
+GLIB_AVAILABLE_IN_ALL
+gboolean g_value_transform		(const GValue   *src_value,
+					 GValue         *dest_value);
+GLIB_AVAILABLE_IN_ALL
+void	g_value_register_transform_func	(GType		 src_type,
+					 GType		 dest_type,
+					 GValueTransform transform_func);
+
+/**
+ * G_VALUE_NOCOPY_CONTENTS:
+ *
+ * If passed to G_VALUE_COLLECT(), allocated data won't be copied
+ * but used verbatim. This does not affect ref-counted types like
+ * objects.
+ */
+#define G_VALUE_NOCOPY_CONTENTS (1 << 27)
+
+/**
+ * G_VALUE_INIT:
+ *
+ * A #GValue must be initialized before it can be used.
+ * This macro can be used as initializer instead of an explicit
+ * <literal>{ 0 }</literal> when declaring a variable,
+ * but it cannot be assigned to a variable.
+ *
+ * |[
+ *   GValue value = G_VALUE_INIT;
+ * ]|
+ *
+ * Since: 2.30
+ */
+#define G_VALUE_INIT  { 0, { { 0 } } }
+
+
+G_END_DECLS
+
+#endif /* __G_VALUE_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gvaluearray.h b/dist/usr/include/glib-2.0/gobject/gvaluearray.h
new file mode 100644
index 0000000..aca3716
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gvaluearray.h
@@ -0,0 +1,106 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2001 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.
+ *
+ * gvaluearray.h: GLib array type holding GValues
+ */
+#ifndef __G_VALUE_ARRAY_H__
+#define __G_VALUE_ARRAY_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gvalue.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_TYPE_VALUE_ARRAY:
+ *
+ * The type ID of the "GValueArray" type which is a boxed type,
+ * used to pass around pointers to GValueArrays.
+ *
+ * Deprecated: 2.32: Use #GArray instead of #GValueArray
+ */
+#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ())
+
+/* --- typedefs & structs --- */
+typedef struct _GValueArray GValueArray;
+/**
+ * GValueArray:
+ * @n_values: number of values contained in the array
+ * @values: array of values
+ * 
+ * A #GValueArray contains an array of #GValue elements.
+ */
+struct _GValueArray
+{
+  guint   n_values;
+  GValue *values;
+
+  /*< private >*/
+  guint   n_prealloced;
+};
+
+/* --- prototypes --- */
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GType           g_value_array_get_type       (void) G_GNUC_CONST;
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValue*		g_value_array_get_nth	     (GValueArray	*value_array,
+					      guint		 index_);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_new	     (guint		 n_prealloced);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+void		g_value_array_free	     (GValueArray	*value_array);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_copy	     (const GValueArray *value_array);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_prepend	     (GValueArray	*value_array,
+					      const GValue	*value);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_append	     (GValueArray	*value_array,
+					      const GValue	*value);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_insert	     (GValueArray	*value_array,
+					      guint		 index_,
+					      const GValue	*value);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_remove	     (GValueArray	*value_array,
+					      guint		 index_);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_sort	     (GValueArray	*value_array,
+					      GCompareFunc	 compare_func);
+
+GLIB_DEPRECATED_IN_2_32_FOR(GArray)
+GValueArray*	g_value_array_sort_with_data (GValueArray	*value_array,
+					      GCompareDataFunc	 compare_func,
+					      gpointer		 user_data);
+
+
+G_END_DECLS
+
+#endif /* __G_VALUE_ARRAY_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gvaluecollector.h b/dist/usr/include/glib-2.0/gobject/gvaluecollector.h
new file mode 100644
index 0000000..05a436a
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gvaluecollector.h
@@ -0,0 +1,256 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1998-1999, 2000-2001 Tim Janik and 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.
+ *
+ * gvaluecollector.h: GValue varargs stubs
+ */
+/**
+ * SECTION:value_collection
+ * @Short_description: Converting varargs to generic values
+ * @Title: Varargs Value Collection
+ * 
+ * The macros in this section provide the varargs parsing support needed
+ * in variadic GObject functions such as g_object_new() or g_object_set().
+ * They currently support the collection of integral types, floating point 
+ * types and pointers.
+ */
+#ifndef __G_VALUE_COLLECTOR_H__
+#define __G_VALUE_COLLECTOR_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* we may want to add aggregate types here some day, if requested
+ * by users. the basic C types are covered already, everything
+ * smaller than an int is promoted to an integer and floats are
+ * always promoted to doubles for varargs call constructions.
+ */
+enum	/*< skip >*/
+{
+  G_VALUE_COLLECT_INT		= 'i',
+  G_VALUE_COLLECT_LONG		= 'l',
+  G_VALUE_COLLECT_INT64         = 'q',
+  G_VALUE_COLLECT_DOUBLE	= 'd',
+  G_VALUE_COLLECT_POINTER	= 'p'
+};
+
+
+/* vararg union holding actual values collected
+ */
+/**
+ * GTypeCValue:
+ * @v_int: the field for holding integer values
+ * @v_long: the field for holding long integer values
+ * @v_int64: the field for holding 64 bit integer values
+ * @v_double: the field for holding floating point values
+ * @v_pointer: the field for holding pointers
+ * 
+ * A union holding one collected value.
+ */
+union _GTypeCValue
+{
+  gint     v_int;
+  glong    v_long;
+  gint64   v_int64;
+  gdouble  v_double;
+  gpointer v_pointer;
+};
+
+/**
+ * G_VALUE_COLLECT_INIT:
+ * @value: a #GValue return location. @value must contain only 0 bytes.
+ * @_value_type: the #GType to use for @value.
+ * @var_args: the va_list variable; it may be evaluated multiple times
+ * @flags: flags which are passed on to the collect_value() function of
+ *  the #GTypeValueTable of @value.
+ * @__error: a #gchar** variable that will be modified to hold a g_new()
+ *  allocated error messages if something fails
+ * 
+ * Collects a variable argument value from a va_list. We have to
+ * implement the varargs collection as a macro, because on some systems
+ * va_list variables cannot be passed by reference.
+ *
+ * Since: 2.24
+ */
+#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)		\
+G_STMT_START {										\
+  GValue *_val = (value);								\
+  guint _flags = (flags);								\
+  GTypeValueTable *_vtab = g_type_value_table_peek (_value_type);			\
+  const gchar *_collect_format = _vtab->collect_format;					\
+  GTypeCValue _cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
+  guint _n_values = 0;									\
+                                                                                        \
+  _val->g_type = _value_type;		/* value_meminit() from gvalue.c */		\
+  while (*_collect_format)								\
+    {											\
+      GTypeCValue *_cvalue = _cvalues + _n_values++;					\
+                                                                                        \
+      switch (*_collect_format++)							\
+	{										\
+	case G_VALUE_COLLECT_INT:							\
+	  _cvalue->v_int = va_arg ((var_args), gint);					\
+	  break;									\
+	case G_VALUE_COLLECT_LONG:							\
+	  _cvalue->v_long = va_arg ((var_args), glong);					\
+	  break;									\
+	case G_VALUE_COLLECT_INT64:							\
+	  _cvalue->v_int64 = va_arg ((var_args), gint64);				\
+	  break;									\
+	case G_VALUE_COLLECT_DOUBLE:							\
+	  _cvalue->v_double = va_arg ((var_args), gdouble);				\
+	  break;									\
+	case G_VALUE_COLLECT_POINTER:							\
+	  _cvalue->v_pointer = va_arg ((var_args), gpointer);				\
+	  break;									\
+	default:									\
+	  g_assert_not_reached ();							\
+	}										\
+    }											\
+  *(__error) = _vtab->collect_value (_val,						\
+				       _n_values,					\
+				       _cvalues,					\
+				       _flags);						\
+} G_STMT_END
+
+/**
+ * G_VALUE_COLLECT:
+ * @value: a #GValue return location. @value is supposed to be initialized
+ *  according to the value type to be collected
+ * @var_args: the va_list variable; it may be evaluated multiple times
+ * @flags: flags which are passed on to the collect_value() function of
+ *  the #GTypeValueTable of @value.
+ * @__error: a #gchar** variable that will be modified to hold a g_new()
+ *  allocated error messages if something fails
+ *
+ * Collects a variable argument value from a va_list. We have to
+ * implement the varargs collection as a macro, because on some systems
+ * va_list variables cannot be passed by reference.
+ *
+ * Note: If you are creating the @value argument just before calling this macro,
+ * you should use the #G_VALUE_COLLECT_INIT variant and pass the unitialized
+ * #GValue. That variant is faster than #G_VALUE_COLLECT.
+ */
+#define G_VALUE_COLLECT(value, var_args, flags, __error) G_STMT_START {			\
+  GValue *_value = (value);								\
+  GType _value_type = G_VALUE_TYPE (_value);						\
+  GTypeValueTable *_vtable = g_type_value_table_peek (_value_type);			\
+											\
+  if (_vtable->value_free)								\
+    _vtable->value_free (_value);							\
+  memset (_value->data, 0, sizeof (_value->data));					\
+											\
+  G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error);			\
+} G_STMT_END
+
+#define G_VALUE_COLLECT_SKIP(_value_type, var_args)					\
+G_STMT_START {										\
+  GTypeValueTable *_vtable = g_type_value_table_peek (_value_type);			\
+  const gchar *_collect_format = _vtable->collect_format;				\
+                                                                                        \
+  while (*_collect_format)								\
+    {											\
+      switch (*_collect_format++)							\
+	{										\
+	case G_VALUE_COLLECT_INT:							\
+	  va_arg ((var_args), gint);							\
+	  break;									\
+	case G_VALUE_COLLECT_LONG:							\
+	  va_arg ((var_args), glong);							\
+	  break;									\
+	case G_VALUE_COLLECT_INT64:							\
+	  va_arg ((var_args), gint64);							\
+	  break;									\
+	case G_VALUE_COLLECT_DOUBLE:							\
+	  va_arg ((var_args), gdouble);							\
+	  break;									\
+	case G_VALUE_COLLECT_POINTER:							\
+	  va_arg ((var_args), gpointer);						\
+	  break;									\
+	default:									\
+	  g_assert_not_reached ();							\
+	}										\
+    }											\
+} G_STMT_END
+
+/**
+ * G_VALUE_LCOPY:
+ * @value: a #GValue return location. @value is supposed to be initialized 
+ *  according to the value type to be collected
+ * @var_args: the va_list variable; it may be evaluated multiple times
+ * @flags: flags which are passed on to the lcopy_value() function of
+ *  the #GTypeValueTable of @value.
+ * @__error: a #gchar** variable that will be modified to hold a g_new()
+ *  allocated error messages if something fails
+ * 
+ * Collects a value's variable argument locations from a va_list. Usage is
+ * analogous to G_VALUE_COLLECT().
+ */
+#define G_VALUE_LCOPY(value, var_args, flags, __error)					\
+G_STMT_START {										\
+  const GValue *_value = (value);							\
+  guint _flags = (flags);								\
+  GType _value_type = G_VALUE_TYPE (_value);						\
+  GTypeValueTable *_vtable = g_type_value_table_peek (_value_type);			\
+  const gchar *_lcopy_format = _vtable->lcopy_format;					\
+  GTypeCValue _cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, };		\
+  guint _n_values = 0;									\
+                                                                                        \
+  while (*_lcopy_format)								\
+    {											\
+      GTypeCValue *_cvalue = _cvalues + _n_values++;					\
+                                                                                        \
+      switch (*_lcopy_format++)								\
+	{										\
+	case G_VALUE_COLLECT_INT:							\
+	  _cvalue->v_int = va_arg ((var_args), gint);					\
+	  break;									\
+	case G_VALUE_COLLECT_LONG:							\
+	  _cvalue->v_long = va_arg ((var_args), glong);					\
+	  break;									\
+	case G_VALUE_COLLECT_INT64:							\
+	  _cvalue->v_int64 = va_arg ((var_args), gint64);				\
+	  break;									\
+	case G_VALUE_COLLECT_DOUBLE:							\
+	  _cvalue->v_double = va_arg ((var_args), gdouble);				\
+	  break;									\
+	case G_VALUE_COLLECT_POINTER:							\
+	  _cvalue->v_pointer = va_arg ((var_args), gpointer);				\
+	  break;									\
+	default:									\
+	  g_assert_not_reached ();							\
+	}										\
+    }											\
+  *(__error) = _vtable->lcopy_value (_value,						\
+				     _n_values,						\
+				     _cvalues,						\
+				     _flags);						\
+} G_STMT_END
+
+
+/**
+ * G_VALUE_COLLECT_FORMAT_MAX_LENGTH:
+ * 
+ * The maximal number of #GTypeCValue<!-- -->s which can be collected for a 
+ * single #GValue.
+ */
+#define	G_VALUE_COLLECT_FORMAT_MAX_LENGTH	(8)
+
+G_END_DECLS
+
+#endif /* __G_VALUE_COLLECTOR_H__ */
diff --git a/dist/usr/include/glib-2.0/gobject/gvaluetypes.h b/dist/usr/include/glib-2.0/gobject/gvaluetypes.h
new file mode 100644
index 0000000..5fb42ad
--- /dev/null
+++ b/dist/usr/include/glib-2.0/gobject/gvaluetypes.h
@@ -0,0 +1,302 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 1997-1999, 2000-2001 Tim Janik and 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.
+ *
+ * gvaluetypes.h: GLib default values
+ */
+#ifndef __G_VALUETYPES_H__
+#define __G_VALUETYPES_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include	<gobject/gvalue.h>
+
+G_BEGIN_DECLS
+
+/* --- type macros --- */
+/**
+ * G_VALUE_HOLDS_CHAR:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_CHAR.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_CHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_CHAR))
+/**
+ * G_VALUE_HOLDS_UCHAR:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_UCHAR.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_UCHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UCHAR))
+/**
+ * G_VALUE_HOLDS_BOOLEAN:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_BOOLEAN.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_BOOLEAN(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOOLEAN))
+/**
+ * G_VALUE_HOLDS_INT:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_INT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_INT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT))
+/**
+ * G_VALUE_HOLDS_UINT:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_UINT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_UINT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT))
+/**
+ * G_VALUE_HOLDS_LONG:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_LONG.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_LONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_LONG))
+/**
+ * G_VALUE_HOLDS_ULONG:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_ULONG.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_ULONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ULONG))
+/**
+ * G_VALUE_HOLDS_INT64:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_INT64.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_INT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT64))
+/**
+ * G_VALUE_HOLDS_UINT64:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_UINT64.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_UINT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT64))
+/**
+ * G_VALUE_HOLDS_FLOAT:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_FLOAT.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_FLOAT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLOAT))
+/**
+ * G_VALUE_HOLDS_DOUBLE:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_DOUBLE.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_DOUBLE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_DOUBLE))
+/**
+ * G_VALUE_HOLDS_STRING:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_STRING.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_STRING(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_STRING))
+/**
+ * G_VALUE_HOLDS_POINTER:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_POINTER.
+ * 
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_POINTER(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_POINTER))
+/**
+ * G_TYPE_GTYPE:
+ * 
+ * The type for #GType.
+ */
+#define	G_TYPE_GTYPE			 (g_gtype_get_type())
+/**
+ * G_VALUE_HOLDS_GTYPE:
+ * @value: a valid #GValue structure
+ * 
+ * Checks whether the given #GValue can hold values of type %G_TYPE_GTYPE.
+ * 
+ * Since: 2.12
+ * Returns: %TRUE on success.
+ */
+#define G_VALUE_HOLDS_GTYPE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_GTYPE))
+/**
+ * G_VALUE_HOLDS_VARIANT:
+ * @value: a valid #GValue structure
+ *
+ * Checks whether the given #GValue can hold values of type %G_TYPE_VARIANT.
+ *
+ * Returns: %TRUE on success.
+ *
+ * Since: 2.26
+ */
+#define G_VALUE_HOLDS_VARIANT(value)     (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_VARIANT))
+
+
+/* --- prototypes --- */
+GLIB_DEPRECATED_IN_2_32_FOR(g_value_set_schar)
+void                  g_value_set_char          (GValue       *value,
+                                                 gchar         v_char);
+GLIB_DEPRECATED_IN_2_32_FOR(g_value_get_schar)
+gchar                 g_value_get_char          (const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_schar		(GValue	      *value,
+						 gint8	       v_char);
+GLIB_AVAILABLE_IN_ALL
+gint8		      g_value_get_schar		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_uchar		(GValue	      *value,
+						 guchar	       v_uchar);
+GLIB_AVAILABLE_IN_ALL
+guchar		      g_value_get_uchar		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_boolean	(GValue	      *value,
+						 gboolean      v_boolean);
+GLIB_AVAILABLE_IN_ALL
+gboolean	      g_value_get_boolean	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_int		(GValue	      *value,
+						 gint	       v_int);
+GLIB_AVAILABLE_IN_ALL
+gint		      g_value_get_int		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_uint		(GValue	      *value,
+						 guint	       v_uint);
+GLIB_AVAILABLE_IN_ALL
+guint		      g_value_get_uint		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_long		(GValue	      *value,
+						 glong	       v_long);
+GLIB_AVAILABLE_IN_ALL
+glong		      g_value_get_long		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_ulong		(GValue	      *value,
+						 gulong	       v_ulong);
+GLIB_AVAILABLE_IN_ALL
+gulong		      g_value_get_ulong		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_int64		(GValue	      *value,
+						 gint64	       v_int64);
+GLIB_AVAILABLE_IN_ALL
+gint64		      g_value_get_int64		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_uint64	(GValue	      *value,
+						 guint64      v_uint64);
+GLIB_AVAILABLE_IN_ALL
+guint64		      g_value_get_uint64	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_float		(GValue	      *value,
+						 gfloat	       v_float);
+GLIB_AVAILABLE_IN_ALL
+gfloat		      g_value_get_float		(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_double	(GValue	      *value,
+						 gdouble       v_double);
+GLIB_AVAILABLE_IN_ALL
+gdouble		      g_value_get_double	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_string	(GValue	      *value,
+						 const gchar  *v_string);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_static_string (GValue	      *value,
+						 const gchar  *v_string);
+GLIB_AVAILABLE_IN_ALL
+const gchar *         g_value_get_string	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+gchar*		      g_value_dup_string	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_pointer	(GValue	      *value,
+						 gpointer      v_pointer);
+GLIB_AVAILABLE_IN_ALL
+gpointer	      g_value_get_pointer	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+GType		      g_gtype_get_type		(void);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_gtype	        (GValue	      *value,
+						 GType         v_gtype);
+GLIB_AVAILABLE_IN_ALL
+GType	              g_value_get_gtype	        (const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_set_variant	(GValue	      *value,
+						 GVariant     *variant);
+GLIB_AVAILABLE_IN_ALL
+void		      g_value_take_variant	(GValue	      *value,
+						 GVariant     *variant);
+GLIB_AVAILABLE_IN_ALL
+GVariant*	      g_value_get_variant	(const GValue *value);
+GLIB_AVAILABLE_IN_ALL
+GVariant*	      g_value_dup_variant	(const GValue *value);
+
+
+/* Convenience for registering new pointer types */
+GLIB_AVAILABLE_IN_ALL
+GType                 g_pointer_type_register_static (const gchar *name);
+
+/* debugging aid, describe value contents as string */
+GLIB_AVAILABLE_IN_ALL
+gchar*                g_strdup_value_contents   (const GValue *value);
+
+
+GLIB_AVAILABLE_IN_ALL
+void g_value_take_string		        (GValue		   *value,
+						 gchar		   *v_string);
+GLIB_DEPRECATED_FOR(g_value_take_string)
+void g_value_set_string_take_ownership          (GValue            *value,
+                                                 gchar             *v_string);
+
+
+/* humpf, need a C representable type name for G_TYPE_STRING */
+/**
+ * gchararray:
+ * 
+ * A C representable type name for #G_TYPE_STRING.
+ */
+typedef gchar* gchararray;
+
+
+G_END_DECLS
+
+#endif /* __G_VALUETYPES_H__ */
diff --git a/dist/usr/lib/glib-2.0/include/glibconfig.h b/dist/usr/lib/glib-2.0/include/glibconfig.h
new file mode 100644
index 0000000..c419d12
--- /dev/null
+++ b/dist/usr/lib/glib-2.0/include/glibconfig.h
@@ -0,0 +1,205 @@
+/* glibconfig.h
+ *
+ * This is a generated file.  Please modify 'configure.ac'
+ */
+
+#ifndef __GLIBCONFIG_H__
+#define __GLIBCONFIG_H__
+
+#include <glib/gmacros.h>
+
+#include <limits.h>
+#include <float.h>
+#define GLIB_HAVE_ALLOCA_H
+#define GLIB_HAVE_SYS_POLL_H
+
+G_BEGIN_DECLS
+
+#define G_MINFLOAT	FLT_MIN
+#define G_MAXFLOAT	FLT_MAX
+#define G_MINDOUBLE	DBL_MIN
+#define G_MAXDOUBLE	DBL_MAX
+#define G_MINSHORT	SHRT_MIN
+#define G_MAXSHORT	SHRT_MAX
+#define G_MAXUSHORT	USHRT_MAX
+#define G_MININT	INT_MIN
+#define G_MAXINT	INT_MAX
+#define G_MAXUINT	UINT_MAX
+#define G_MINLONG	LONG_MIN
+#define G_MAXLONG	LONG_MAX
+#define G_MAXULONG	ULONG_MAX
+
+typedef signed char gint8;
+typedef unsigned char guint8;
+typedef signed short gint16;
+typedef unsigned short guint16;
+#define G_GINT16_MODIFIER "h"
+#define G_GINT16_FORMAT "hi"
+#define G_GUINT16_FORMAT "hu"
+typedef signed int gint32;
+typedef unsigned int guint32;
+#define G_GINT32_MODIFIER ""
+#define G_GINT32_FORMAT "i"
+#define G_GUINT32_FORMAT "u"
+#define G_HAVE_GINT64 1          /* deprecated, always true */
+
+G_GNUC_EXTENSION typedef signed long long gint64;
+G_GNUC_EXTENSION typedef unsigned long long guint64;
+
+#define G_GINT64_CONSTANT(val)	(G_GNUC_EXTENSION (val##LL))
+#define G_GUINT64_CONSTANT(val)	(G_GNUC_EXTENSION (val##ULL))
+#define G_GINT64_MODIFIER "ll"
+#define G_GINT64_FORMAT "lli"
+#define G_GUINT64_FORMAT "llu"
+
+#define GLIB_SIZEOF_VOID_P 4
+#define GLIB_SIZEOF_LONG   4
+#define GLIB_SIZEOF_SIZE_T 4
+#define GLIB_SIZEOF_SSIZE_T 4
+
+typedef signed int gssize;
+typedef unsigned int gsize;
+#define G_GSIZE_MODIFIER ""
+#define G_GSSIZE_MODIFIER ""
+#define G_GSIZE_FORMAT "u"
+#define G_GSSIZE_FORMAT "i"
+
+#define G_MAXSIZE	G_MAXUINT
+#define G_MINSSIZE	G_MININT
+#define G_MAXSSIZE	G_MAXINT
+
+typedef gint64 goffset;
+#define G_MINOFFSET	G_MININT64
+#define G_MAXOFFSET	G_MAXINT64
+
+#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
+#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
+#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+
+#define GPOINTER_TO_INT(p)	((gint)  (gint) (p))
+#define GPOINTER_TO_UINT(p)	((guint) (guint) (p))
+
+#define GINT_TO_POINTER(i)	((gpointer) (gint) (i))
+#define GUINT_TO_POINTER(u)	((gpointer) (guint) (u))
+
+typedef signed int gintptr;
+typedef unsigned int guintptr;
+
+#define G_GINTPTR_MODIFIER      ""
+#define G_GINTPTR_FORMAT        "i"
+#define G_GUINTPTR_FORMAT       "u"
+
+#ifdef NeXT /* @#%@! NeXTStep */
+# define g_ATEXIT(proc)	(!atexit (proc))
+#else
+# define g_ATEXIT(proc)	(atexit (proc))
+#endif
+
+#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END
+
+#define GLIB_MAJOR_VERSION 2
+#define GLIB_MINOR_VERSION 37
+#define GLIB_MICRO_VERSION 3
+
+#define G_OS_UNIX
+
+
+#define G_VA_COPY	va_copy
+
+#ifdef	__cplusplus
+#define	G_HAVE_INLINE	1
+#else	/* !__cplusplus */
+#define G_HAVE_INLINE 1
+#define G_HAVE___INLINE 1
+#define G_HAVE___INLINE__ 1
+#endif	/* !__cplusplus */
+
+#ifdef	__cplusplus
+#define G_CAN_INLINE	1
+#else	/* !__cplusplus */
+#define G_CAN_INLINE	1
+#endif
+
+#ifndef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif
+#ifdef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif
+
+/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
+ * is passed ISO vararg support is turned off, and there is no work
+ * around to turn it on, so we unconditionally turn it off.
+ */
+#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
+#  undef G_HAVE_ISO_VARARGS
+#endif
+
+#define G_HAVE_GNUC_VARARGS 1
+#define G_HAVE_GROWING_STACK 0
+
+#define G_HAVE_GNUC_VISIBILITY 1
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#define G_GNUC_INTERNAL __hidden
+#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#else
+#define G_GNUC_INTERNAL
+#endif
+
+#define G_THREADS_ENABLED
+#define G_THREADS_IMPL_POSIX
+
+#define G_ATOMIC_LOCK_FREE
+
+#define GINT16_TO_LE(val)	((gint16) (val))
+#define GUINT16_TO_LE(val)	((guint16) (val))
+#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
+#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
+#define GINT32_TO_LE(val)	((gint32) (val))
+#define GUINT32_TO_LE(val)	((guint32) (val))
+#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
+#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
+#define GINT64_TO_LE(val)	((gint64) (val))
+#define GUINT64_TO_LE(val)	((guint64) (val))
+#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
+#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
+#define GLONG_TO_LE(val)	((glong) GINT32_TO_LE (val))
+#define GULONG_TO_LE(val)	((gulong) GUINT32_TO_LE (val))
+#define GLONG_TO_BE(val)	((glong) GINT32_TO_BE (val))
+#define GULONG_TO_BE(val)	((gulong) GUINT32_TO_BE (val))
+#define GINT_TO_LE(val)		((gint) GINT32_TO_LE (val))
+#define GUINT_TO_LE(val)	((guint) GUINT32_TO_LE (val))
+#define GINT_TO_BE(val)		((gint) GINT32_TO_BE (val))
+#define GUINT_TO_BE(val)	((guint) GUINT32_TO_BE (val))
+#define GSIZE_TO_LE(val)	((gsize) GUINT32_TO_LE (val))
+#define GSSIZE_TO_LE(val)	((gssize) GINT32_TO_LE (val))
+#define GSIZE_TO_BE(val)	((gsize) GUINT32_TO_BE (val))
+#define GSSIZE_TO_BE(val)	((gssize) GINT32_TO_BE (val))
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define GLIB_SYSDEF_POLLIN =1
+#define GLIB_SYSDEF_POLLOUT =4
+#define GLIB_SYSDEF_POLLPRI =2
+#define GLIB_SYSDEF_POLLHUP =16
+#define GLIB_SYSDEF_POLLERR =8
+#define GLIB_SYSDEF_POLLNVAL =32
+
+#define G_MODULE_SUFFIX "so"
+
+typedef int GPid;
+
+#define GLIB_SYSDEF_AF_UNIX 1
+#define GLIB_SYSDEF_AF_INET 2
+#define GLIB_SYSDEF_AF_INET6 10
+
+#define GLIB_SYSDEF_MSG_OOB 1
+#define GLIB_SYSDEF_MSG_PEEK 2
+#define GLIB_SYSDEF_MSG_DONTROUTE 4
+
+G_END_DECLS
+
+#endif /* __GLIBCONFIG_H__ */
diff --git a/dist/usr/lib/libffi-3.0.13/include/ffi.h b/dist/usr/lib/libffi-3.0.13/include/ffi.h
new file mode 100644
index 0000000..5684259
--- /dev/null
+++ b/dist/usr/lib/libffi-3.0.13/include/ffi.h
@@ -0,0 +1,471 @@
+/* -----------------------------------------------------------------*-C-*-
+   libffi 3.0.13 - Copyright (c) 2011 Anthony Green
+                    - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
+
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation
+   files (the ``Software''), to deal in the Software without
+   restriction, including without limitation the rights to use, copy,
+   modify, merge, publish, distribute, sublicense, and/or sell copies
+   of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+/* -------------------------------------------------------------------
+   The basic API is described in the README file.
+
+   The raw API is designed to bypass some of the argument packing
+   and unpacking on architectures for which it can be avoided.
+
+   The closure API allows interpreted functions to be packaged up
+   inside a C function pointer, so that they can be called as C functions,
+   with no understanding on the client side that they are interpreted.
+   It can also be used in other cases in which it is necessary to package
+   up a user specified parameter and a function pointer as a single
+   function pointer.
+
+   The closure API must be implemented in order to get its functionality,
+   e.g. for use by gij.  Routines are provided to emulate the raw API
+   if the underlying platform doesn't allow faster implementation.
+
+   More details on the raw and cloure API can be found in:
+
+   http://gcc.gnu.org/ml/java/1999-q3/msg00138.html
+
+   and
+
+   http://gcc.gnu.org/ml/java/1999-q3/msg00174.html
+   -------------------------------------------------------------------- */
+
+#ifndef LIBFFI_H
+#define LIBFFI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Specify which architecture libffi is configured for. */
+#ifndef ARM
+#define ARM
+#endif
+
+/* ---- System configuration information --------------------------------- */
+
+#include <ffitarget.h>
+
+#ifndef LIBFFI_ASM
+
+#ifdef _MSC_VER
+#define __attribute__(X)
+#endif
+
+#include <stddef.h>
+#include <limits.h>
+
+/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
+   But we can find it either under the correct ANSI name, or under GNU
+   C's internal name.  */
+
+#define FFI_64_BIT_MAX 9223372036854775807
+
+#ifdef LONG_LONG_MAX
+# define FFI_LONG_LONG_MAX LONG_LONG_MAX
+#else
+# ifdef LLONG_MAX
+#  define FFI_LONG_LONG_MAX LLONG_MAX
+#  ifdef _AIX52 /* or newer has C99 LLONG_MAX */
+#   undef FFI_64_BIT_MAX
+#   define FFI_64_BIT_MAX 9223372036854775807LL
+#  endif /* _AIX52 or newer */
+# else
+#  ifdef __GNUC__
+#   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
+#  endif
+#  ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */
+#   ifndef __PPC64__
+#    if defined (__IBMC__) || defined (__IBMCPP__)
+#     define FFI_LONG_LONG_MAX LONGLONG_MAX
+#    endif
+#   endif /* __PPC64__ */
+#   undef  FFI_64_BIT_MAX
+#   define FFI_64_BIT_MAX 9223372036854775807LL
+#  endif
+# endif
+#endif
+
+/* The closure code assumes that this works on pointers, i.e. a size_t	*/
+/* can hold a pointer.							*/
+
+typedef struct _ffi_type
+{
+  size_t size;
+  unsigned short alignment;
+  unsigned short type;
+  struct _ffi_type **elements;
+} ffi_type;
+
+#ifndef LIBFFI_HIDE_BASIC_TYPES
+#if SCHAR_MAX == 127
+# define ffi_type_uchar                ffi_type_uint8
+# define ffi_type_schar                ffi_type_sint8
+#else
+ #error "char size not supported"
+#endif
+
+#if SHRT_MAX == 32767
+# define ffi_type_ushort       ffi_type_uint16
+# define ffi_type_sshort       ffi_type_sint16
+#elif SHRT_MAX == 2147483647
+# define ffi_type_ushort       ffi_type_uint32
+# define ffi_type_sshort       ffi_type_sint32
+#else
+ #error "short size not supported"
+#endif
+
+#if INT_MAX == 32767
+# define ffi_type_uint         ffi_type_uint16
+# define ffi_type_sint         ffi_type_sint16
+#elif INT_MAX == 2147483647
+# define ffi_type_uint         ffi_type_uint32
+# define ffi_type_sint         ffi_type_sint32
+#elif INT_MAX == 9223372036854775807
+# define ffi_type_uint         ffi_type_uint64
+# define ffi_type_sint         ffi_type_sint64
+#else
+ #error "int size not supported"
+#endif
+
+#if LONG_MAX == 2147483647
+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
+ #error "no 64-bit data type supported"
+# endif
+#elif LONG_MAX != FFI_64_BIT_MAX
+ #error "long size not supported"
+#endif
+
+#if LONG_MAX == 2147483647
+# define ffi_type_ulong        ffi_type_uint32
+# define ffi_type_slong        ffi_type_sint32
+#elif LONG_MAX == FFI_64_BIT_MAX
+# define ffi_type_ulong        ffi_type_uint64
+# define ffi_type_slong        ffi_type_sint64
+#else
+ #error "long size not supported"
+#endif
+
+/* Need minimal decorations for DLLs to works on Windows. */
+/* GCC has autoimport and autoexport.  Rely on Libtool to */
+/* help MSVC export from a DLL, but always declare data   */
+/* to be imported for MSVC clients.  This costs an extra  */
+/* indirection for MSVC clients using the static version  */
+/* of the library, but don't worry about that.  Besides,  */
+/* as a workaround, they can define FFI_BUILDING if they  */
+/* *know* they are going to link with the static library. */
+#if defined _MSC_VER && !defined FFI_BUILDING
+#define FFI_EXTERN extern __declspec(dllimport)
+#else
+#define FFI_EXTERN extern
+#endif
+
+/* These are defined in types.c */
+FFI_EXTERN ffi_type ffi_type_void;
+FFI_EXTERN ffi_type ffi_type_uint8;
+FFI_EXTERN ffi_type ffi_type_sint8;
+FFI_EXTERN ffi_type ffi_type_uint16;
+FFI_EXTERN ffi_type ffi_type_sint16;
+FFI_EXTERN ffi_type ffi_type_uint32;
+FFI_EXTERN ffi_type ffi_type_sint32;
+FFI_EXTERN ffi_type ffi_type_uint64;
+FFI_EXTERN ffi_type ffi_type_sint64;
+FFI_EXTERN ffi_type ffi_type_float;
+FFI_EXTERN ffi_type ffi_type_double;
+FFI_EXTERN ffi_type ffi_type_pointer;
+
+#if 0
+FFI_EXTERN ffi_type ffi_type_longdouble;
+#else
+#define ffi_type_longdouble ffi_type_double
+#endif
+#endif /* LIBFFI_HIDE_BASIC_TYPES */
+
+typedef enum {
+  FFI_OK = 0,
+  FFI_BAD_TYPEDEF,
+  FFI_BAD_ABI
+} ffi_status;
+
+typedef unsigned FFI_TYPE;
+
+typedef struct {
+  ffi_abi abi;
+  unsigned nargs;
+  ffi_type **arg_types;
+  ffi_type *rtype;
+  unsigned bytes;
+  unsigned flags;
+#ifdef FFI_EXTRA_CIF_FIELDS
+  FFI_EXTRA_CIF_FIELDS;
+#endif
+} ffi_cif;
+
+/* Used internally, but overridden by some architectures */
+ffi_status ffi_prep_cif_core(ffi_cif *cif,
+			     ffi_abi abi,
+			     unsigned int isvariadic,
+			     unsigned int nfixedargs,
+			     unsigned int ntotalargs,
+			     ffi_type *rtype,
+			     ffi_type **atypes);
+
+/* ---- Definitions for the raw API -------------------------------------- */
+
+#ifndef FFI_SIZEOF_ARG
+# if LONG_MAX == 2147483647
+#  define FFI_SIZEOF_ARG        4
+# elif LONG_MAX == FFI_64_BIT_MAX
+#  define FFI_SIZEOF_ARG        8
+# endif
+#endif
+
+#ifndef FFI_SIZEOF_JAVA_RAW
+#  define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG
+#endif
+
+typedef union {
+  ffi_sarg  sint;
+  ffi_arg   uint;
+  float	    flt;
+  char      data[FFI_SIZEOF_ARG];
+  void*     ptr;
+} ffi_raw;
+
+#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8
+/* This is a special case for mips64/n32 ABI (and perhaps others) where
+   sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8.  */
+typedef union {
+  signed int	sint;
+  unsigned int	uint;
+  float		flt;
+  char		data[FFI_SIZEOF_JAVA_RAW];
+  void*		ptr;
+} ffi_java_raw;
+#else
+typedef ffi_raw ffi_java_raw;
+#endif
+
+
+void ffi_raw_call (ffi_cif *cif,
+		   void (*fn)(void),
+		   void *rvalue,
+		   ffi_raw *avalue);
+
+void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
+void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
+size_t ffi_raw_size (ffi_cif *cif);
+
+/* This is analogous to the raw API, except it uses Java parameter	*/
+/* packing, even on 64-bit machines.  I.e. on 64-bit machines		*/
+/* longs and doubles are followed by an empty 64-bit word.		*/
+
+void ffi_java_raw_call (ffi_cif *cif,
+			void (*fn)(void),
+			void *rvalue,
+			ffi_java_raw *avalue);
+
+void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw);
+void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args);
+size_t ffi_java_raw_size (ffi_cif *cif);
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#if FFI_CLOSURES
+
+#ifdef _MSC_VER
+__declspec(align(8))
+#endif
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+  ffi_cif   *cif;
+  void     (*fun)(ffi_cif*,void*,void**,void*);
+  void      *user_data;
+#ifdef __GNUC__
+} ffi_closure __attribute__((aligned (8)));
+#else
+} ffi_closure;
+# ifdef __sgi
+#  pragma pack 0
+# endif
+#endif
+
+void *ffi_closure_alloc (size_t size, void **code);
+void ffi_closure_free (void *);
+
+ffi_status
+ffi_prep_closure (ffi_closure*,
+		  ffi_cif *,
+		  void (*fun)(ffi_cif*,void*,void**,void*),
+		  void *user_data);
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure*,
+		      ffi_cif *,
+		      void (*fun)(ffi_cif*,void*,void**,void*),
+		      void *user_data,
+		      void*codeloc);
+
+#ifdef __sgi
+# pragma pack 8
+#endif
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+  ffi_cif   *cif;
+
+#if !FFI_NATIVE_RAW_API
+
+  /* if this is enabled, then a raw closure has the same layout 
+     as a regular closure.  We use this to install an intermediate 
+     handler to do the transaltion, void** -> ffi_raw*. */
+
+  void     (*translate_args)(ffi_cif*,void*,void**,void*);
+  void      *this_closure;
+
+#endif
+
+  void     (*fun)(ffi_cif*,void*,ffi_raw*,void*);
+  void      *user_data;
+
+} ffi_raw_closure;
+
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+
+  ffi_cif   *cif;
+
+#if !FFI_NATIVE_RAW_API
+
+  /* if this is enabled, then a raw closure has the same layout 
+     as a regular closure.  We use this to install an intermediate 
+     handler to do the transaltion, void** -> ffi_raw*. */
+
+  void     (*translate_args)(ffi_cif*,void*,void**,void*);
+  void      *this_closure;
+
+#endif
+
+  void     (*fun)(ffi_cif*,void*,ffi_java_raw*,void*);
+  void      *user_data;
+
+} ffi_java_raw_closure;
+
+ffi_status
+ffi_prep_raw_closure (ffi_raw_closure*,
+		      ffi_cif *cif,
+		      void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+		      void *user_data);
+
+ffi_status
+ffi_prep_raw_closure_loc (ffi_raw_closure*,
+			  ffi_cif *cif,
+			  void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+			  void *user_data,
+			  void *codeloc);
+
+ffi_status
+ffi_prep_java_raw_closure (ffi_java_raw_closure*,
+		           ffi_cif *cif,
+		           void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+		           void *user_data);
+
+ffi_status
+ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
+			       ffi_cif *cif,
+			       void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+			       void *user_data,
+			       void *codeloc);
+
+#endif /* FFI_CLOSURES */
+
+/* ---- Public interface definition -------------------------------------- */
+
+ffi_status ffi_prep_cif(ffi_cif *cif,
+			ffi_abi abi,
+			unsigned int nargs,
+			ffi_type *rtype,
+			ffi_type **atypes);
+
+ffi_status ffi_prep_cif_var(ffi_cif *cif,
+			    ffi_abi abi,
+			    unsigned int nfixedargs,
+			    unsigned int ntotalargs,
+			    ffi_type *rtype,
+			    ffi_type **atypes);
+
+void ffi_call(ffi_cif *cif,
+	      void (*fn)(void),
+	      void *rvalue,
+	      void **avalue);
+
+/* Useful for eliminating compiler warnings */
+#define FFI_FN(f) ((void (*)(void))f)
+
+/* ---- Definitions shared with assembly code ---------------------------- */
+
+#endif
+
+/* If these change, update src/mips/ffitarget.h. */
+#define FFI_TYPE_VOID       0    
+#define FFI_TYPE_INT        1
+#define FFI_TYPE_FLOAT      2    
+#define FFI_TYPE_DOUBLE     3
+#if 0
+#define FFI_TYPE_LONGDOUBLE 4
+#else
+#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
+#endif
+#define FFI_TYPE_UINT8      5   
+#define FFI_TYPE_SINT8      6
+#define FFI_TYPE_UINT16     7 
+#define FFI_TYPE_SINT16     8
+#define FFI_TYPE_UINT32     9
+#define FFI_TYPE_SINT32     10
+#define FFI_TYPE_UINT64     11
+#define FFI_TYPE_SINT64     12
+#define FFI_TYPE_STRUCT     13
+#define FFI_TYPE_POINTER    14
+
+/* This should always refer to the last type code (for sanity checks) */
+#define FFI_TYPE_LAST       FFI_TYPE_POINTER
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dist/usr/lib/libffi-3.0.13/include/ffitarget.h b/dist/usr/lib/libffi-3.0.13/include/ffitarget.h
new file mode 100644
index 0000000..26d494d
--- /dev/null
+++ b/dist/usr/lib/libffi-3.0.13/include/ffitarget.h
@@ -0,0 +1,71 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 2010  CodeSourcery
+                 Copyright (c) 1996-2003  Red Hat, Inc.
+
+   Target configuration macros for ARM.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_VFP,
+  FFI_LAST_ABI,
+#ifdef __ARM_PCS_VFP
+  FFI_DEFAULT_ABI = FFI_VFP,
+#else
+  FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS			\
+  int vfp_used;					\
+  short vfp_reg_free, vfp_nargs;		\
+  signed char vfp_args[16]			\
+
+/* Internally used. */
+#define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 20
+#define FFI_NATIVE_RAW_API 0
+
+#endif
diff --git a/dist/usr/lib/libffi.la b/dist/usr/lib/libffi.la
new file mode 100755
index 0000000..8422370
--- /dev/null
+++ b/dist/usr/lib/libffi.la
@@ -0,0 +1,41 @@
+# libffi.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libffi.so.6'
+
+# Names of this library.
+library_names='libffi.so.6.0.1 libffi.so.6 libffi.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/src/packages/glib/dist/usr/lib'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libffi.
+current=6
+age=0
+revision=1
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libffi.so b/dist/usr/lib/libffi.so
new file mode 120000
index 0000000..60c4ca9
--- /dev/null
+++ b/dist/usr/lib/libffi.so
@@ -0,0 +1 @@
+libffi.so.6.0.1
\ No newline at end of file
diff --git a/dist/usr/lib/libffi.so.6 b/dist/usr/lib/libffi.so.6
new file mode 120000
index 0000000..60c4ca9
--- /dev/null
+++ b/dist/usr/lib/libffi.so.6
@@ -0,0 +1 @@
+libffi.so.6.0.1
\ No newline at end of file
diff --git a/dist/usr/lib/libffi.so.6.0.1 b/dist/usr/lib/libffi.so.6.0.1
new file mode 100755
index 0000000..40f741b
--- /dev/null
+++ b/dist/usr/lib/libffi.so.6.0.1
Binary files differ
diff --git a/dist/usr/lib/libgio-2.0.la b/dist/usr/lib/libgio-2.0.la
new file mode 100755
index 0000000..451bfa0
--- /dev/null
+++ b/dist/usr/lib/libgio-2.0.la
@@ -0,0 +1,41 @@
+# libgio-2.0.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libgio-2.0.so.0'
+
+# Names of this library.
+library_names='libgio-2.0.so.0.3703.0 libgio-2.0.so.0 libgio-2.0.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' /usr/lib/libgobject-2.0.la -L/src/packages/glib/dist/usr/lib /usr/lib/libffi.la /usr/lib/libgmodule-2.0.la -ldl /usr/lib/libglib-2.0.la -lpthread -lrt -L/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib -lz -lresolv'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libgio-2.0.
+current=3703
+age=3703
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libgio-2.0.so b/dist/usr/lib/libgio-2.0.so
new file mode 120000
index 0000000..f21a5f8
--- /dev/null
+++ b/dist/usr/lib/libgio-2.0.so
@@ -0,0 +1 @@
+libgio-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgio-2.0.so.0 b/dist/usr/lib/libgio-2.0.so.0
new file mode 120000
index 0000000..f21a5f8
--- /dev/null
+++ b/dist/usr/lib/libgio-2.0.so.0
@@ -0,0 +1 @@
+libgio-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgio-2.0.so.0.3703.0 b/dist/usr/lib/libgio-2.0.so.0.3703.0
new file mode 100755
index 0000000..4219391
--- /dev/null
+++ b/dist/usr/lib/libgio-2.0.so.0.3703.0
Binary files differ
diff --git a/dist/usr/lib/libglib-2.0.la b/dist/usr/lib/libglib-2.0.la
new file mode 100755
index 0000000..0d0107a
--- /dev/null
+++ b/dist/usr/lib/libglib-2.0.la
@@ -0,0 +1,41 @@
+# libglib-2.0.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libglib-2.0.so.0'
+
+# Names of this library.
+library_names='libglib-2.0.so.0.3703.0 libglib-2.0.so.0 libglib-2.0.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -lrt'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libglib-2.0.
+current=3703
+age=3703
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libglib-2.0.so b/dist/usr/lib/libglib-2.0.so
new file mode 120000
index 0000000..cfe23e0
--- /dev/null
+++ b/dist/usr/lib/libglib-2.0.so
@@ -0,0 +1 @@
+libglib-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libglib-2.0.so.0 b/dist/usr/lib/libglib-2.0.so.0
new file mode 120000
index 0000000..cfe23e0
--- /dev/null
+++ b/dist/usr/lib/libglib-2.0.so.0
@@ -0,0 +1 @@
+libglib-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libglib-2.0.so.0.3703.0 b/dist/usr/lib/libglib-2.0.so.0.3703.0
new file mode 100755
index 0000000..16964c4
--- /dev/null
+++ b/dist/usr/lib/libglib-2.0.so.0.3703.0
Binary files differ
diff --git a/dist/usr/lib/libgmodule-2.0.la b/dist/usr/lib/libgmodule-2.0.la
new file mode 100755
index 0000000..a146d97
--- /dev/null
+++ b/dist/usr/lib/libgmodule-2.0.la
@@ -0,0 +1,41 @@
+# libgmodule-2.0.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libgmodule-2.0.so.0'
+
+# Names of this library.
+library_names='libgmodule-2.0.so.0.3703.0 libgmodule-2.0.so.0 libgmodule-2.0.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -ldl /usr/lib/libglib-2.0.la -lpthread -lrt'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libgmodule-2.0.
+current=3703
+age=3703
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libgmodule-2.0.so b/dist/usr/lib/libgmodule-2.0.so
new file mode 120000
index 0000000..7357b00
--- /dev/null
+++ b/dist/usr/lib/libgmodule-2.0.so
@@ -0,0 +1 @@
+libgmodule-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgmodule-2.0.so.0 b/dist/usr/lib/libgmodule-2.0.so.0
new file mode 120000
index 0000000..7357b00
--- /dev/null
+++ b/dist/usr/lib/libgmodule-2.0.so.0
@@ -0,0 +1 @@
+libgmodule-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgmodule-2.0.so.0.3703.0 b/dist/usr/lib/libgmodule-2.0.so.0.3703.0
new file mode 100755
index 0000000..eef6e05
--- /dev/null
+++ b/dist/usr/lib/libgmodule-2.0.so.0.3703.0
Binary files differ
diff --git a/dist/usr/lib/libgobject-2.0.la b/dist/usr/lib/libgobject-2.0.la
new file mode 100755
index 0000000..37d398c
--- /dev/null
+++ b/dist/usr/lib/libgobject-2.0.la
@@ -0,0 +1,41 @@
+# libgobject-2.0.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libgobject-2.0.so.0'
+
+# Names of this library.
+library_names='libgobject-2.0.so.0.3703.0 libgobject-2.0.so.0 libgobject-2.0.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' /usr/lib/libglib-2.0.la -lpthread -lrt -L/src/packages/glib/dist/usr/lib /usr/lib/libffi.la'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libgobject-2.0.
+current=3703
+age=3703
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libgobject-2.0.so b/dist/usr/lib/libgobject-2.0.so
new file mode 120000
index 0000000..5d3f395
--- /dev/null
+++ b/dist/usr/lib/libgobject-2.0.so
@@ -0,0 +1 @@
+libgobject-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgobject-2.0.so.0 b/dist/usr/lib/libgobject-2.0.so.0
new file mode 120000
index 0000000..5d3f395
--- /dev/null
+++ b/dist/usr/lib/libgobject-2.0.so.0
@@ -0,0 +1 @@
+libgobject-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgobject-2.0.so.0.3703.0 b/dist/usr/lib/libgobject-2.0.so.0.3703.0
new file mode 100755
index 0000000..69d654a
--- /dev/null
+++ b/dist/usr/lib/libgobject-2.0.so.0.3703.0
Binary files differ
diff --git a/dist/usr/lib/libgthread-2.0.la b/dist/usr/lib/libgthread-2.0.la
new file mode 100755
index 0000000..7d507c5
--- /dev/null
+++ b/dist/usr/lib/libgthread-2.0.la
@@ -0,0 +1,41 @@
+# libgthread-2.0.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libgthread-2.0.so.0'
+
+# Names of this library.
+library_names='libgthread-2.0.so.0.3703.0 libgthread-2.0.so.0 libgthread-2.0.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' /usr/lib/libglib-2.0.la -lpthread -lrt'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libgthread-2.0.
+current=3703
+age=3703
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib'
diff --git a/dist/usr/lib/libgthread-2.0.so b/dist/usr/lib/libgthread-2.0.so
new file mode 120000
index 0000000..5185a97
--- /dev/null
+++ b/dist/usr/lib/libgthread-2.0.so
@@ -0,0 +1 @@
+libgthread-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgthread-2.0.so.0 b/dist/usr/lib/libgthread-2.0.so.0
new file mode 120000
index 0000000..5185a97
--- /dev/null
+++ b/dist/usr/lib/libgthread-2.0.so.0
@@ -0,0 +1 @@
+libgthread-2.0.so.0.3703.0
\ No newline at end of file
diff --git a/dist/usr/lib/libgthread-2.0.so.0.3703.0 b/dist/usr/lib/libgthread-2.0.so.0.3703.0
new file mode 100755
index 0000000..086311b
--- /dev/null
+++ b/dist/usr/lib/libgthread-2.0.so.0.3703.0
Binary files differ
diff --git a/dist/usr/lib/pkgconfig/gio-2.0.pc b/dist/usr/lib/pkgconfig/gio-2.0.pc
new file mode 100644
index 0000000..fc4a90d
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gio-2.0.pc
@@ -0,0 +1,18 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+giomoduledir=${libdir}/gio/modules
+glib_compile_schemas=glib-compile-schemas
+glib_compile_resources=glib-compile-resources
+gdbus_codegen=gdbus-codegen
+
+Name: GIO
+Description: glib I/O library
+Version: 2.37.3
+Requires: glib-2.0 gobject-2.0
+Requires.private: gmodule-no-export-2.0
+Libs: -L${libdir} -lgio-2.0
+Libs.private: -L/src/packages/glib/../../a5s_linux_sdk/ambarella/prebuild/third-party/zlib/lib  -lz -lresolv 
+Cflags:
diff --git a/dist/usr/lib/pkgconfig/gio-unix-2.0.pc b/dist/usr/lib/pkgconfig/gio-unix-2.0.pc
new file mode 100644
index 0000000..2ed02c4
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gio-unix-2.0.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: GIO unix specific APIs
+Description: unix specific headers for glib I/O library
+Version: 2.37.3
+Requires: gobject-2.0,gio-2.0
+Libs: -L${libdir} -lgio-2.0
+Cflags: -I${includedir}/gio-unix-2.0/
diff --git a/dist/usr/lib/pkgconfig/glib-2.0.pc b/dist/usr/lib/pkgconfig/glib-2.0.pc
new file mode 100644
index 0000000..2c43665
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/glib-2.0.pc
@@ -0,0 +1,16 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+glib_genmarshal=glib-genmarshal
+gobject_query=gobject-query
+glib_mkenums=glib-mkenums
+
+Name: GLib
+Description: C Utility Library
+Version: 2.37.3
+Requires.private: 
+Libs: -L${libdir} -lglib-2.0 
+Libs.private: -pthread -lrt    
+Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 
diff --git a/dist/usr/lib/pkgconfig/gmodule-2.0.pc b/dist/usr/lib/pkgconfig/gmodule-2.0.pc
new file mode 100644
index 0000000..48fa046
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gmodule-2.0.pc
@@ -0,0 +1,14 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+gmodule_supported=true
+
+Name: GModule
+Description: Dynamic module loader for GLib
+Requires: glib-2.0
+Version: 2.37.3
+Libs: -L${libdir} -Wl,--export-dynamic -lgmodule-2.0 -pthread -lrt
+Libs.private: -ldl
+Cflags: -pthread
diff --git a/dist/usr/lib/pkgconfig/gmodule-export-2.0.pc b/dist/usr/lib/pkgconfig/gmodule-export-2.0.pc
new file mode 100644
index 0000000..48fa046
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gmodule-export-2.0.pc
@@ -0,0 +1,14 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+gmodule_supported=true
+
+Name: GModule
+Description: Dynamic module loader for GLib
+Requires: glib-2.0
+Version: 2.37.3
+Libs: -L${libdir} -Wl,--export-dynamic -lgmodule-2.0 -pthread -lrt
+Libs.private: -ldl
+Cflags: -pthread
diff --git a/dist/usr/lib/pkgconfig/gmodule-no-export-2.0.pc b/dist/usr/lib/pkgconfig/gmodule-no-export-2.0.pc
new file mode 100644
index 0000000..d5d24f6
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gmodule-no-export-2.0.pc
@@ -0,0 +1,14 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+gmodule_supported=true
+
+Name: GModule
+Description: Dynamic module loader for GLib
+Requires: glib-2.0
+Version: 2.37.3
+Libs: -L${libdir} -lgmodule-2.0 -pthread -lrt
+Libs.private: -ldl
+Cflags: -pthread
diff --git a/dist/usr/lib/pkgconfig/gobject-2.0.pc b/dist/usr/lib/pkgconfig/gobject-2.0.pc
new file mode 100644
index 0000000..0c46449
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gobject-2.0.pc
@@ -0,0 +1,12 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: GObject
+Description: GLib Type, Object, Parameter and Signal Library
+Requires: glib-2.0
+Version: 2.37.3
+Libs: -L${libdir} -lgobject-2.0
+Libs.private: -L/src/packages/glib/dist/usr/lib -lffi
+Cflags:
diff --git a/dist/usr/lib/pkgconfig/gthread-2.0.pc b/dist/usr/lib/pkgconfig/gthread-2.0.pc
new file mode 100644
index 0000000..6a472b8
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/gthread-2.0.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: GThread
+Description: Thread support for GLib
+Requires: glib-2.0
+Version: 2.37.3
+Libs: -L${libdir} -lgthread-2.0 -pthread -lrt
+Cflags: -pthread
diff --git a/dist/usr/lib/pkgconfig/libffi.pc b/dist/usr/lib/pkgconfig/libffi.pc
new file mode 100644
index 0000000..07d4d66
--- /dev/null
+++ b/dist/usr/lib/pkgconfig/libffi.pc
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${libdir}/libffi-3.0.13/include
+
+Name: libffi
+Description: Library supporting Foreign Function Interfaces
+Version: 3.0.13
+Libs: -L${libdir} -lffi
+Cflags: -I${includedir}
diff --git a/dist/usr/share/aclocal/glib-2.0.m4 b/dist/usr/share/aclocal/glib-2.0.m4
new file mode 100644
index 0000000..0507b76
--- /dev/null
+++ b/dist/usr/share/aclocal/glib-2.0.m4
@@ -0,0 +1,214 @@
+# Configure paths for GLIB
+# Owen Taylor     1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
+dnl gthread, or gio is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GLIB_2_0],
+[dnl 
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and run a test GLIB program],
+		    , enable_glibtest=yes)
+
+  pkg_config_args=glib-2.0
+  for module in . $4
+  do
+      case "$module" in
+         gmodule) 
+             pkg_config_args="$pkg_config_args gmodule-2.0"
+         ;;
+         gmodule-no-export) 
+             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+         ;;
+         gobject) 
+             pkg_config_args="$pkg_config_args gobject-2.0"
+         ;;
+         gthread) 
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+         gio*) 
+             pkg_config_args="$pkg_config_args $module-2.0"
+         ;;
+      esac
+  done
+
+  PKG_PROG_PKG_CONFIG([0.16])
+
+  no_glib=""
+
+  if test "x$PKG_CONFIG" = x ; then
+    no_glib=yes
+    PKG_CONFIG=no
+  fi
+
+  min_glib_version=ifelse([$1], ,2.0.0,$1)
+  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+	  echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+	  enable_glibtest=no
+    fi
+
+    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+	  :
+    else
+	  no_glib=yes
+    fi
+  fi
+
+  if test x"$no_glib" = x ; then
+    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
+
+    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_glibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GLIB_CFLAGS"
+      LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+      rm -f conf.glibtest
+      AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  unsigned int major, minor, micro;
+  char *tmp_version;
+
+  fclose (fopen ("conf.glibtest", "w"));
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_glib_version");
+  if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_glib_version");
+     exit(1);
+   }
+
+  if ((glib_major_version != $glib_config_major_version) ||
+      (glib_minor_version != $glib_config_minor_version) ||
+      (glib_micro_version != $glib_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
+             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+             glib_major_version, glib_minor_version, glib_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    } 
+  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+	   (glib_minor_version != GLIB_MINOR_VERSION) ||
+           (glib_micro_version != GLIB_MICRO_VERSION))
+    {
+      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+	     GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+	     glib_major_version, glib_minor_version, glib_micro_version);
+    }
+  else
+    {
+      if ((glib_major_version > major) ||
+        ((glib_major_version == major) && (glib_minor_version > minor)) ||
+        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
+               glib_major_version, glib_minor_version, glib_micro_version);
+        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
+	       major, minor, micro);
+        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_glib" = x ; then
+     AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+     else
+       if test -f conf.glibtest ; then
+        :
+       else
+          echo "*** Could not run GLIB test program, checking why..."
+          ac_save_CFLAGS="$CFLAGS"
+          ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GLIB_CFLAGS"
+          LIBS="$LIBS $GLIB_LIBS"
+          AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+	  echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GLIB_CFLAGS=""
+     GLIB_LIBS=""
+     GLIB_GENMARSHAL=""
+     GOBJECT_QUERY=""
+     GLIB_MKENUMS=""
+     GLIB_COMPILE_RESOURCES=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GLIB_CFLAGS)
+  AC_SUBST(GLIB_LIBS)
+  AC_SUBST(GLIB_GENMARSHAL)
+  AC_SUBST(GOBJECT_QUERY)
+  AC_SUBST(GLIB_MKENUMS)
+  AC_SUBST(GLIB_COMPILE_RESOURCES)
+  rm -f conf.glibtest
+])
diff --git a/dist/usr/share/aclocal/glib-gettext.m4 b/dist/usr/share/aclocal/glib-gettext.m4
new file mode 100644
index 0000000..5217fd8
--- /dev/null
+++ b/dist/usr/share/aclocal/glib-gettext.m4
@@ -0,0 +1,435 @@
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl. 
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version 
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't 
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+	ac_cv_path_$1="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+  dnl NLS is obligatory
+  [USE_NLS=yes
+    AC_SUBST(USE_NLS)
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+	  gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+        	[AC_TRY_LINK([
+#include <libintl.h>
+],
+	          [return !dgettext ("","")],
+		  gt_cv_func_dgettext_libc=yes,
+	          gt_cv_func_dgettext_libc=no)
+        	])
+      fi
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+        
+        AC_CHECK_LIB(intl, bindtextdomain,
+	    [AC_CHECK_LIB(intl, ngettext,
+		    [AC_CHECK_LIB(intl, dgettext,
+			          gt_cv_func_dgettext_libintl=yes)])])
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
+	  AC_MSG_RESULT([])
+  	  AC_CHECK_LIB(intl, ngettext,
+          	[AC_CHECK_LIB(intl, dcgettext,
+		       [gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv],
+			:,-liconv)],
+		:,-liconv)
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+  
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+  
+      if test "$gt_cv_have_gettext" = "yes"; then
+	AC_DEFINE(HAVE_GETTEXT,1,
+	  [Define if the GNU gettext() function is already present or preinstalled.])
+	GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+	  AC_CHECK_FUNCS(dcgettext)
+	  MSGFMT_OPTS=
+	  AC_MSG_CHECKING([if msgfmt accepts -c])
+	  GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+	  AC_SUBST(MSGFMT_OPTS)
+	  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+	  GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+	  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr],
+	    [CATOBJEXT=.gmo 
+             DATADIRNAME=share],
+	    [case $host in
+	    *-*-solaris*)
+	    dnl On Solaris, if bind_textdomain_codeset is in libc,
+	    dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+	    dnl Hence, we'd like to go with DATADIRNAME=share and
+	    dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+	      [CATOBJEXT=.gmo 
+               DATADIRNAME=share],
+	      [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+	    ;;
+	    *-*-openbsd*)
+	    CATOBJEXT=.mo
+            DATADIRNAME=share
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac])
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+    ])
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [always defined to indicate that i18n is enabled])
+    fi
+
+    dnl Test whether we really found GNU xgettext.
+    if test "$XGETTEXT" != ":"; then
+      dnl If it is not GNU xgettext we define it as : so that the
+      dnl Makefiles still can work.
+      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        AC_MSG_RESULT(
+	  [found xgettext program is not GNU xgettext; ignore it])
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+    AC_OUTPUT_COMMANDS(
+      [case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac])
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.ac.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation 
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by 
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_ac,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+# 
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM.  Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+  m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
+
diff --git a/dist/usr/share/aclocal/gsettings.m4 b/dist/usr/share/aclocal/gsettings.m4
new file mode 100644
index 0000000..7b2f9a2
--- /dev/null
+++ b/dist/usr/share/aclocal/gsettings.m4
@@ -0,0 +1,83 @@
+dnl GLIB_GSETTINGS
+dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether
+dnl the schema should be compiled
+dnl
+
+AC_DEFUN([GLIB_GSETTINGS],
+[
+  m4_pattern_allow([AM_V_GEN])
+  AC_ARG_ENABLE(schemas-compile,
+                AS_HELP_STRING([--disable-schemas-compile],
+                               [Disable regeneration of gschemas.compiled on install]),
+                [case ${enableval} in
+                  yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE=""  ;;
+                  no)  GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;;
+                  *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-compile]) ;;
+                 esac])
+  AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE])
+  PKG_PROG_PKG_CONFIG([0.16])
+  AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas])
+  if test x$cross_compiling != xyes; then
+    GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
+  else
+    AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
+  fi
+  AC_SUBST(GLIB_COMPILE_SCHEMAS)
+  if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
+    ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2])
+  else
+    ifelse([$1],,[:],[$1])
+  fi
+
+  GSETTINGS_RULES='
+.PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas
+
+mostlyclean-am: clean-gsettings-schemas
+
+gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE))
+
+%.gschema.valid: %.gschema.xml $(gsettings__enum_file)
+	$(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$${d}$< && touch [$]@
+
+all-am: $(gsettings_SCHEMAS:.xml=.valid)
+uninstall-am: uninstall-gsettings-schemas
+install-data-am: install-gsettings-schemas
+
+.SECONDARY: $(gsettings_SCHEMAS)
+
+install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file)
+	@$(NORMAL_INSTALL)
+	if test -n "$^"; then \
+		test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \
+		$(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \
+		test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \
+	fi
+
+uninstall-gsettings-schemas:
+	@$(NORMAL_UNINSTALL)
+	@list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files
+	test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir)
+
+clean-gsettings-schemas:
+	rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file)
+
+ifdef gsettings_ENUM_NAMESPACE
+$(gsettings__enum_file): $(gsettings_ENUM_FILES)
+	$(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@
+endif
+'
+  _GSETTINGS_SUBST(GSETTINGS_RULES)
+])
+
+dnl _GSETTINGS_SUBST(VARIABLE)
+dnl Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+AC_DEFUN([_GSETTINGS_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
diff --git a/dist/usr/share/bash-completion/completions/gdbus b/dist/usr/share/bash-completion/completions/gdbus
new file mode 100644
index 0000000..79f4cb4
--- /dev/null
+++ b/dist/usr/share/bash-completion/completions/gdbus
@@ -0,0 +1,33 @@
+
+# Check for bash
+[ -z "$BASH_VERSION" ] && return
+
+####################################################################################################
+
+
+__gdbus() {
+    local IFS=$'\n'
+    local cur=`_get_cword :`
+
+    local suggestions=$(gdbus complete "${COMP_LINE}" ${COMP_POINT})
+    COMPREPLY=($(compgen -W "$suggestions" -- "$cur"))
+
+    # Remove colon-word prefix from COMPREPLY items
+    case "$cur" in
+        *:*)
+            case "$COMP_WORDBREAKS" in
+                *:*)
+                    local colon_word=${cur%${cur##*:}}
+                    local i=${#COMPREPLY[*]}
+                    while [ $((--i)) -ge 0 ]; do
+                        COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
+                    done
+                    ;;
+            esac
+            ;;
+    esac
+}
+
+####################################################################################################
+
+complete -o nospace -F __gdbus gdbus
diff --git a/dist/usr/share/bash-completion/completions/gresource b/dist/usr/share/bash-completion/completions/gresource
new file mode 100644
index 0000000..ef1145d
--- /dev/null
+++ b/dist/usr/share/bash-completion/completions/gresource
@@ -0,0 +1,58 @@
+
+# Check for bash
+[ -z "$BASH_VERSION" ] && return
+
+####################################################################################################
+
+__gresource() {
+  local choices coffset section
+
+  if [ ${COMP_CWORD} -gt 2 ]; then
+      if [ ${COMP_WORDS[1]} = --section ]; then
+          section=${COMP_WORDS[2]}
+          coffset=2
+      else
+          coffset=0
+      fi
+  else
+      coffset=0
+  fi
+
+  case "$((${COMP_CWORD}-$coffset))" in
+    1)
+      choices=$'--section \nhelp \nsections \nlist \ndetails \nextract '
+      ;;
+
+    2)
+      case "${COMP_WORDS[$(($coffset+1))]}" in
+        --section)
+          return 0
+          ;;
+
+        help)
+          choices=$'sections\nlist\ndetails\nextract'
+          ;;
+
+        sections|list|details|extract)
+          COMPREPLY=($(compgen -f -- ${COMP_WORDS[${COMP_CWORD}]}))
+          return 0
+          ;;
+      esac
+      ;;
+
+    3)
+      case "${COMP_WORDS[$(($coffset+1))]}" in
+        list|details|extract)
+          choices="$(gresource list ${COMP_WORDS[$(($coffset+2))]} 2> /dev/null | sed -e 's.$. .')"
+          ;;
+      esac
+      ;;
+  esac
+
+  local IFS=$'\n'
+  COMPREPLY=($(compgen -W "${choices}" -- "${COMP_WORDS[${COMP_CWORD}]}"))
+}
+
+####################################################################################################
+
+complete -o nospace -F __gresource gresource
diff --git a/dist/usr/share/bash-completion/completions/gsettings b/dist/usr/share/bash-completion/completions/gsettings
new file mode 100644
index 0000000..21f5c6d
--- /dev/null
+++ b/dist/usr/share/bash-completion/completions/gsettings
@@ -0,0 +1,84 @@
+
+# Check for bash
+[ -z "$BASH_VERSION" ] && return
+
+####################################################################################################
+
+__gsettings() {
+  local choices coffset schemadir
+
+  if [ ${COMP_CWORD} -gt 2 ]; then
+      if [ ${COMP_WORDS[1]} = --schemadir ]; then
+	  # this complexity is needed to perform correct tilde expansion
+	  schemadir=$(eval "echo --schemadir ${COMP_WORDS[2]}")
+	  coffset=2
+      else
+	  coffset=0
+      fi
+  else
+      coffset=0
+  fi
+
+  case "$((${COMP_CWORD}-$coffset))" in
+    1)
+      choices=$'--schemadir\n--version\nhelp \nlist-schemas\nlist-relocatable-schemas\nlist-keys \nlist-children \nlist-recursively \nget \nrange \nset \nreset \nreset-recursively \nwritable \nmonitor'
+      ;;
+
+    2)
+      case "${COMP_WORDS[$(($coffset+1))]}" in
+	--schemadir)
+	  COMPREPLY=($(compgen -o dirnames -- ${COMP_WORDS[${COMP_CWORD}]}))
+	  return 0
+	  ;;
+
+        help)
+          choices=$'list-schemas\nlist-relocatable-schemas\nlist-keys\nlist-children\nlist-recursively\nget\nrange\nset\nreset\nreset-recursively\nwritable\nmonitor'
+          ;;
+        list-keys|list-children|list-recursively|reset-recursively)
+          choices="$(gsettings $schemadir list-schemas)"$'\n'"$(gsettings $schemadir list-relocatable-schemas | sed -e 's.$.:/.')"
+          ;;
+
+        get|range|set|reset|writable|monitor)
+          choices="$(gsettings $schemadir list-schemas | sed -e 's.$. .')"$'\n'"$(gsettings $schemadir list-relocatable-schemas | sed -e 's.$.:/.')"
+          ;;
+      esac
+      ;;
+
+    3)
+      case "${COMP_WORDS[$(($coffset+1))]}" in
+        set)
+          choices="$(gsettings $schemadir list-keys ${COMP_WORDS[$(($coffset+2))]} 2> /dev/null | sed -e 's.$. .')"
+          ;;
+
+        get|range|reset|writable|monitor)
+          choices="$(gsettings $schemadir list-keys ${COMP_WORDS[$(($coffset+2))]} 2> /dev/null)"
+          ;;
+      esac
+      ;;
+
+    4)
+      case "${COMP_WORDS[$(($coffset+2))]}" in
+        set)
+          range=($(gsettings $schemadir range ${COMP_WORDS[$(($coffset+2))]} ${COMP_WORDS[$(($coffset+3))]} 2> /dev/null))
+          case "${range[0]}" in
+            enum)
+              unset range[0]
+             ;;
+            *)
+              unset range
+             ;;
+          esac
+          local IFS=$'\n'
+          choices="${range[*]}"
+          ;;
+      esac
+      ;;
+  esac
+
+  local IFS=$'\n'
+  COMPREPLY=($(compgen -W "${choices}" -- "${COMP_WORDS[${COMP_CWORD}]}"))
+}
+
+####################################################################################################
+
+complete -o nospace -F __gsettings gsettings
diff --git a/dist/usr/share/gdb/auto-load/libglib-2.0.so.0.3703.0-gdb.py b/dist/usr/share/gdb/auto-load/libglib-2.0.so.0.3703.0-gdb.py
new file mode 100755
index 0000000..73ab5ba
--- /dev/null
+++ b/dist/usr/share/gdb/auto-load/libglib-2.0.so.0.3703.0-gdb.py
@@ -0,0 +1,10 @@
+import sys
+import gdb
+
+# Update module path.
+dir_ = '/usr/share/glib-2.0/gdb'
+if not dir_ in sys.path:
+    sys.path.insert(0, dir_)
+
+from glib import register
+register (gdb.current_objfile ())
diff --git a/dist/usr/share/gdb/auto-load/libgobject-2.0.so.0.3703.0-gdb.py b/dist/usr/share/gdb/auto-load/libgobject-2.0.so.0.3703.0-gdb.py
new file mode 100755
index 0000000..5eb68de
--- /dev/null
+++ b/dist/usr/share/gdb/auto-load/libgobject-2.0.so.0.3703.0-gdb.py
@@ -0,0 +1,10 @@
+import sys
+import gdb
+
+# Update module path.
+dir_ = '/usr/share/glib-2.0/gdb'
+if not dir_ in sys.path:
+    sys.path.insert(0, dir_)
+
+from gobject import register
+register (gdb.current_objfile ())
diff --git a/dist/usr/share/glib-2.0/codegen/__init__.py b/dist/usr/share/glib-2.0/codegen/__init__.py
new file mode 100644
index 0000000..abfca81
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/__init__.py
@@ -0,0 +1,29 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import os
+
+builddir = os.environ.get('UNINSTALLED_GLIB_BUILDDIR')
+
+if builddir is not None:
+    __path__.append(os.path.abspath(os.path.join(builddir, 'gio', 'gdbus-2.0', 'codegen')))
diff --git a/dist/usr/share/glib-2.0/codegen/__init__.pyc b/dist/usr/share/glib-2.0/codegen/__init__.pyc
new file mode 100644
index 0000000..b42c67f
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/__init__.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/__init__.pyo b/dist/usr/share/glib-2.0/codegen/__init__.pyo
new file mode 100644
index 0000000..b42c67f
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/__init__.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen.py b/dist/usr/share/glib-2.0/codegen/codegen.py
new file mode 100644
index 0000000..3a3af43
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen.py
@@ -0,0 +1,3373 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import sys
+
+from . import config
+from . import utils
+from . import dbustypes
+
+# ----------------------------------------------------------------------------------------------------
+
+class CodeGenerator:
+    def __init__(self, ifaces, namespace, interface_prefix, generate_objmanager, docbook_gen, h, c):
+        self.docbook_gen = docbook_gen
+        self.generate_objmanager = generate_objmanager
+        self.ifaces = ifaces
+        self.h = h
+        self.c = c
+        self.namespace = namespace
+        if len(namespace) > 0:
+            if utils.is_ugly_case(namespace):
+                self.namespace = namespace.replace('_', '')
+                self.ns_upper = namespace.upper() + '_'
+                self.ns_lower = namespace.lower() + '_'
+            else:
+                self.ns_upper = utils.camel_case_to_uscore(namespace).upper() + '_'
+                self.ns_lower = utils.camel_case_to_uscore(namespace).lower() + '_'
+        else:
+            self.ns_upper = ''
+            self.ns_lower = ''
+        self.interface_prefix = interface_prefix
+        self.header_guard = self.h.name.upper().replace('.', '_').replace('-', '_').replace('/', '_')
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def generate_intro(self):
+        self.c.write('/*\n'
+                     ' * Generated by gdbus-codegen %s. DO NOT EDIT.\n'
+                     ' *\n'
+                     ' * The license of this code is the same as for the source it was derived from.\n'
+                     ' */\n'
+                     '\n'
+                     %(config.VERSION))
+        self.c.write('#ifdef HAVE_CONFIG_H\n'
+                     '#  include "config.h"\n'
+                     '#endif\n'
+                     '\n'
+                     '#include "%s"\n'
+                     '\n'
+                     '#include <string.h>\n'
+                     %(self.h.name))
+
+        self.c.write('#ifdef G_OS_UNIX\n'
+                     '#  include <gio/gunixfdlist.h>\n'
+                     '#endif\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  GDBusArgInfo parent_struct;\n'
+                     '  gboolean use_gvariant;\n'
+                     '} _ExtendedGDBusArgInfo;\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  GDBusMethodInfo parent_struct;\n'
+                     '  const gchar *signal_name;\n'
+                     '  gboolean pass_fdlist;\n'
+                     '} _ExtendedGDBusMethodInfo;\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  GDBusSignalInfo parent_struct;\n'
+                     '  const gchar *signal_name;\n'
+                     '} _ExtendedGDBusSignalInfo;\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  GDBusPropertyInfo parent_struct;\n'
+                     '  const gchar *hyphen_name;\n'
+                     '  gboolean use_gvariant;\n'
+                     '} _ExtendedGDBusPropertyInfo;\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  GDBusInterfaceInfo parent_struct;\n'
+                     '  const gchar *hyphen_name;\n'
+                     '} _ExtendedGDBusInterfaceInfo;\n'
+                     '\n')
+
+        self.c.write('typedef struct\n'
+                     '{\n'
+                     '  const _ExtendedGDBusPropertyInfo *info;\n'
+                     '  guint prop_id;\n'
+                     '  GValue orig_value; /* the value before the change */\n'
+                     '} ChangedProperty;\n'
+                     '\n'
+                     'static void\n'
+                     '_changed_property_free (ChangedProperty *data)\n'
+                     '{\n'
+                     '  g_value_unset (&data->orig_value);\n'
+                     '  g_free (data);\n'
+                     '}\n'
+                     '\n')
+
+        self.c.write('static gboolean\n'
+                     '_g_strv_equal0 (gchar **a, gchar **b)\n'
+                     '{\n'
+                     '  gboolean ret = FALSE;\n'
+                     '  guint n;\n'
+                     '  if (a == NULL && b == NULL)\n'
+                     '    {\n'
+                     '      ret = TRUE;\n'
+                     '      goto out;\n'
+                     '    }\n'
+                     '  if (a == NULL || b == NULL)\n'
+                     '    goto out;\n'
+                     '  if (g_strv_length (a) != g_strv_length (b))\n'
+                     '    goto out;\n'
+                     '  for (n = 0; a[n] != NULL; n++)\n'
+                     '    if (g_strcmp0 (a[n], b[n]) != 0)\n'
+                     '      goto out;\n'
+                     '  ret = TRUE;\n'
+                     'out:\n'
+                     '  return ret;\n'
+                     '}\n'
+                     '\n')
+
+        self.c.write('static gboolean\n'
+                     '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
+                     '{\n'
+                     '  gboolean ret = FALSE;\n'
+                     '  if (a == NULL && b == NULL)\n'
+                     '    {\n'
+                     '      ret = TRUE;\n'
+                     '      goto out;\n'
+                     '    }\n'
+                     '  if (a == NULL || b == NULL)\n'
+                     '    goto out;\n'
+                     '  ret = g_variant_equal (a, b);\n'
+                     'out:\n'
+                     '  return ret;\n'
+                     '}\n'
+                     '\n')
+
+        # simplified - only supports the types we use
+        self.c.write('G_GNUC_UNUSED static gboolean\n'
+                     '_g_value_equal (const GValue *a, const GValue *b)\n'
+                     '{\n'
+                     '  gboolean ret = FALSE;\n'
+                     '  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
+                     '  switch (G_VALUE_TYPE (a))\n'
+                     '    {\n'
+                     '      case G_TYPE_BOOLEAN:\n'
+                     '        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_UCHAR:\n'
+                     '        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_INT:\n'
+                     '        ret = (g_value_get_int (a) == g_value_get_int (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_UINT:\n'
+                     '        ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_INT64:\n'
+                     '        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_UINT64:\n'
+                     '        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
+                     '        break;\n'
+                     '      case G_TYPE_DOUBLE:\n'
+                     '        {\n'
+                     '          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
+                     '          gdouble da = g_value_get_double (a);\n'
+                     '          gdouble db = g_value_get_double (b);\n'
+                     '          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
+                     '        }\n'
+                     '        break;\n'
+                     '      case G_TYPE_STRING:\n'
+                     '        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);\n'
+                     '        break;\n'
+                     '      case G_TYPE_VARIANT:\n'
+                     '        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));\n'
+                     '        break;\n'
+                     '      default:\n'
+                     '        if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
+                     '          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
+                     '        else\n'
+                     '          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));\n'
+                     '        break;\n'
+                     '    }\n'
+                     '  return ret;\n'
+                     '}\n'
+                     '\n')
+
+        self.h.write('/*\n'
+                     ' * Generated by gdbus-codegen %s. DO NOT EDIT.\n'
+                     ' *\n'
+                     ' * The license of this code is the same as for the source it was derived from.\n'
+                     ' */\n'
+                     '\n'
+                     '#ifndef __%s__\n'
+                     '#define __%s__\n'
+                     '\n'%(config.VERSION, self.header_guard, self.header_guard))
+        self.h.write('#include <gio/gio.h>\n'
+                     '\n'
+                     'G_BEGIN_DECLS\n'
+                     '\n')
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def declare_types(self):
+        for i in self.ifaces:
+            self.h.write('\n')
+            self.h.write('/* ------------------------------------------------------------------------ */\n')
+            self.h.write('/* Declarations for %s */\n'%i.name)
+            self.h.write('\n')
+
+            # First the GInterface
+            self.h.write('#define %sTYPE_%s (%s_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+            self.h.write('#define %s%s(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s, %s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %sIS_%s(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+            self.h.write('#define %s%s_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_%s, %sIface))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('\n')
+            self.h.write('struct _%s;\n'%(i.camel_name))
+            self.h.write('typedef struct _%s %s;\n'%(i.camel_name, i.camel_name))
+            self.h.write('typedef struct _%sIface %sIface;\n'%(i.camel_name, i.camel_name))
+            self.h.write('\n')
+            self.h.write('struct _%sIface\n'%(i.camel_name))
+            self.h.write('{\n')
+            self.h.write('  GTypeInterface parent_iface;\n')
+
+            function_pointers = {}
+
+            # vfuncs for methods
+            if len(i.methods) > 0:
+                self.h.write('\n')
+                for m in i.methods:
+                    unix_fd = False
+                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                        unix_fd = True
+                    key = (m.since, '_method_%s'%m.name_lower)
+                    value  = '  gboolean (*handle_%s) (\n'%(m.name_lower)
+                    value += '    %s *object,\n'%(i.camel_name)
+                    value += '    GDBusMethodInvocation *invocation'%()
+                    if unix_fd:
+                        value += ',\n    GUnixFDList *fd_list'
+                    for a in m.in_args:
+                        value += ',\n    %sarg_%s'%(a.ctype_in, a.name)
+                    value += ');\n\n'
+                    function_pointers[key] = value
+
+            # vfuncs for signals
+            if len(i.signals) > 0:
+                self.h.write('\n')
+                for s in i.signals:
+                    key = (s.since, '_signal_%s'%s.name_lower)
+                    value  = '  void (*%s) (\n'%(s.name_lower)
+                    value += '    %s *object'%(i.camel_name)
+                    for a in s.args:
+                        value += ',\n    %sarg_%s'%(a.ctype_in, a.name)
+                    value += ');\n\n'
+                    function_pointers[key] = value
+
+            # vfuncs for properties
+            if len(i.properties) > 0:
+                self.h.write('\n')
+                for p in i.properties:
+                    key = (p.since, '_prop_get_%s'%p.name_lower)
+                    value = '  %s (*get_%s) (%s *object);\n\n'%(p.arg.ctype_in, p.name_lower, i.camel_name)
+                    function_pointers[key] = value
+
+            # Sort according to @since tag, then name.. this ensures
+            # that the function pointers don't change order assuming
+            # judicious use of @since
+            #
+            # Also use a proper version comparison function so e.g.
+            # 10.0 comes after 2.0.
+            #
+            # See https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5
+            # for discussion
+            for key in sorted(function_pointers.keys(), key=utils.version_cmp_key):
+                self.h.write('%s'%function_pointers[key])
+
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+            self.h.write('\n')
+            self.h.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
+            self.h.write('guint %s_override_properties (GObjectClass *klass, guint property_id_begin);\n'%(i.name_lower))
+            self.h.write('\n')
+
+            # Then method call completion functions
+            if len(i.methods) > 0:
+                self.h.write('\n')
+                self.h.write('/* D-Bus method call completion functions: */\n')
+                for m in i.methods:
+                    unix_fd = False
+                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                        unix_fd = True
+                    if m.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('void %s_complete_%s (\n'
+                                 '    %s *object,\n'
+                                 '    GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
+                    if unix_fd:
+                        self.h.write(',\n    GUnixFDList *fd_list')
+                    for a in m.out_args:
+                        self.h.write(',\n    %s%s'%(a.ctype_in, a.name))
+                    self.h.write(');\n')
+                    self.h.write('\n')
+                self.h.write('\n')
+
+            # Then signal emission functions
+            if len(i.signals) > 0:
+                self.h.write('\n')
+                self.h.write('/* D-Bus signal emissions functions: */\n')
+                for s in i.signals:
+                    if s.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('void %s_emit_%s (\n'
+                                 '    %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+                    for a in s.args:
+                        self.h.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+                    self.h.write(');\n')
+                    self.h.write('\n')
+                self.h.write('\n')
+
+            # Then method call declarations
+            if len(i.methods) > 0:
+                self.h.write('\n')
+                self.h.write('/* D-Bus method calls: */\n')
+                for m in i.methods:
+                    unix_fd = False
+                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                        unix_fd = True
+                    # async begin
+                    if m.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('void %s_call_%s (\n'
+                                 '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+                    for a in m.in_args:
+                        self.h.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+                    if unix_fd:
+                        self.h.write(',\n    GUnixFDList *fd_list')
+                    self.h.write(',\n'
+                                 '    GCancellable *cancellable,\n'
+                                 '    GAsyncReadyCallback callback,\n'
+                                 '    gpointer user_data);\n')
+                    self.h.write('\n')
+                    # async finish
+                    if m.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('gboolean %s_call_%s_finish (\n'
+                                 '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+                    for a in m.out_args:
+                        self.h.write(',\n    %sout_%s'%(a.ctype_out, a.name))
+                    if unix_fd:
+                        self.h.write(',\n    GUnixFDList **out_fd_list')
+                    self.h.write(',\n'
+                                 '    GAsyncResult *res,\n'
+                                 '    GError **error);\n')
+                    self.h.write('\n')
+                    # sync
+                    if m.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('gboolean %s_call_%s_sync (\n'
+                                 '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+                    for a in m.in_args:
+                        self.h.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+                    if unix_fd:
+                        self.h.write(',\n    GUnixFDList  *fd_list')
+                    for a in m.out_args:
+                        self.h.write(',\n    %sout_%s'%(a.ctype_out, a.name))
+                    if unix_fd:
+                        self.h.write(',\n    GUnixFDList **out_fd_list')
+                    self.h.write(',\n'
+                                 '    GCancellable *cancellable,\n'
+                                 '    GError **error);\n')
+                    self.h.write('\n')
+                self.h.write('\n')
+
+            # Then the property accessor declarations
+            if len(i.properties) > 0:
+                self.h.write('\n')
+                self.h.write('/* D-Bus property accessors: */\n')
+                for p in i.properties:
+                    # getter
+                    if p.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('%s%s_get_%s (%s *object);\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+                    if p.arg.free_func != None:
+                        if p.deprecated:
+                            self.h.write('G_GNUC_DEPRECATED ')
+                        self.h.write('%s%s_dup_%s (%s *object);\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name))
+                    # setter
+                    if p.deprecated:
+                        self.h.write('G_GNUC_DEPRECATED ')
+                    self.h.write('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
+                    self.h.write('\n')
+
+            # Then the proxy
+            self.h.write('\n')
+            self.h.write('/* ---- */\n')
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_%s_PROXY (%s_proxy_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+            self.h.write('#define %s%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_PROXY, %sProxy))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %s%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %s%s_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %sIS_%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+            self.h.write('#define %sIS_%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+            self.h.write('\n')
+            self.h.write('typedef struct _%sProxy %sProxy;\n'%(i.camel_name, i.camel_name))
+            self.h.write('typedef struct _%sProxyClass %sProxyClass;\n'%(i.camel_name, i.camel_name))
+            self.h.write('typedef struct _%sProxyPrivate %sProxyPrivate;\n'%(i.camel_name, i.camel_name))
+            self.h.write('\n')
+            self.h.write('struct _%sProxy\n'%(i.camel_name))
+            self.h.write('{\n')
+            self.h.write('  /*< private >*/\n')
+            self.h.write('  GDBusProxy parent_instance;\n')
+            self.h.write('  %sProxyPrivate *priv;\n'%(i.camel_name))
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('struct _%sProxyClass\n'%(i.camel_name))
+            self.h.write('{\n')
+            self.h.write('  GDBusProxyClass parent_class;\n')
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+
+            self.h.write('\n')
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('void %s_proxy_new (\n'
+                         '    GDBusConnection     *connection,\n'
+                         '    GDBusProxyFlags      flags,\n'
+                         '    const gchar         *name,\n'
+                         '    const gchar         *object_path,\n'
+                         '    GCancellable        *cancellable,\n'
+                         '    GAsyncReadyCallback  callback,\n'
+                         '    gpointer             user_data);\n'
+                         %(i.name_lower))
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('%s *%s_proxy_new_finish (\n'
+                         '    GAsyncResult        *res,\n'
+                         '    GError             **error);\n'
+                         %(i.camel_name, i.name_lower))
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('%s *%s_proxy_new_sync (\n'
+                         '    GDBusConnection     *connection,\n'
+                         '    GDBusProxyFlags      flags,\n'
+                         '    const gchar         *name,\n'
+                         '    const gchar         *object_path,\n'
+                         '    GCancellable        *cancellable,\n'
+                         '    GError             **error);\n'
+                         %(i.camel_name, i.name_lower))
+            self.h.write('\n')
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('void %s_proxy_new_for_bus (\n'
+                         '    GBusType             bus_type,\n'
+                         '    GDBusProxyFlags      flags,\n'
+                         '    const gchar         *name,\n'
+                         '    const gchar         *object_path,\n'
+                         '    GCancellable        *cancellable,\n'
+                         '    GAsyncReadyCallback  callback,\n'
+                         '    gpointer             user_data);\n'
+                         %(i.name_lower))
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('%s *%s_proxy_new_for_bus_finish (\n'
+                         '    GAsyncResult        *res,\n'
+                         '    GError             **error);\n'
+                         %(i.camel_name, i.name_lower))
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('%s *%s_proxy_new_for_bus_sync (\n'
+                         '    GBusType             bus_type,\n'
+                         '    GDBusProxyFlags      flags,\n'
+                         '    const gchar         *name,\n'
+                         '    const gchar         *object_path,\n'
+                         '    GCancellable        *cancellable,\n'
+                         '    GError             **error);\n'
+                         %(i.camel_name, i.name_lower))
+            self.h.write('\n')
+
+            # Then the skeleton
+            self.h.write('\n')
+            self.h.write('/* ---- */\n')
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_%s_SKELETON (%s_skeleton_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+            self.h.write('#define %s%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_SKELETON, %sSkeleton))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %s%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %s%s_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+            self.h.write('#define %sIS_%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+            self.h.write('#define %sIS_%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+            self.h.write('\n')
+            self.h.write('typedef struct _%sSkeleton %sSkeleton;\n'%(i.camel_name, i.camel_name))
+            self.h.write('typedef struct _%sSkeletonClass %sSkeletonClass;\n'%(i.camel_name, i.camel_name))
+            self.h.write('typedef struct _%sSkeletonPrivate %sSkeletonPrivate;\n'%(i.camel_name, i.camel_name))
+            self.h.write('\n')
+            self.h.write('struct _%sSkeleton\n'%(i.camel_name))
+            self.h.write('{\n')
+            self.h.write('  /*< private >*/\n')
+            self.h.write('  GDBusInterfaceSkeleton parent_instance;\n')
+            self.h.write('  %sSkeletonPrivate *priv;\n'%(i.camel_name))
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('struct _%sSkeletonClass\n'%(i.camel_name))
+            self.h.write('{\n')
+            self.h.write('  GDBusInterfaceSkeletonClass parent_class;\n')
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+            self.h.write('\n')
+            if i.deprecated:
+                self.h.write('G_GNUC_DEPRECATED ')
+            self.h.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
+
+            self.h.write('\n')
+
+        # Finally, the Object, ObjectProxy, ObjectSkeleton and ObjectManagerClient
+        if self.generate_objmanager:
+            self.h.write('\n')
+            self.h.write('/* ---- */\n')
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_OBJECT (%sobject_get_type ())\n'%(self.ns_upper, self.ns_lower))
+            self.h.write('#define %sOBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sIS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('#define %sOBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('\n')
+            self.h.write('struct _%sObject;\n'%(self.namespace))
+            self.h.write('typedef struct _%sObject %sObject;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectIface %sObjectIface;\n'%(self.namespace, self.namespace))
+            self.h.write('\n')
+            self.h.write('struct _%sObjectIface\n'%(self.namespace))
+            self.h.write('{\n'
+                         '  GTypeInterface parent_iface;\n'
+                         '};\n'
+                         '\n')
+            self.h.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
+                         '\n'
+                         %(self.ns_lower))
+            for i in self.ifaces:
+                if i.deprecated:
+                    self.h.write('G_GNUC_DEPRECATED ')
+                self.h.write ('%s *%sobject_get_%s (%sObject *object);\n'
+                              %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+            for i in self.ifaces:
+                if i.deprecated:
+                    self.h.write('G_GNUC_DEPRECATED ')
+                self.h.write ('%s *%sobject_peek_%s (%sObject *object);\n'
+                              %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_OBJECT_PROXY (%sobject_proxy_get_type ())\n'%(self.ns_upper, self.ns_lower))
+            self.h.write('#define %sOBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_PROXY, %sObjectProxy))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sIS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('#define %sIS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('\n')
+            self.h.write('typedef struct _%sObjectProxy %sObjectProxy;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectProxyClass %sObjectProxyClass;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectProxyPrivate %sObjectProxyPrivate;\n'%(self.namespace, self.namespace))
+            self.h.write('\n')
+            self.h.write('struct _%sObjectProxy\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  /*< private >*/\n')
+            self.h.write('  GDBusObjectProxy parent_instance;\n')
+            self.h.write('  %sObjectProxyPrivate *priv;\n'%(self.namespace))
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('struct _%sObjectProxyClass\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  GDBusObjectProxyClass parent_class;\n')
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+            self.h.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar *object_path);\n'%(self.namespace, self.ns_lower))
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper, self.ns_lower))
+            self.h.write('#define %sOBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeleton))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sIS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('#define %sIS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('\n')
+            self.h.write('typedef struct _%sObjectSkeleton %sObjectSkeleton;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectSkeletonClass %sObjectSkeletonClass;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectSkeletonPrivate %sObjectSkeletonPrivate;\n'%(self.namespace, self.namespace))
+            self.h.write('\n')
+            self.h.write('struct _%sObjectSkeleton\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  /*< private >*/\n')
+            self.h.write('  GDBusObjectSkeleton parent_instance;\n')
+            self.h.write('  %sObjectSkeletonPrivate *priv;\n'%(self.namespace))
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('struct _%sObjectSkeletonClass\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  GDBusObjectSkeletonClass parent_class;\n')
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+            self.h.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
+                         %(self.namespace, self.ns_lower))
+            for i in self.ifaces:
+                if i.deprecated:
+                    self.h.write('G_GNUC_DEPRECATED ')
+                self.h.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n'
+                              %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+            self.h.write('\n')
+
+            self.h.write('/* ---- */\n')
+            self.h.write('\n')
+            self.h.write('#define %sTYPE_OBJECT_MANAGER_CLIENT (%sobject_manager_client_get_type ())\n'%(self.ns_upper, self.ns_lower))
+            self.h.write('#define %sOBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClient))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sOBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+            self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+            self.h.write('\n')
+            self.h.write('typedef struct _%sObjectManagerClient %sObjectManagerClient;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectManagerClientClass %sObjectManagerClientClass;\n'%(self.namespace, self.namespace))
+            self.h.write('typedef struct _%sObjectManagerClientPrivate %sObjectManagerClientPrivate;\n'%(self.namespace, self.namespace))
+            self.h.write('\n')
+            self.h.write('struct _%sObjectManagerClient\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  /*< private >*/\n')
+            self.h.write('  GDBusObjectManagerClient parent_instance;\n')
+            self.h.write('  %sObjectManagerClientPrivate *priv;\n'%(self.namespace))
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('struct _%sObjectManagerClientClass\n'%(self.namespace))
+            self.h.write('{\n')
+            self.h.write('  GDBusObjectManagerClientClass parent_class;\n')
+            self.h.write('};\n')
+            self.h.write('\n')
+            self.h.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+            self.h.write('\n')
+            self.h.write('GType %sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);\n'%(self.ns_lower))
+            self.h.write('\n')
+            self.h.write('void %sobject_manager_client_new (\n'
+                         '    GDBusConnection        *connection,\n'
+                         '    GDBusObjectManagerClientFlags  flags,\n'
+                         '    const gchar            *name,\n'
+                         '    const gchar            *object_path,\n'
+                         '    GCancellable           *cancellable,\n'
+                         '    GAsyncReadyCallback     callback,\n'
+                         '    gpointer                user_data);\n'
+                         %(self.ns_lower))
+            self.h.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
+                         '    GAsyncResult        *res,\n'
+                         '    GError             **error);\n'
+                         %(self.ns_lower))
+            self.h.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
+                         '    GDBusConnection        *connection,\n'
+                         '    GDBusObjectManagerClientFlags  flags,\n'
+                         '    const gchar            *name,\n'
+                         '    const gchar            *object_path,\n'
+                         '    GCancellable           *cancellable,\n'
+                         '    GError                **error);\n'
+                         %(self.ns_lower))
+            self.h.write('\n')
+            self.h.write('void %sobject_manager_client_new_for_bus (\n'
+                         '    GBusType                bus_type,\n'
+                         '    GDBusObjectManagerClientFlags  flags,\n'
+                         '    const gchar            *name,\n'
+                         '    const gchar            *object_path,\n'
+                         '    GCancellable           *cancellable,\n'
+                         '    GAsyncReadyCallback     callback,\n'
+                         '    gpointer                user_data);\n'
+                         %(self.ns_lower))
+            self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
+                         '    GAsyncResult        *res,\n'
+                         '    GError             **error);\n'
+                         %(self.ns_lower))
+            self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
+                         '    GBusType                bus_type,\n'
+                         '    GDBusObjectManagerClientFlags  flags,\n'
+                         '    const gchar            *name,\n'
+                         '    const gchar            *object_path,\n'
+                         '    GCancellable           *cancellable,\n'
+                         '    GError                **error);\n'
+                         %(self.ns_lower))
+            self.h.write('\n')
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def generate_outro(self):
+        self.h.write('\n'
+                     'G_END_DECLS\n'
+                     '\n'
+                     '#endif /* __%s__ */\n'%(self.header_guard))
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def generate_annotations(self, prefix, annotations):
+        if annotations == None:
+            return
+
+        n = 0
+        for a in annotations:
+            #self.generate_annotations('%s_%d'%(prefix, n), a.get_annotations())
+
+            # skip internal annotations
+            if a.key.startswith('org.gtk.GDBus'):
+                continue
+
+            self.c.write('static const GDBusAnnotationInfo %s_%d =\n'
+                         '{\n'
+                         '  -1,\n'
+                         '  (gchar *) "%s",\n'
+                         '  (gchar *) "%s",\n'%(prefix, n, a.key, a.value))
+            if len(a.annotations) == 0:
+                self.c.write('  NULL\n')
+            else:
+                self.c.write('  (GDBusAnnotationInfo **) &%s_%d_pointers\n'%(prefix, n))
+            self.c.write('};\n'
+                         '\n')
+            n += 1
+
+        if n > 0:
+            self.c.write('static const GDBusAnnotationInfo * const %s_pointers[] =\n'
+                             '{\n'%(prefix))
+            m = 0;
+            for a in annotations:
+                if a.key.startswith('org.gtk.GDBus'):
+                    continue
+                self.c.write('  &%s_%d,\n'%(prefix, m))
+                m += 1
+            self.c.write('  NULL\n'
+                         '};\n'
+                         '\n')
+        return n
+
+    def generate_args(self, prefix, args):
+        for a in args:
+            num_anno = self.generate_annotations('%s_arg_%s_annotation_info'%(prefix, a.name), a.annotations)
+
+            self.c.write('static const _ExtendedGDBusArgInfo %s_%s =\n'
+                         '{\n'
+                         '  {\n'
+                         '    -1,\n'
+                         '    (gchar *) "%s",\n'
+                         '    (gchar *) "%s",\n'%(prefix, a.name, a.name, a.signature))
+            if num_anno == 0:
+                self.c.write('    NULL\n')
+            else:
+                self.c.write('    (GDBusAnnotationInfo **) &%s_arg_%s_annotation_info_pointers\n'%(prefix, a.name))
+            self.c.write('  },\n')
+            if not utils.lookup_annotation(a.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
+                self.c.write('  FALSE\n')
+            else:
+                self.c.write('  TRUE\n')
+            self.c.write('};\n'
+                         '\n')
+
+        if len(args) > 0:
+            self.c.write('static const _ExtendedGDBusArgInfo * const %s_pointers[] =\n'
+                             '{\n'%(prefix))
+            for a in args:
+                self.c.write('  &%s_%s,\n'%(prefix, a.name))
+            self.c.write('  NULL\n'
+                         '};\n'
+                         '\n')
+
+    def generate_introspection_for_interface(self, i):
+            self.c.write('/* ---- Introspection data for %s ---- */\n'
+                         '\n'%(i.name))
+
+            if len(i.methods) > 0:
+                for m in i.methods:
+                    unix_fd = False
+                    if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                        unix_fd = True
+                    self.generate_args('_%s_method_info_%s_IN_ARG'%(i.name_lower, m.name_lower), m.in_args)
+                    self.generate_args('_%s_method_info_%s_OUT_ARG'%(i.name_lower, m.name_lower), m.out_args)
+
+                    num_anno = self.generate_annotations('_%s_method_%s_annotation_info'%(i.name_lower, m.name_lower), m.annotations)
+
+                    self.c.write('static const _ExtendedGDBusMethodInfo _%s_method_info_%s =\n'
+                                 '{\n'
+                                 '  {\n'
+                                 '    -1,\n'
+                                 '    (gchar *) "%s",\n'%(i.name_lower, m.name_lower, m.name))
+                    if len(m.in_args) == 0:
+                        self.c.write('    NULL,\n')
+                    else:
+                        self.c.write('    (GDBusArgInfo **) &_%s_method_info_%s_IN_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+                    if len(m.out_args) == 0:
+                        self.c.write('    NULL,\n')
+                    else:
+                        self.c.write('    (GDBusArgInfo **) &_%s_method_info_%s_OUT_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+                    if num_anno == 0:
+                        self.c.write('    NULL\n')
+                    else:
+                        self.c.write('    (GDBusAnnotationInfo **) &_%s_method_%s_annotation_info_pointers\n'%(i.name_lower, m.name_lower))
+                    self.c.write('  },\n'
+                                 '  "handle-%s",\n'
+                                 '  %s\n'
+                                 %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
+                    self.c.write('};\n'
+                                 '\n')
+
+                self.c.write('static const _ExtendedGDBusMethodInfo * const _%s_method_info_pointers[] =\n'
+                             '{\n'%(i.name_lower))
+                for m in i.methods:
+                    self.c.write('  &_%s_method_info_%s,\n'%(i.name_lower, m.name_lower))
+                self.c.write('  NULL\n'
+                             '};\n'
+                             '\n')
+
+            # ---
+
+            if len(i.signals) > 0:
+                for s in i.signals:
+                    self.generate_args('_%s_signal_info_%s_ARG'%(i.name_lower, s.name_lower), s.args)
+
+                    num_anno = self.generate_annotations('_%s_signal_%s_annotation_info'%(i.name_lower, s.name_lower), s.annotations)
+                    self.c.write('static const _ExtendedGDBusSignalInfo _%s_signal_info_%s =\n'
+                                 '{\n'
+                                 '  {\n'
+                                 '    -1,\n'
+                                 '    (gchar *) "%s",\n'%(i.name_lower, s.name_lower, s.name))
+                    if len(s.args) == 0:
+                        self.c.write('    NULL,\n')
+                    else:
+                        self.c.write('    (GDBusArgInfo **) &_%s_signal_info_%s_ARG_pointers,\n'%(i.name_lower, s.name_lower))
+                    if num_anno == 0:
+                        self.c.write('    NULL\n')
+                    else:
+                        self.c.write('    (GDBusAnnotationInfo **) &_%s_signal_%s_annotation_info_pointers\n'%(i.name_lower, s.name_lower))
+                    self.c.write('  },\n'
+                                 '  "%s"\n'
+                                 %(s.name_hyphen))
+                    self.c.write('};\n'
+                                 '\n')
+
+                self.c.write('static const _ExtendedGDBusSignalInfo * const _%s_signal_info_pointers[] =\n'
+                             '{\n'%(i.name_lower))
+                for s in i.signals:
+                    self.c.write('  &_%s_signal_info_%s,\n'%(i.name_lower, s.name_lower))
+                self.c.write('  NULL\n'
+                             '};\n'
+                             '\n')
+
+            # ---
+
+            if len(i.properties) > 0:
+                for p in i.properties:
+                    if p.readable and p.writable:
+                        access = 'G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE'
+                    elif p.readable:
+                        access = 'G_DBUS_PROPERTY_INFO_FLAGS_READABLE'
+                    elif p.writable:
+                        access = 'G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE'
+                    else:
+                        access = 'G_DBUS_PROPERTY_INFO_FLAGS_NONE'
+                    num_anno = self.generate_annotations('_%s_property_%s_annotation_info'%(i.name_lower, p.name_lower), p.annotations)
+                    self.c.write('static const _ExtendedGDBusPropertyInfo _%s_property_info_%s =\n'
+                                 '{\n'
+                                 '  {\n'
+                                 '    -1,\n'
+                                 '    (gchar *) "%s",\n'
+                                 '    (gchar *) "%s",\n'
+                                 '    %s,\n'%(i.name_lower, p.name_lower, p.name, p.arg.signature, access))
+                    if num_anno == 0:
+                        self.c.write('    NULL\n')
+                    else:
+                        self.c.write('    (GDBusAnnotationInfo **) &_%s_property_%s_annotation_info_pointers\n'%(i.name_lower, p.name_lower))
+                    self.c.write('  },\n'
+                                 '  "%s",\n'
+                                 %(p.name_hyphen))
+                    if not utils.lookup_annotation(p.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
+                        self.c.write('  FALSE\n')
+                    else:
+                        self.c.write('  TRUE\n')
+                    self.c.write('};\n'
+                                 '\n')
+
+                self.c.write('static const _ExtendedGDBusPropertyInfo * const _%s_property_info_pointers[] =\n'
+                             '{\n'%(i.name_lower))
+                for p in i.properties:
+                    self.c.write('  &_%s_property_info_%s,\n'%(i.name_lower, p.name_lower))
+                self.c.write('  NULL\n'
+                             '};\n'
+                             '\n')
+
+            num_anno = self.generate_annotations('_%s_annotation_info'%(i.name_lower), i.annotations)
+            self.c.write('static const _ExtendedGDBusInterfaceInfo _%s_interface_info =\n'
+                         '{\n'
+                         '  {\n'
+                         '    -1,\n'
+                         '    (gchar *) "%s",\n'%(i.name_lower, i.name))
+            if len(i.methods) == 0:
+                self.c.write('    NULL,\n')
+            else:
+                self.c.write('    (GDBusMethodInfo **) &_%s_method_info_pointers,\n'%(i.name_lower))
+            if len(i.signals) == 0:
+                self.c.write('    NULL,\n')
+            else:
+                self.c.write('    (GDBusSignalInfo **) &_%s_signal_info_pointers,\n'%(i.name_lower))
+            if len(i.properties) == 0:
+                self.c.write('    NULL,\n')
+            else:
+                self.c.write('    (GDBusPropertyInfo **) &_%s_property_info_pointers,\n'%(i.name_lower))
+            if num_anno == 0:
+                self.c.write('    NULL\n')
+            else:
+                self.c.write('    (GDBusAnnotationInfo **) &_%s_annotation_info_pointers\n'%(i.name_lower))
+            self.c.write('  },\n'
+                         '  "%s",\n'
+                         '};\n'
+                         '\n'
+                         %(i.name_hyphen))
+            self.c.write('\n')
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %s_interface_info:\n'
+                    ' *\n'
+                    ' * Gets a machine-readable description of the #%s D-Bus interface.\n'
+                    ' *\n'
+                    ' * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.\n'
+                    %(i.name_lower, i.name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+            self.c.write('GDBusInterfaceInfo *\n'
+                         '%s_interface_info (void)\n'
+                         '{\n'
+                         '  return (GDBusInterfaceInfo *) &_%s_interface_info.parent_struct;\n'
+                         '}\n'
+                         '\n'%(i.name_lower, i.name_lower))
+
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %s_override_properties:\n'
+                    ' * @klass: The class structure for a #GObject<!-- -->-derived class.\n'
+                    ' * @property_id_begin: The property id to assign to the first overridden property.\n'
+                    ' *\n'
+                    ' * Overrides all #GObject properties in the #%s interface for a concrete class.\n'
+                    ' * The properties are overridden in the order they are defined.\n'
+                    ' *\n'
+                    ' * Returns: The last property id.\n'
+                    %(i.name_lower, i.camel_name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+            self.c.write('guint\n'
+                         '%s_override_properties (GObjectClass *klass, guint property_id_begin)\n'
+                         '{\n'%(i.name_lower))
+            for p in i.properties:
+                self.c.write ('  g_object_class_override_property (klass, property_id_begin++, "%s");\n'%(p.name_hyphen))
+            self.c.write('  return property_id_begin - 1;\n'
+                         '}\n'
+                         '\n')
+            self.c.write('\n')
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def generate_interface(self, i):
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s:\n'
+                ' *\n'
+                ' * Abstract interface type for the D-Bus interface #%s.\n'
+                %(i.camel_name, i.name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sIface:\n'
+                ' * @parent_iface: The parent interface.\n'
+                %(i.camel_name), False))
+
+        doc_bits = {}
+        if len(i.methods) > 0:
+            for m in i.methods:
+                key = (m.since, '_method_%s'%m.name_lower)
+                value  = '@handle_%s: '%(m.name_lower)
+                value += 'Handler for the #%s::handle-%s signal.'%(i.camel_name, m.name_hyphen)
+                doc_bits[key] = value
+        if len(i.signals) > 0:
+            for s in i.signals:
+                key = (s.since, '_signal_%s'%s.name_lower)
+                value  = '@%s: '%(s.name_lower)
+                value += 'Handler for the #%s::%s signal.'%(i.camel_name, s.name_hyphen)
+                doc_bits[key] = value
+        if len(i.properties) > 0:
+            for p in i.properties:
+                key = (p.since, '_prop_get_%s'%p.name_lower)
+                value  = '@get_%s: '%(p.name_lower)
+                value += 'Getter for the #%s:%s property.'%(i.camel_name, p.name_hyphen)
+                doc_bits[key] = value
+        for key in sorted(doc_bits.keys(), key=utils.version_cmp_key):
+            self.c.write(' * %s\n'%doc_bits[key])
+
+        self.c.write(self.docbook_gen.expand(
+                ' *\n'
+                ' * Virtual table for the D-Bus interface #%s.\n'
+                %(i.name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write('typedef %sIface %sInterface;\n'%(i.camel_name, i.camel_name))
+        self.c.write('G_DEFINE_INTERFACE (%s, %s, G_TYPE_OBJECT);\n'%(i.camel_name, i.name_lower))
+        self.c.write('\n')
+
+        self.c.write('static void\n'
+                     '%s_default_init (%sIface *iface)\n'
+                     '{\n'%(i.name_lower, i.camel_name));
+
+        if len(i.methods) > 0:
+            self.c.write('  /* GObject signals for incoming D-Bus method calls: */\n')
+            for m in i.methods:
+                unix_fd = False
+                if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                    unix_fd = True
+                self.c.write(self.docbook_gen.expand(
+                        '  /**\n'
+                        '   * %s::handle-%s:\n'
+                        '   * @object: A #%s.\n'
+                        '   * @invocation: A #GDBusMethodInvocation.\n'
+                        %(i.camel_name, m.name_hyphen, i.camel_name), False))
+                if unix_fd:
+                    self.c.write ('   * @fd_list: (allow-none): A #GUnixFDList or %NULL.\n')
+                for a in m.in_args:
+                    self.c.write ('   * @arg_%s: Argument passed by remote caller.\n'%(a.name))
+                self.c.write(self.docbook_gen.expand(
+                        '   *\n'
+                        '   * Signal emitted when a remote caller is invoking the %s.%s() D-Bus method.\n'
+                        '   *\n'
+                        '   * If a signal handler returns %%TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call %s_complete_%s() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %%G_DBUS_ERROR_UNKNOWN_METHOD error is returned.\n'
+                        '   *\n'
+                        '   * Returns: %%TRUE if the invocation was handled, %%FALSE to let other signal handlers run.\n'
+                        %(i.name, m.name, i.name_lower, m.name_lower), False))
+                self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 2)
+                if unix_fd:
+                    extra_args = 2
+                else:
+                    extra_args = 1
+                self.c.write('  g_signal_new ("handle-%s",\n'
+                             '    G_TYPE_FROM_INTERFACE (iface),\n'
+                             '    G_SIGNAL_RUN_LAST,\n'
+                             '    G_STRUCT_OFFSET (%sIface, handle_%s),\n'
+                             '    g_signal_accumulator_true_handled,\n'
+                             '    NULL,\n' # accu_data
+                             '    g_cclosure_marshal_generic,\n'
+                             '    G_TYPE_BOOLEAN,\n'
+                             '    %d,\n'
+                             '    G_TYPE_DBUS_METHOD_INVOCATION'
+                             %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
+                if unix_fd:
+                    self.c.write(', G_TYPE_UNIX_FD_LIST')
+                for a in m.in_args:
+                    self.c.write (', %s'%(a.gtype))
+                self.c.write(');\n')
+                self.c.write('\n')
+
+        if len(i.signals) > 0:
+            self.c.write('  /* GObject signals for received D-Bus signals: */\n')
+            for s in i.signals:
+                self.c.write(self.docbook_gen.expand(
+                        '  /**\n'
+                        '   * %s::%s:\n'
+                        '   * @object: A #%s.\n'
+                        %(i.camel_name, s.name_hyphen, i.camel_name), False))
+                for a in s.args:
+                    self.c.write ('   * @arg_%s: Argument.\n'%(a.name))
+                self.c.write(self.docbook_gen.expand(
+                        '   *\n'
+                        '   * On the client-side, this signal is emitted whenever the D-Bus signal #%s::%s is received.\n'
+                        '   *\n'
+                        '   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.\n'
+                        %(i.name, s.name), False))
+                self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 2)
+                self.c.write('  g_signal_new ("%s",\n'
+                             '    G_TYPE_FROM_INTERFACE (iface),\n'
+                             '    G_SIGNAL_RUN_LAST,\n'
+                             '    G_STRUCT_OFFSET (%sIface, %s),\n'
+                             '    NULL,\n' # accumulator
+                             '    NULL,\n' # accu_data
+                             '    g_cclosure_marshal_generic,\n'
+                             '    G_TYPE_NONE,\n'
+                             '    %d'
+                             %(s.name_hyphen, i.camel_name, s.name_lower, len(s.args)))
+                for a in s.args:
+                    self.c.write (', %s'%(a.gtype))
+                self.c.write(');\n')
+                self.c.write('\n')
+
+        if len(i.properties) > 0:
+            self.c.write('  /* GObject properties for D-Bus properties: */\n')
+            for p in i.properties:
+                if p.readable and p.writable:
+                    hint = 'Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.'
+                elif p.readable:
+                    hint = 'Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.'
+                elif p.writable:
+                    hint = 'Since the D-Bus property for this #GObject property is writable but not readable, it is meaningful to write to it on both the client- and service-side. It is only meaningful, however, to read from it on the service-side.'
+                else:
+                    raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
+                self.c.write(self.docbook_gen.expand(
+                        '  /**\n'
+                        '   * %s:%s:\n'
+                        '   *\n'
+                        '   * Represents the D-Bus property #%s:%s.\n'
+                        '   *\n'
+                        '   * %s\n'
+                        %(i.camel_name, p.name_hyphen, i.name, p.name, hint), False))
+                self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 2)
+                self.c.write('  g_object_interface_install_property (iface,\n')
+                if p.arg.gtype == 'G_TYPE_VARIANT':
+                    s = 'g_param_spec_variant ("%s", "%s", "%s", G_VARIANT_TYPE ("%s"), NULL'%(p.name_hyphen, p.name, p.name, p.arg.signature)
+                elif p.arg.signature == 'b':
+                    s = 'g_param_spec_boolean ("%s", "%s", "%s", FALSE'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'y':
+                    s = 'g_param_spec_uchar ("%s", "%s", "%s", 0, 255, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'n':
+                    s = 'g_param_spec_int ("%s", "%s", "%s", G_MININT16, G_MAXINT16, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'q':
+                    s = 'g_param_spec_uint ("%s", "%s", "%s", 0, G_MAXUINT16, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'i':
+                    s = 'g_param_spec_int ("%s", "%s", "%s", G_MININT32, G_MAXINT32, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'u':
+                    s = 'g_param_spec_uint ("%s", "%s", "%s", 0, G_MAXUINT32, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'x':
+                    s = 'g_param_spec_int64 ("%s", "%s", "%s", G_MININT64, G_MAXINT64, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 't':
+                    s = 'g_param_spec_uint64 ("%s", "%s", "%s", 0, G_MAXUINT64, 0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'd':
+                    s = 'g_param_spec_double ("%s", "%s", "%s", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 's':
+                    s = 'g_param_spec_string ("%s", "%s", "%s", NULL'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'o':
+                    s = 'g_param_spec_string ("%s", "%s", "%s", NULL'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'g':
+                    s = 'g_param_spec_string ("%s", "%s", "%s", NULL'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'ay':
+                    s = 'g_param_spec_string ("%s", "%s", "%s", NULL'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'as':
+                    s = 'g_param_spec_boxed ("%s", "%s", "%s", G_TYPE_STRV'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'ao':
+                    s = 'g_param_spec_boxed ("%s", "%s", "%s", G_TYPE_STRV'%(p.name_hyphen, p.name, p.name)
+                elif p.arg.signature == 'aay':
+                    s = 'g_param_spec_boxed ("%s", "%s", "%s", G_TYPE_STRV'%(p.name_hyphen, p.name, p.name)
+                else:
+                    raise RuntimeError('Unsupported gtype %s for GParamSpec'%(p.arg.gtype))
+                self.c.write('    %s, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));'%s);
+                self.c.write('\n')
+
+        self.c.write('}\n'
+                     '\n')
+
+    # ----------------------------------------------------------------------------------------------------
+
+    def generate_property_accessors(self, i):
+        for p in i.properties:
+            # getter
+            if p.readable and p.writable:
+                hint = 'Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.'
+            elif p.readable:
+                hint = 'Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.'
+            elif p.writable:
+                hint = 'Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side.'
+            else:
+                raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %s_get_%s: (skip)\n'
+                    ' * @object: A #%s.\n'
+                    ' *\n'
+                    ' * Gets the value of the #%s:%s D-Bus property.\n'
+                    ' *\n'
+                    ' * %s\n'
+                    ' *\n'
+                    %(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
+            if p.arg.free_func != None:
+                self.c.write(' * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use %s_dup_%s() if on another thread.</warning>\n'
+                             ' *\n'
+                             ' * Returns: (transfer none): The property value or %%NULL if the property is not set. Do not free the returned value, it belongs to @object.\n'
+                             %(i.name_lower, p.name_lower))
+            else:
+                self.c.write(' * Returns: The property value.\n')
+            self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
+            self.c.write('%s\n'
+                         '%s_get_%s (%s *object)\n'
+                         '{\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+            self.c.write('  return %s%s_GET_IFACE (object)->get_%s (object);\n'%(i.ns_upper, i.name_upper, p.name_lower))
+            self.c.write('}\n')
+            self.c.write('\n')
+            if p.arg.free_func != None:
+
+                self.c.write(self.docbook_gen.expand(
+                        '/**\n'
+                        ' * %s_dup_%s: (skip)\n'
+                        ' * @object: A #%s.\n'
+                        ' *\n'
+                        ' * Gets a copy of the #%s:%s D-Bus property.\n'
+                        ' *\n'
+                        ' * %s\n'
+                        ' *\n'
+                        ' * Returns: (transfer full): The property value or %%NULL if the property is not set. The returned value should be freed with %s().\n'
+                        %(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint, p.arg.free_func), False))
+                self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
+                self.c.write('%s\n'
+                             '%s_dup_%s (%s *object)\n'
+                             '{\n'
+                             '  %svalue;\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in_dup))
+                self.c.write('  g_object_get (G_OBJECT (object), "%s", &value, NULL);\n'%(p.name_hyphen))
+                self.c.write('  return value;\n')
+                self.c.write('}\n')
+                self.c.write('\n')
+
+            # setter
+            if p.readable and p.writable:
+                hint = 'Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side.'
+            elif p.readable:
+                hint = 'Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.'
+            elif p.writable:
+                hint = 'Since this D-Bus property is writable, it is meaningful to use this function on both the client- and service-side.'
+            else:
+                raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %s_set_%s: (skip)\n'
+                    ' * @object: A #%s.\n'
+                    ' * @value: The value to set.\n'
+                    ' *\n'
+                    ' * Sets the #%s:%s D-Bus property to @value.\n'
+                    ' *\n'
+                    ' * %s\n'
+                    %(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
+            self.c.write('void\n'
+                         '%s_set_%s (%s *object, %svalue)\n'
+                         '{\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
+            self.c.write('  g_object_set (G_OBJECT (object), "%s", value, NULL);\n'%(p.name_hyphen))
+            self.c.write('}\n')
+            self.c.write('\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_signal_emitters(self, i):
+        for s in i.signals:
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %s_emit_%s:\n'
+                    ' * @object: A #%s.\n'
+                    %(i.name_lower, s.name_lower, i.camel_name), False))
+            for a in s.args:
+                self.c.write(' * @arg_%s: Argument to pass with the signal.\n'%(a.name))
+            self.c.write(self.docbook_gen.expand(
+                    ' *\n'
+                    ' * Emits the #%s::%s D-Bus signal.\n'
+                    %(i.name, s.name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 0)
+            self.c.write('void\n'
+                         '%s_emit_%s (\n'
+                         '    %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+            for a in s.args:
+                self.c.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+            self.c.write(')\n'
+                         '{\n'
+                         '  g_signal_emit_by_name (object, "%s"'%(s.name_hyphen))
+            for a in s.args:
+                self.c.write(', arg_%s'%a.name)
+            self.c.write(');\n')
+            self.c.write('}\n'
+                         '\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_method_calls(self, i):
+        for m in i.methods:
+            unix_fd = False
+            if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                unix_fd = True
+            # async begin
+            self.c.write('/**\n'
+                         ' * %s_call_%s:\n'
+                         ' * @proxy: A #%sProxy.\n'
+                         %(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.in_args:
+                self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+            if unix_fd:
+                self.c.write(' * @fd_list: (allow-none): A #GUnixFDList or %NULL.\n')
+            self.c.write(self.docbook_gen.expand(
+                    ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                    ' * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %%NULL.\n'
+                    ' * @user_data: User data to pass to @callback.\n'
+                    ' *\n'
+                    ' * Asynchronously invokes the %s.%s() D-Bus method on @proxy.\n'
+                    ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                    ' * You can then call %s_call_%s_finish() to get the result of the operation.\n'
+                    ' *\n'
+                    ' * See %s_call_%s_sync() for the synchronous, blocking version of this method.\n'
+                    %(i.name, m.name, i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
+            self.c.write('void\n'
+                         '%s_call_%s (\n'
+                         '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.in_args:
+                self.c.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+            if unix_fd:
+                self.c.write(',\n    GUnixFDList *fd_list')
+            self.c.write(',\n'
+                         '    GCancellable *cancellable,\n'
+                         '    GAsyncReadyCallback callback,\n'
+                         '    gpointer user_data)\n'
+                         '{\n')
+            if unix_fd:
+                self.c.write('  g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
+            else:
+                self.c.write('  g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
+            self.c.write('    "%s",\n'
+                         '    g_variant_new ("('%(m.name))
+            for a in m.in_args:
+                self.c.write('%s'%(a.format_in))
+            self.c.write(')"')
+            for a in m.in_args:
+                self.c.write(',\n                   arg_%s'%(a.name))
+            self.c.write('),\n'
+                         '    G_DBUS_CALL_FLAGS_NONE,\n'
+                         '    -1,\n')
+            if unix_fd:
+                self.c.write('    fd_list,\n')
+            self.c.write('    cancellable,\n'
+                         '    callback,\n'
+                         '    user_data);\n')
+            self.c.write('}\n'
+                         '\n')
+            # async finish
+            self.c.write('/**\n'
+                         ' * %s_call_%s_finish:\n'
+                         ' * @proxy: A #%sProxy.\n'
+                         %(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.out_args:
+                self.c.write(' * @out_%s: (out): Return location for return parameter or %%NULL to ignore.\n'%(a.name))
+            if unix_fd:
+                self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+            self.c.write(self.docbook_gen.expand(
+                    ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_call_%s().\n'
+                    ' * @error: Return location for error or %%NULL.\n'
+                    ' *\n'
+                    ' * Finishes an operation started with %s_call_%s().\n'
+                    ' *\n'
+                    ' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
+                    %(i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
+            self.c.write('gboolean\n'
+                         '%s_call_%s_finish (\n'
+                         '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.out_args:
+                self.c.write(',\n    %sout_%s'%(a.ctype_out, a.name))
+            if unix_fd:
+                self.c.write(',\n    GUnixFDList **out_fd_list')
+            self.c.write(',\n'
+                         '    GAsyncResult *res,\n'
+                         '    GError **error)\n'
+                         '{\n'
+                         '  GVariant *_ret;\n')
+            if unix_fd:
+                self.c.write('  _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy), out_fd_list, res, error);\n')
+            else:
+                self.c.write('  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
+            self.c.write('  if (_ret == NULL)\n'
+                         '    goto _out;\n')
+            self.c.write('  g_variant_get (_ret,\n'
+                         '                 \"(')
+            for a in m.out_args:
+                self.c.write('%s'%(a.format_out))
+            self.c.write(')"')
+            for a in m.out_args:
+                self.c.write(',\n                 out_%s'%(a.name))
+            self.c.write(');\n'
+                         '  g_variant_unref (_ret);\n')
+            self.c.write('_out:\n'
+                         '  return _ret != NULL;\n'
+                         '}\n'
+                         '\n')
+
+
+            # sync
+            self.c.write('/**\n'
+                         ' * %s_call_%s_sync:\n'
+                         ' * @proxy: A #%sProxy.\n'
+                         %(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.in_args:
+                self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+            if unix_fd:
+                self.c.write(' * @fd_list: (allow-none): A #GUnixFDList or %NULL.\n')
+            for a in m.out_args:
+                self.c.write(' * @out_%s: (out): Return location for return parameter or %%NULL to ignore.\n'%(a.name))
+            if unix_fd:
+                self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+            self.c.write(self.docbook_gen.expand(
+                    ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                    ' * @error: Return location for error or %%NULL.\n'
+                    ' *\n'
+                    ' * Synchronously invokes the %s.%s() D-Bus method on @proxy. The calling thread is blocked until a reply is received.\n'
+                    ' *\n'
+                    ' * See %s_call_%s() for the asynchronous version of this method.\n'
+                    ' *\n'
+                    ' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
+                    %(i.name, m.name, i.name_lower, m.name_lower), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
+            self.c.write('gboolean\n'
+                         '%s_call_%s_sync (\n'
+                         '    %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+            for a in m.in_args:
+                self.c.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+            if unix_fd:
+                self.c.write(',\n    GUnixFDList  *fd_list')
+            for a in m.out_args:
+                self.c.write(',\n    %sout_%s'%(a.ctype_out, a.name))
+            if unix_fd:
+                self.c.write(',\n    GUnixFDList **out_fd_list')
+            self.c.write(',\n'
+                         '    GCancellable *cancellable,\n'
+                         '    GError **error)\n'
+                         '{\n'
+                         '  GVariant *_ret;\n')
+            if unix_fd:
+                self.c.write('  _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),\n')
+            else:
+                self.c.write('  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
+            self.c.write('    "%s",\n'
+                         '    g_variant_new ("('%(m.name))
+            for a in m.in_args:
+                self.c.write('%s'%(a.format_in))
+            self.c.write(')"')
+            for a in m.in_args:
+                self.c.write(',\n                   arg_%s'%(a.name))
+            self.c.write('),\n'
+                         '    G_DBUS_CALL_FLAGS_NONE,\n'
+                         '    -1,\n')
+            if unix_fd:
+                self.c.write('    fd_list,\n'
+                             '    out_fd_list,\n')
+            self.c.write('    cancellable,\n'
+                         '    error);\n'
+                         '  if (_ret == NULL)\n'
+                         '    goto _out;\n')
+            self.c.write('  g_variant_get (_ret,\n'
+                         '                 \"(')
+            for a in m.out_args:
+                self.c.write('%s'%(a.format_out))
+            self.c.write(')"')
+            for a in m.out_args:
+                self.c.write(',\n                 out_%s'%(a.name))
+            self.c.write(');\n'
+                         '  g_variant_unref (_ret);\n')
+            self.c.write('_out:\n'
+                         '  return _ret != NULL;\n'
+                         '}\n'
+                         '\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_method_completers(self, i):
+        for m in i.methods:
+            unix_fd = False
+            if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
+                unix_fd = True
+            self.c.write('/**\n'
+                         ' * %s_complete_%s:\n'
+                         ' * @object: A #%s.\n'
+                         ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
+                         %(i.name_lower, m.name_lower, i.camel_name))
+            if unix_fd:
+                self.c.write (' * @fd_list: (allow-none): A #GUnixFDList or %NULL.\n')
+            for a in m.out_args:
+                self.c.write(' * @%s: Parameter to return.\n'%(a.name))
+            self.c.write(self.docbook_gen.expand(
+                    ' *\n'
+                    ' * Helper function used in service implementations to finish handling invocations of the %s.%s() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.\n'
+                    ' *\n'
+                    ' * This method will free @invocation, you cannot use it afterwards.\n'
+                    %(i.name, m.name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
+            self.c.write('void\n'
+                         '%s_complete_%s (\n'
+                         '    %s *object,\n'
+                         '    GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
+            if unix_fd:
+                self.c.write(',\n    GUnixFDList *fd_list')
+            for a in m.out_args:
+                self.c.write(',\n    %s%s'%(a.ctype_in, a.name))
+            self.c.write(')\n'
+                         '{\n')
+
+            if unix_fd:
+                self.c.write('  g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
+                             '    g_variant_new ("(')
+            else:
+                self.c.write('  g_dbus_method_invocation_return_value (invocation,\n'
+                             '    g_variant_new ("(')
+            for a in m.out_args:
+                self.c.write('%s'%(a.format_in))
+            self.c.write(')"')
+            for a in m.out_args:
+                self.c.write(',\n                   %s'%(a.name))
+            if unix_fd:
+                self.c.write('),\n    fd_list);\n')
+            else:
+                self.c.write('));\n')
+            self.c.write('}\n'
+                         '\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_proxy(self, i):
+        # class boilerplate
+        self.c.write('/* ------------------------------------------------------------------------ */\n'
+                     '\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sProxy:\n'
+                ' *\n'
+                ' * The #%sProxy structure contains only private data and should only be accessed using the provided API.\n'
+                %(i.camel_name, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sProxyClass:\n'
+                ' * @parent_class: The parent class.\n'
+                ' *\n'
+                ' * Class structure for #%sProxy.\n'
+                %(i.camel_name, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write('struct _%sProxyPrivate\n'
+                     '{\n'
+                     '  GData *qdata;\n'
+                     '};\n'
+                     '\n'%i.camel_name)
+
+        self.c.write('static void %s_proxy_iface_init (%sIface *iface);\n'
+                     '\n'%(i.name_lower, i.camel_name))
+        self.c.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name, i.name_lower))
+        self.c.write('                         G_ADD_PRIVATE (%sProxy)\n'%(i.camel_name))
+        self.c.write('                         G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_proxy_iface_init));\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+
+        # finalize
+        self.c.write('static void\n'
+                     '%s_proxy_finalize (GObject *object)\n'
+                     '{\n'%(i.name_lower))
+        self.c.write('  %sProxy *proxy = %s%s_PROXY (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+        self.c.write('  g_datalist_clear (&proxy->priv->qdata);\n')
+        self.c.write('  G_OBJECT_CLASS (%s_proxy_parent_class)->finalize (object);\n'
+                     '}\n'
+                     '\n'%(i.name_lower))
+
+        # property accessors
+        #
+        # Note that we are guaranteed that prop_id starts at 1 and is
+        # laid out in the same order as introspection data pointers
+        #
+        self.c.write('static void\n'
+                     '%s_proxy_get_property (GObject      *object,\n'
+                     '  guint         prop_id,\n'
+                     '  GValue       *value,\n'
+                     '  GParamSpec   *pspec G_GNUC_UNUSED)\n'
+                     '{\n'%(i.name_lower))
+        if len(i.properties) > 0:
+            self.c.write('  const _ExtendedGDBusPropertyInfo *info;\n'
+                         '  GVariant *variant;\n'
+                         '  g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+                         '  info = _%s_property_info_pointers[prop_id - 1];\n'
+                         '  variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);\n'
+                         '  if (info->use_gvariant)\n'
+                         '    {\n'
+                         '      g_value_set_variant (value, variant);\n'
+                         '    }\n'
+                         '  else\n'
+                         '    {\n'
+                         # could be that we don't have the value in cache - in that case, we do
+                         # nothing and the user gets the default value for the GType
+                         '      if (variant != NULL)\n'
+                         '        g_dbus_gvariant_to_gvalue (variant, value);\n'
+                         '    }\n'
+                         '  if (variant != NULL)\n'
+                         '    g_variant_unref (variant);\n'
+                         %(len(i.properties), i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+        if len(i.properties) > 0:
+            self.c.write('static void\n'
+                         '%s_proxy_set_property_cb (GDBusProxy *proxy,\n'
+                         '  GAsyncResult *res,\n'
+                         '  gpointer      user_data)\n'
+                         '{\n'%(i.name_lower))
+            self.c.write('  const _ExtendedGDBusPropertyInfo *info = user_data;\n'
+                         '  GError *error;\n'
+                         '  error = NULL;\n'
+                         '  if (!g_dbus_proxy_call_finish (proxy, res, &error))\n'
+                         '    {\n'
+                         '      g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s, %%d)",\n'
+                         '                 info->parent_struct.name, \n'
+                         '                 error->message, g_quark_to_string (error->domain), error->code);\n'
+                         '      g_error_free (error);\n'
+                         '    }\n'
+                         %(i.name))
+            self.c.write('}\n'
+                         '\n')
+        self.c.write('static void\n'
+                     '%s_proxy_set_property (GObject      *object,\n'
+                     '  guint         prop_id,\n'
+                     '  const GValue *value,\n'
+                     '  GParamSpec   *pspec G_GNUC_UNUSED)\n'
+                     '{\n'%(i.name_lower))
+        if len(i.properties) > 0:
+            self.c.write('  const _ExtendedGDBusPropertyInfo *info;\n'
+                         '  GVariant *variant;\n'
+                         '  g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+                         '  info = _%s_property_info_pointers[prop_id - 1];\n'
+                         '  variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
+                         '  g_dbus_proxy_call (G_DBUS_PROXY (object),\n'
+                         '    "org.freedesktop.DBus.Properties.Set",\n'
+                         '    g_variant_new ("(ssv)", "%s", info->parent_struct.name, variant),\n'
+                         '    G_DBUS_CALL_FLAGS_NONE,\n'
+                         '    -1,\n'
+                         '    NULL, (GAsyncReadyCallback) %s_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);\n'
+                         '  g_variant_unref (variant);\n'
+                         %(len(i.properties), i.name_lower, i.name, i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        # signal received
+        self.c.write('static void\n'
+                     '%s_proxy_g_signal (GDBusProxy *proxy,\n'
+                     '  const gchar *sender_name G_GNUC_UNUSED,\n'
+                     '  const gchar *signal_name,\n'
+                     '  GVariant *parameters)\n'
+                     '{\n'%(i.name_lower))
+        self.c.write('  _ExtendedGDBusSignalInfo *info;\n'
+                     '  GVariantIter iter;\n'
+                     '  GVariant *child;\n'
+                     '  GValue *paramv;\n'
+                     '  guint num_params;\n'
+                     '  guint n;\n'
+                     '  guint signal_id;\n');
+        # Note: info could be NULL if we are talking to a newer version of the interface
+        self.c.write('  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, signal_name);\n'
+                     '  if (info == NULL)\n'
+                     '    return;\n'
+                     %(i.name_lower))
+        self.c.write ('  num_params = g_variant_n_children (parameters);\n'
+                      '  paramv = g_new0 (GValue, num_params + 1);\n'
+                      '  g_value_init (&paramv[0], %sTYPE_%s);\n'
+                      '  g_value_set_object (&paramv[0], proxy);\n'
+                      %(i.ns_upper, i.name_upper))
+        self.c.write('  g_variant_iter_init (&iter, parameters);\n'
+                     '  n = 1;\n'
+                     '  while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+                     '    {\n'
+                     '      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];\n'
+                     '      if (arg_info->use_gvariant)\n'
+                     '        {\n'
+                     '          g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
+                     '          g_value_set_variant (&paramv[n], child);\n'
+                     '          n++;\n'
+                     '        }\n'
+                     '      else\n'
+                     '        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
+                     '      g_variant_unref (child);\n'
+                     '    }\n'
+                     )
+        self.c.write('  signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+                     %(i.ns_upper, i.name_upper))
+        self.c.write('  g_signal_emitv (paramv, signal_id, 0, NULL);\n')
+        self.c.write('  for (n = 0; n < num_params + 1; n++)\n'
+                     '    g_value_unset (&paramv[n]);\n'
+                     '  g_free (paramv);\n')
+        self.c.write('}\n'
+                     '\n')
+
+        # property changed
+        self.c.write('static void\n'
+                     '%s_proxy_g_properties_changed (GDBusProxy *_proxy,\n'
+                     '  GVariant *changed_properties,\n'
+                     '  const gchar *const *invalidated_properties)\n'
+                     '{\n'%(i.name_lower))
+        # Note: info could be NULL if we are talking to a newer version of the interface
+        self.c.write('  %sProxy *proxy = %s%s_PROXY (_proxy);\n'
+                     '  guint n;\n'
+                     '  const gchar *key;\n'
+                     '  GVariantIter *iter;\n'
+                     '  _ExtendedGDBusPropertyInfo *info;\n'
+                     '  g_variant_get (changed_properties, "a{sv}", &iter);\n'
+                     '  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))\n'
+                     '    {\n'
+                     '      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, key);\n'
+                     '      g_datalist_remove_data (&proxy->priv->qdata, key);\n'
+                     '      if (info != NULL)\n'
+                     '        g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+                     '    }\n'
+                     '  g_variant_iter_free (iter);\n'
+                     '  for (n = 0; invalidated_properties[n] != NULL; n++)\n'
+                     '    {\n'
+                     '      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, invalidated_properties[n]);\n'
+                     '      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
+                     '      if (info != NULL)\n'
+                     '        g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+                     '    }\n'
+                     '}\n'
+                     '\n'
+                     %(i.camel_name, i.ns_upper, i.name_upper,
+                       i.name_lower, i.name_lower))
+
+        # property vfuncs
+        for p in i.properties:
+            nul_value = '0'
+            if p.arg.free_func != None:
+                nul_value = 'NULL'
+            self.c.write('static %s\n'
+                         '%s_proxy_get_%s (%s *object)\n'
+                         '{\n'
+                         '  %sProxy *proxy = %s%s_PROXY (object);\n'
+                         '  GVariant *variant;\n'
+                         '  %svalue = %s;\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name,
+                                              i.camel_name, i.ns_upper, i.name_upper,
+                                              p.arg.ctype_in, nul_value))
+            # For some property types, we have to free the returned
+            # value (or part of it, e.g. the container) because of how
+            # GVariant works.. see https://bugzilla.gnome.org/show_bug.cgi?id=657100
+            # for details
+            #
+            free_container = False;
+            if p.arg.gvariant_get == 'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objpathv' or p.arg.gvariant_get == 'g_variant_get_bytestring_array':
+                free_container = True;
+            # If already using an old value for strv, objpathv, bytestring_array (see below),
+            # then just return that... that way the result from multiple consecutive calls
+            # to the getter are valid as long as they're freed
+            #
+            if free_container:
+                self.c.write('  value = g_datalist_get_data (&proxy->priv->qdata, \"%s\");\n'
+                             '  if (value != NULL)\n'
+                             '    return value;\n'
+                             %(p.name))
+            self.c.write('  variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), \"%s\");\n'%(p.name))
+            if p.arg.gtype == 'G_TYPE_VARIANT':
+                self.c.write('  value = variant;\n')
+                self.c.write('  if (variant != NULL)\n')
+                self.c.write('    g_variant_unref (variant);\n')
+            else:
+                self.c.write('  if (variant != NULL)\n'
+                             '    {\n')
+                extra_len = ''
+                if p.arg.gvariant_get == 'g_variant_get_string' or p.arg.gvariant_get == 'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objv' or p.arg.gvariant_get == 'g_variant_get_bytestring_array':
+                    extra_len = ', NULL'
+                self.c.write('      value = %s (variant%s);\n'%(p.arg.gvariant_get, extra_len))
+                if free_container:
+                    self.c.write('      g_datalist_set_data_full (&proxy->priv->qdata, \"%s\", (gpointer) value, g_free);\n'
+                                 %(p.name))
+                self.c.write('      g_variant_unref (variant);\n')
+                self.c.write('    }\n')
+            self.c.write('  return value;\n')
+            self.c.write('}\n')
+            self.c.write('\n')
+
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%s_proxy_init (%sProxy *proxy)\n'
+                     '{\n'
+                     '  proxy->priv = %s_proxy_get_instance_private (proxy);\n'
+                     '  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), %s_interface_info ());\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower, i.camel_name,
+                       i.name_lower,
+                       i.name_lower))
+        self.c.write('static void\n'
+                     '%s_proxy_class_init (%sProxyClass *klass)\n'
+                     '{\n'
+                     '  GObjectClass *gobject_class;\n'
+                     '  GDBusProxyClass *proxy_class;\n'
+                     '\n'
+                     '  gobject_class = G_OBJECT_CLASS (klass);\n'
+                     '  gobject_class->finalize     = %s_proxy_finalize;\n'
+                     '  gobject_class->get_property = %s_proxy_get_property;\n'
+                     '  gobject_class->set_property = %s_proxy_set_property;\n'
+                     '\n'
+                     '  proxy_class = G_DBUS_PROXY_CLASS (klass);\n'
+                     '  proxy_class->g_signal = %s_proxy_g_signal;\n'
+                     '  proxy_class->g_properties_changed = %s_proxy_g_properties_changed;\n'
+                     '\n'%(i.name_lower, i.camel_name,
+                           i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+        if len(i.properties) > 0:
+            self.c.write('\n'
+                         '  %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write('static void\n'
+                     '%s_proxy_iface_init (%sIface *iface)\n'
+                     '{\n'%(i.name_lower, i.camel_name))
+        for p in i.properties:
+            self.c.write('  iface->get_%s = %s_proxy_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        # constructors
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s_proxy_new:\n'
+                ' * @connection: A #GDBusConnection.\n'
+                ' * @flags: Flags from the #GDBusProxyFlags enumeration.\n'
+                ' * @name: (allow-none): A bus name (well-known or unique) or %%NULL if @connection is not a message bus connection.\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @callback: A #GAsyncReadyCallback to call when the request is satisfied.\n'
+                ' * @user_data: User data to pass to @callback.\n'
+                ' *\n'
+                ' * Asynchronously creates a proxy for the D-Bus interface #%s. See g_dbus_proxy_new() for more details.\n'
+                ' *\n'
+                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * You can then call %s_proxy_new_finish() to get the result of the operation.\n'
+                ' *\n'
+                ' * See %s_proxy_new_sync() for the synchronous, blocking version of this constructor.\n'
+                %(i.name_lower, i.name, i.name_lower, i.name_lower), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('void\n'
+                     '%s_proxy_new (\n'
+                     '    GDBusConnection     *connection,\n'
+                     '    GDBusProxyFlags      flags,\n'
+                     '    const gchar         *name,\n'
+                     '    const gchar         *object_path,\n'
+                     '    GCancellable        *cancellable,\n'
+                     '    GAsyncReadyCallback  callback,\n'
+                     '    gpointer             user_data)\n'
+                     '{\n'
+                     '  g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+        self.c.write('/**\n'
+                     ' * %s_proxy_new_finish:\n'
+                     ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new().\n'
+                     ' * @error: Return location for error or %%NULL\n'
+                     ' *\n'
+                     ' * Finishes an operation started with %s_proxy_new().\n'
+                     ' *\n'
+                     ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+                     %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('%s *\n'
+                     '%s_proxy_new_finish (\n'
+                     '    GAsyncResult        *res,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GObject *ret;\n'
+                     '  GObject *source_object;\n'
+                     '  source_object = g_async_result_get_source_object (res);\n'
+                     '  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+                     '  g_object_unref (source_object);\n'
+                     '  if (ret != NULL)\n'
+                     '    return %s%s (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s_proxy_new_sync:\n'
+                ' * @connection: A #GDBusConnection.\n'
+                ' * @flags: Flags from the #GDBusProxyFlags enumeration.\n'
+                ' * @name: (allow-none): A bus name (well-known or unique) or %%NULL if @connection is not a message bus connection.\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @error: Return location for error or %%NULL\n'
+                ' *\n'
+                ' * Synchronously creates a proxy for the D-Bus interface #%s. See g_dbus_proxy_new_sync() for more details.\n'
+                ' *\n'
+                ' * The calling thread is blocked until a reply is received.\n'
+                ' *\n'
+                ' * See %s_proxy_new() for the asynchronous version of this constructor.\n'
+                ' *\n'
+                ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+                %(i.name_lower, i.name, i.name_lower, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('%s *\n'
+                     '%s_proxy_new_sync (\n'
+                     '    GDBusConnection     *connection,\n'
+                     '    GDBusProxyFlags      flags,\n'
+                     '    const gchar         *name,\n'
+                     '    const gchar         *object_path,\n'
+                     '    GCancellable        *cancellable,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GInitable *ret;\n'
+                     '  ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+                     '  if (ret != NULL)\n'
+                     '    return %s%s (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
+        self.c.write('\n')
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s_proxy_new_for_bus:\n'
+                ' * @bus_type: A #GBusType.\n'
+                ' * @flags: Flags from the #GDBusProxyFlags enumeration.\n'
+                ' * @name: A bus name (well-known or unique).\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @callback: A #GAsyncReadyCallback to call when the request is satisfied.\n'
+                ' * @user_data: User data to pass to @callback.\n'
+                ' *\n'
+                ' * Like %s_proxy_new() but takes a #GBusType instead of a #GDBusConnection.\n'
+                ' *\n'
+                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * You can then call %s_proxy_new_for_bus_finish() to get the result of the operation.\n'
+                ' *\n'
+                ' * See %s_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
+                %(i.name_lower, i.name_lower, i.name_lower, i.name_lower), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('void\n'
+                     '%s_proxy_new_for_bus (\n'
+                     '    GBusType             bus_type,\n'
+                     '    GDBusProxyFlags      flags,\n'
+                     '    const gchar         *name,\n'
+                     '    const gchar         *object_path,\n'
+                     '    GCancellable        *cancellable,\n'
+                     '    GAsyncReadyCallback  callback,\n'
+                     '    gpointer             user_data)\n'
+                     '{\n'
+                     '  g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+        self.c.write('/**\n'
+                     ' * %s_proxy_new_for_bus_finish:\n'
+                     ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new_for_bus().\n'
+                     ' * @error: Return location for error or %%NULL\n'
+                     ' *\n'
+                     ' * Finishes an operation started with %s_proxy_new_for_bus().\n'
+                     ' *\n'
+                     ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+                     %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('%s *\n'
+                     '%s_proxy_new_for_bus_finish (\n'
+                     '    GAsyncResult        *res,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GObject *ret;\n'
+                     '  GObject *source_object;\n'
+                     '  source_object = g_async_result_get_source_object (res);\n'
+                     '  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+                     '  g_object_unref (source_object);\n'
+                     '  if (ret != NULL)\n'
+                     '    return %s%s (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s_proxy_new_for_bus_sync:\n'
+                ' * @bus_type: A #GBusType.\n'
+                ' * @flags: Flags from the #GDBusProxyFlags enumeration.\n'
+                ' * @name: A bus name (well-known or unique).\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @error: Return location for error or %%NULL\n'
+                ' *\n'
+                ' * Like %s_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.\n'
+                ' *\n'
+                ' * The calling thread is blocked until a reply is received.\n'
+                ' *\n'
+                ' * See %s_proxy_new_for_bus() for the asynchronous version of this constructor.\n'
+                ' *\n'
+                ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+                %(i.name_lower, i.name_lower, i.name_lower, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('%s *\n'
+                     '%s_proxy_new_for_bus_sync (\n'
+                     '    GBusType             bus_type,\n'
+                     '    GDBusProxyFlags      flags,\n'
+                     '    const gchar         *name,\n'
+                     '    const gchar         *object_path,\n'
+                     '    GCancellable        *cancellable,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GInitable *ret;\n'
+                     '  ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+                     '  if (ret != NULL)\n'
+                     '    return %s%s (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
+        self.c.write('\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_skeleton(self, i):
+        # class boilerplate
+        self.c.write('/* ------------------------------------------------------------------------ */\n'
+                     '\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sSkeleton:\n'
+                ' *\n'
+                ' * The #%sSkeleton structure contains only private data and should only be accessed using the provided API.\n'
+                %(i.camel_name, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sSkeletonClass:\n'
+                ' * @parent_class: The parent class.\n'
+                ' *\n'
+                ' * Class structure for #%sSkeleton.\n'
+                %(i.camel_name, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('\n')
+
+        self.c.write('struct _%sSkeletonPrivate\n'
+                     '{\n'
+                     '  GValue *properties;\n'
+                     '  GList *changed_properties;\n'
+                     '  GSource *changed_properties_idle_source;\n'
+                     '  GMainContext *context;\n'
+                     '  GMutex lock;\n'
+                     '};\n'
+                     '\n'%i.camel_name)
+
+        self.c.write('static void\n'
+                     '_%s_skeleton_handle_method_call (\n'
+                     '  GDBusConnection *connection G_GNUC_UNUSED,\n'
+                     '  const gchar *sender G_GNUC_UNUSED,\n'
+                     '  const gchar *object_path G_GNUC_UNUSED,\n'
+                     '  const gchar *interface_name,\n'
+                     '  const gchar *method_name,\n'
+                     '  GVariant *parameters,\n'
+                     '  GDBusMethodInvocation *invocation,\n'
+                     '  gpointer user_data)\n'
+                     '{\n'
+                     '  %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+                     '  _ExtendedGDBusMethodInfo *info;\n'
+                     '  GVariantIter iter;\n'
+                     '  GVariant *child;\n'
+                     '  GValue *paramv;\n'
+                     '  guint num_params;\n'
+                     '  guint num_extra;\n'
+                     '  guint n;\n'
+                     '  guint signal_id;\n'
+                     '  GValue return_value = G_VALUE_INIT;\n'
+                     %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+        self.c.write('  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);\n'
+                     '  g_assert (info != NULL);\n'
+                     %())
+        self.c.write ('  num_params = g_variant_n_children (parameters);\n'
+                      '  num_extra = info->pass_fdlist ? 3 : 2;'
+                      '  paramv = g_new0 (GValue, num_params + num_extra);\n'
+                      '  n = 0;\n'
+                      '  g_value_init (&paramv[n], %sTYPE_%s);\n'
+                      '  g_value_set_object (&paramv[n++], skeleton);\n'
+                      '  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n'
+                      '  g_value_set_object (&paramv[n++], invocation);\n'
+                      '  if (info->pass_fdlist)\n'
+                      '    {\n'
+                      '#ifdef G_OS_UNIX\n'
+                      '      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);\n'
+                      '      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));\n'
+                      '#else\n'
+                      '      g_assert_not_reached ();\n'
+                      '#endif\n'
+                      '    }\n'
+                      %(i.ns_upper, i.name_upper))
+        self.c.write('  g_variant_iter_init (&iter, parameters);\n'
+                     '  while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+                     '    {\n'
+                     '      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];\n'
+                     '      if (arg_info->use_gvariant)\n'
+                     '        {\n'
+                     '          g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
+                     '          g_value_set_variant (&paramv[n], child);\n'
+                     '          n++;\n'
+                     '        }\n'
+                     '      else\n'
+                     '        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
+                     '      g_variant_unref (child);\n'
+                     '    }\n'
+                     )
+        self.c.write('  signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+                     %(i.ns_upper, i.name_upper))
+        self.c.write('  g_value_init (&return_value, G_TYPE_BOOLEAN);\n'
+                     '  g_signal_emitv (paramv, signal_id, 0, &return_value);\n'
+                     '  if (!g_value_get_boolean (&return_value))\n'
+                     '    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);\n'
+                     '  g_value_unset (&return_value);\n'
+                     )
+        self.c.write('  for (n = 0; n < num_params + num_extra; n++)\n'
+                     '    g_value_unset (&paramv[n]);\n'
+                     '  g_free (paramv);\n')
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write('static GVariant *\n'
+                     '_%s_skeleton_handle_get_property (\n'
+                     '  GDBusConnection *connection G_GNUC_UNUSED,\n'
+                     '  const gchar *sender G_GNUC_UNUSED,\n'
+                     '  const gchar *object_path G_GNUC_UNUSED,\n'
+                     '  const gchar *interface_name G_GNUC_UNUSED,\n'
+                     '  const gchar *property_name,\n'
+                     '  GError **error,\n'
+                     '  gpointer user_data)\n'
+                     '{\n'
+                     '  %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+                     '  GValue value = G_VALUE_INIT;\n'
+                     '  GParamSpec *pspec;\n'
+                     '  _ExtendedGDBusPropertyInfo *info;\n'
+                     '  GVariant *ret;\n'
+                     %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+        self.c.write('  ret = NULL;\n'
+                     '  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+                     '  g_assert (info != NULL);\n'
+                     '  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
+                     '  if (pspec == NULL)\n'
+                     '    {\n'
+                     '      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
+                     '    }\n'
+                     '  else\n'
+                     '    {\n'
+                     '      g_value_init (&value, pspec->value_type);\n'
+                     '      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+                     '      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
+                     '      g_value_unset (&value);\n'
+                     '    }\n'
+                     '  return ret;\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower))
+
+        self.c.write('static gboolean\n'
+                     '_%s_skeleton_handle_set_property (\n'
+                     '  GDBusConnection *connection G_GNUC_UNUSED,\n'
+                     '  const gchar *sender G_GNUC_UNUSED,\n'
+                     '  const gchar *object_path G_GNUC_UNUSED,\n'
+                     '  const gchar *interface_name G_GNUC_UNUSED,\n'
+                     '  const gchar *property_name,\n'
+                     '  GVariant *variant,\n'
+                     '  GError **error,\n'
+                     '  gpointer user_data)\n'
+                     '{\n'
+                     '  %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+                     '  GValue value = G_VALUE_INIT;\n'
+                     '  GParamSpec *pspec;\n'
+                     '  _ExtendedGDBusPropertyInfo *info;\n'
+                     '  gboolean ret;\n'
+                     %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+        self.c.write('  ret = FALSE;\n'
+                     '  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+                     '  g_assert (info != NULL);\n'
+                     '  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
+                     '  if (pspec == NULL)\n'
+                     '    {\n'
+                     '      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
+                     '    }\n'
+                     '  else\n'
+                     '    {\n'
+                     '      if (info->use_gvariant)\n'
+                     '        g_value_set_variant (&value, variant);\n'
+                     '      else\n'
+                     '        g_dbus_gvariant_to_gvalue (variant, &value);\n'
+                     '      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+                     '      g_value_unset (&value);\n'
+                     '      ret = TRUE;\n'
+                     '    }\n'
+                     '  return ret;\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower))
+
+
+        self.c.write('static const GDBusInterfaceVTable _%s_skeleton_vtable =\n'
+                     '{\n'
+                     '  _%s_skeleton_handle_method_call,\n'
+                     '  _%s_skeleton_handle_get_property,\n'
+                     '  _%s_skeleton_handle_set_property,\n'
+                     '  {NULL}\n'
+                     '};\n'
+                     '\n'%(i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+
+        self.c.write('static GDBusInterfaceInfo *\n'
+                     '%s_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '  return %s_interface_info ();\n'
+                     %(i.name_lower, i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write('static GDBusInterfaceVTable *\n'
+                     '%s_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '  return (GDBusInterfaceVTable *) &_%s_skeleton_vtable;\n'
+                     %(i.name_lower, i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write('static GVariant *\n'
+                     '%s_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)\n'
+                     '{\n'
+                     '  %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+                     %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+        self.c.write('\n'
+                     '  GVariantBuilder builder;\n'
+                     '  guint n;\n'
+                     '  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+                     '  if (_%s_interface_info.parent_struct.properties == NULL)\n'
+                     '    goto out;\n'
+                     '  for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n'
+                     '    {\n'
+                     '      GDBusPropertyInfo *info = _%s_interface_info.parent_struct.properties[n];\n'
+                     '      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)\n'
+                     '        {\n'
+                     '          GVariant *value;\n'
+                     '          value = _%s_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", info->name, NULL, skeleton);\n'
+                     '          if (value != NULL)\n'
+                     '            {\n'
+                     '              g_variant_take_ref (value);\n'
+                     '              g_variant_builder_add (&builder, "{sv}", info->name, value);\n'
+                     '              g_variant_unref (value);\n'
+                     '            }\n'
+                     '        }\n'
+                     '    }\n'
+                     'out:\n'
+                     '  return g_variant_builder_end (&builder);\n'
+                     '}\n'
+                     '\n'
+                     %(i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name))
+
+        if len(i.properties) > 0:
+            self.c.write('static gboolean _%s_emit_changed (gpointer user_data);\n'
+                         '\n'
+                         %(i.name_lower))
+
+        self.c.write('static void\n'
+                     '%s_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)\n'
+                     '{\n'
+                     %(i.name_lower))
+        if len(i.properties) > 0:
+            self.c.write('  %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+                         '  gboolean emit_changed = FALSE;\n'
+                         '\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  if (skeleton->priv->changed_properties_idle_source != NULL)\n'
+                         '    {\n'
+                         '      g_source_destroy (skeleton->priv->changed_properties_idle_source);\n'
+                         '      skeleton->priv->changed_properties_idle_source = NULL;\n'
+                         '      emit_changed = TRUE;\n'
+                         '    }\n'
+                         '  g_mutex_unlock (&skeleton->priv->lock);\n'
+                         '\n'
+                         '  if (emit_changed)\n'
+                         '    _%s_emit_changed (skeleton);\n'
+                         %(i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        for s in i.signals:
+            self.c.write('static void\n'
+                         '_%s_on_signal_%s (\n'
+                         '    %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+            for a in s.args:
+                self.c.write(',\n    %sarg_%s'%(a.ctype_in, a.name))
+            self.c.write(')\n'
+                         '{\n'
+                         '  %sSkeleton *skeleton = %s%s_SKELETON (object);\n\n'
+                         '  GList      *connections, *l;\n'
+                         '  GVariant   *signal_variant;\n'
+                         '  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+                         %(i.camel_name, i.ns_upper, i.name_upper))
+            self.c.write('\n'
+                         '  signal_variant = g_variant_ref_sink (g_variant_new ("(')
+            for a in s.args:
+                self.c.write('%s'%(a.format_in))
+            self.c.write(')"')
+            for a in s.args:
+                self.c.write(',\n                   arg_%s'%(a.name))
+            self.c.write('));\n')
+
+            self.c.write('  for (l = connections; l != NULL; l = l->next)\n'
+                         '    {\n'
+                         '      GDBusConnection *connection = l->data;\n'
+                         '      g_dbus_connection_emit_signal (connection,\n'
+                         '        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", "%s",\n'
+                         '        signal_variant, NULL);\n'
+                         '    }\n'
+                         %(i.name, s.name))
+            self.c.write('  g_variant_unref (signal_variant);\n')
+            self.c.write('  g_list_free_full (connections, g_object_unref);\n')
+            self.c.write('}\n'
+                         '\n')
+
+        self.c.write('static void %s_skeleton_iface_init (%sIface *iface);\n'
+                     %(i.name_lower, i.camel_name))
+
+        self.c.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
+        self.c.write('                         G_ADD_PRIVATE (%sSkeleton)\n'%(i.camel_name))
+        self.c.write('                         G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init));\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+
+        # finalize
+        self.c.write('static void\n'
+                     '%s_skeleton_finalize (GObject *object)\n'
+                     '{\n'%(i.name_lower))
+        self.c.write('  %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+        if len(i.properties) > 0:
+            self.c.write('  guint n;\n'
+                         '  for (n = 0; n < %d; n++)\n'
+                         '    g_value_unset (&skeleton->priv->properties[n]);\n'%(len(i.properties)))
+            self.c.write('  g_free (skeleton->priv->properties);\n')
+        self.c.write('  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
+        self.c.write('  if (skeleton->priv->changed_properties_idle_source != NULL)\n')
+        self.c.write('    g_source_destroy (skeleton->priv->changed_properties_idle_source);\n')
+        self.c.write('  g_main_context_unref (skeleton->priv->context);\n')
+        self.c.write('  g_mutex_clear (&skeleton->priv->lock);\n')
+        self.c.write('  G_OBJECT_CLASS (%s_skeleton_parent_class)->finalize (object);\n'
+                     '}\n'
+                     '\n'%(i.name_lower))
+
+        # property accessors (TODO: generate PropertiesChanged signals in setter)
+        if len(i.properties) > 0:
+            self.c.write('static void\n'
+                         '%s_skeleton_get_property (GObject      *object,\n'
+                         '  guint         prop_id,\n'
+                         '  GValue       *value,\n'
+                         '  GParamSpec   *pspec G_GNUC_UNUSED)\n'
+                         '{\n'%(i.name_lower))
+            self.c.write('  %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+                         '  g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  g_value_copy (&skeleton->priv->properties[prop_id - 1], value);\n'
+                         '  g_mutex_unlock (&skeleton->priv->lock);\n'
+                         %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties)))
+            self.c.write('}\n'
+                         '\n')
+
+            # if property is already scheduled then re-use entry.. though it could be
+            # that the user did
+            #
+            #  foo_set_prop_bar (object, "");
+            #  foo_set_prop_bar (object, "blah");
+            #
+            # say, every update... In this case, where nothing happens, we obviously
+            # don't want a PropertiesChanged() event. We can easily check for this
+            # by comparing against the _original value_ recorded before the first
+            # change event. If the latest value is not different from the original
+            # one, we can simply ignore the ChangedProperty
+            #
+            self.c.write('static gboolean\n'
+                         '_%s_emit_changed (gpointer user_data)\n'
+                         '{\n'
+                         '  %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+                         %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+            self.c.write('  GList *l;\n'
+                         '  GVariantBuilder builder;\n'
+                         '  GVariantBuilder invalidated_builder;\n'
+                         '  guint num_changes;\n'
+                         '\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+                         '  g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
+                         '  for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)\n'
+                         '    {\n'
+                         '      ChangedProperty *cp = l->data;\n'
+                         '      GVariant *variant;\n'
+                         '      const GValue *cur_value;\n'
+                         '\n'
+                         '      cur_value = &skeleton->priv->properties[cp->prop_id - 1];\n'
+                         '      if (!_g_value_equal (cur_value, &cp->orig_value))\n'
+                         '        {\n'
+                         '          variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));\n'
+                         '          g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);\n'
+                         '          g_variant_unref (variant);\n'
+                         '          num_changes++;\n'
+                         '        }\n'
+                         '    }\n'
+                         '  if (num_changes > 0)\n'
+                         '    {\n'
+                         '      GList *connections, *ll;\n'
+                         '      GVariant *signal_variant;'
+                         '\n'
+                         '      signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "%s",\n'
+                         '                                           &builder, &invalidated_builder));\n'
+                         '      connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+                         '      for (ll = connections; ll != NULL; ll = ll->next)\n'
+                         '        {\n'
+                         '          GDBusConnection *connection = ll->data;\n'
+                         '\n'
+                         '          g_dbus_connection_emit_signal (connection,\n'
+                         '                                         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),\n'
+                         '                                         "org.freedesktop.DBus.Properties",\n'
+                         '                                         "PropertiesChanged",\n'
+                         '                                         signal_variant,\n'
+                         '                                         NULL);\n'
+                         '        }\n'
+                         '      g_variant_unref (signal_variant);\n'
+                         '      g_list_free_full (connections, g_object_unref);\n'
+                         '    }\n'
+                         '  else\n'
+                         '    {\n'
+                         '      g_variant_builder_clear (&builder);\n'
+                         '      g_variant_builder_clear (&invalidated_builder);\n'
+                         '    }\n'
+                         %(i.name))
+            self.c.write('  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
+            self.c.write('  skeleton->priv->changed_properties = NULL;\n')
+            self.c.write('  skeleton->priv->changed_properties_idle_source = NULL;\n')
+            self.c.write('  g_mutex_unlock (&skeleton->priv->lock);\n')
+            self.c.write('  return FALSE;\n'
+                         '}\n'
+                         '\n')
+            # holding lock while being called
+            self.c.write('static void\n'
+                         '_%s_schedule_emit_changed (%sSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)\n'
+                         '{\n'
+                         '  ChangedProperty *cp;\n'
+                         '  GList *l;\n'
+                         '  cp = NULL;\n'
+                         '  for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)\n'
+                         '    {\n'
+                         '      ChangedProperty *i_cp = l->data;\n'
+                         '      if (i_cp->info == info)\n'
+                         '        {\n'
+                         '          cp = i_cp;\n'
+                         '          break;\n'
+                         '        }\n'
+                         '    }\n'
+                         %(i.name_lower, i.camel_name))
+            self.c.write('  if (cp == NULL)\n'
+                         '    {\n'
+                         '      cp = g_new0 (ChangedProperty, 1);\n'
+                         '      cp->prop_id = prop_id;\n'
+                         '      cp->info = info;\n'
+                         '      skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);\n'
+                         '      g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));\n'
+                         '      g_value_copy (orig_value, &cp->orig_value);\n'
+                         '    }\n'
+                         '}\n'
+                         '\n'
+                         %())
+
+            # Postpone setting up the refresh source until the ::notify signal is emitted as
+            # this allows use of g_object_freeze_notify()/g_object_thaw_notify() ...
+            # This is useful when updating several properties from another thread than
+            # where the idle will be emitted from
+            self.c.write('static void\n'
+                         '%s_skeleton_notify (GObject      *object,\n'
+                         '  GParamSpec *pspec G_GNUC_UNUSED)\n'
+                         '{\n'
+                         '  %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  if (skeleton->priv->changed_properties != NULL &&\n'
+                         '      skeleton->priv->changed_properties_idle_source == NULL)\n'
+                         '    {\n'
+                         '      skeleton->priv->changed_properties_idle_source = g_idle_source_new ();\n'
+                         '      g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);\n'
+                         '      g_source_set_callback (skeleton->priv->changed_properties_idle_source, _%s_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);\n'
+                         '      g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);\n'
+                         '      g_source_unref (skeleton->priv->changed_properties_idle_source);\n'
+                         '    }\n'
+                         '  g_mutex_unlock (&skeleton->priv->lock);\n'
+                         '}\n'
+                         '\n'
+                         %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
+
+            self.c.write('static void\n'
+                         '%s_skeleton_set_property (GObject      *object,\n'
+                         '  guint         prop_id,\n'
+                         '  const GValue *value,\n'
+                         '  GParamSpec   *pspec)\n'
+                         '{\n'%(i.name_lower))
+            self.c.write('  %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+                         '  g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  g_object_freeze_notify (object);\n'
+                         '  if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))\n'
+                         '    {\n'
+                         '      if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)\n'
+                         '        _%s_schedule_emit_changed (skeleton, _%s_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);\n'
+                         '      g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);\n'
+                         '      g_object_notify_by_pspec (object, pspec);\n'
+                         '    }\n'
+                         '  g_mutex_unlock (&skeleton->priv->lock);\n'
+                         '  g_object_thaw_notify (object);\n'
+                         %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties), i.name_lower, i.name_lower))
+            self.c.write('}\n'
+                         '\n')
+
+        self.c.write('static void\n'
+                     '%s_skeleton_init (%sSkeleton *skeleton)\n'
+                     '{\n'
+                     '  skeleton->priv = %s_skeleton_get_instance_private (skeleton);\n'
+                     %(i.name_lower, i.camel_name,
+                       i.name_lower))
+        self.c.write('  g_mutex_init (&skeleton->priv->lock);\n')
+        self.c.write('  skeleton->priv->context = g_main_context_ref_thread_default ();\n')
+        if len(i.properties) > 0:
+            self.c.write('  skeleton->priv->properties = g_new0 (GValue, %d);\n'%(len(i.properties)))
+            n = 0
+            for p in i.properties:
+                self.c.write('  g_value_init (&skeleton->priv->properties[%d], %s);\n'%(n, p.arg.gtype))
+                n += 1
+        self.c.write('}\n'
+                     '\n')
+
+        # property vfuncs
+        n = 0
+        for p in i.properties:
+            self.c.write('static %s\n'
+                         '%s_skeleton_get_%s (%s *object)\n'
+                         '{\n'
+                         %(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+            self.c.write('  %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+            self.c.write('  %svalue;\n'
+                         '  g_mutex_lock (&skeleton->priv->lock);\n'
+                         '  value = %s (&(skeleton->priv->properties[%d]));\n'
+                         '  g_mutex_unlock (&skeleton->priv->lock);\n'
+                         %(p.arg.ctype_in_g, p.arg.gvalue_get, n))
+            self.c.write('  return value;\n')
+            self.c.write('}\n')
+            self.c.write('\n')
+            n += 1
+
+        self.c.write('static void\n'
+                     '%s_skeleton_class_init (%sSkeletonClass *klass)\n'
+                     '{\n'
+                     '  GObjectClass *gobject_class;\n'
+                     '  GDBusInterfaceSkeletonClass *skeleton_class;\n'
+                     '\n'
+                     '  gobject_class = G_OBJECT_CLASS (klass);\n'
+                     '  gobject_class->finalize = %s_skeleton_finalize;\n'
+                     %(i.name_lower, i.camel_name, i.name_lower))
+        if len(i.properties) > 0:
+            self.c.write('  gobject_class->get_property = %s_skeleton_get_property;\n'
+                         '  gobject_class->set_property = %s_skeleton_set_property;\n'
+                         '  gobject_class->notify       = %s_skeleton_notify;\n'
+                         '\n'%(i.name_lower, i.name_lower, i.name_lower))
+            self.c.write('\n'
+                         '  %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
+        self.c.write('\n'
+                     '  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);\n');
+        self.c.write('  skeleton_class->get_info = %s_skeleton_dbus_interface_get_info;\n'%(i.name_lower))
+        self.c.write('  skeleton_class->get_properties = %s_skeleton_dbus_interface_get_properties;\n'%(i.name_lower))
+        self.c.write('  skeleton_class->flush = %s_skeleton_dbus_interface_flush;\n'%(i.name_lower))
+        self.c.write('  skeleton_class->get_vtable = %s_skeleton_dbus_interface_get_vtable;\n'%(i.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write('static void\n'
+                     '%s_skeleton_iface_init (%sIface *iface)\n'
+                     '{\n'
+                     %(i.name_lower, i.camel_name))
+        for s in i.signals:
+            self.c.write('  iface->%s = _%s_on_signal_%s;\n'
+                         %(s.name_lower, i.name_lower, s.name_lower))
+        for p in i.properties:
+            self.c.write('  iface->get_%s = %s_skeleton_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
+        self.c.write('}\n'
+                     '\n')
+
+        # constructors
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %s_skeleton_new:\n'
+                ' *\n'
+                ' * Creates a skeleton object for the D-Bus interface #%s.\n'
+                ' *\n'
+                ' * Returns: (transfer full) (type %sSkeleton): The skeleton object.\n'
+                %(i.name_lower, i.name, i.camel_name), False))
+        self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+        self.c.write('%s *\n'
+                     '%s_skeleton_new (void)\n'
+                     '{\n'
+                     '  return %s%s (g_object_new (%sTYPE_%s_SKELETON, NULL));\n'
+                     '}\n'
+                     '\n'%(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_object(self):
+        self.c.write('/* ------------------------------------------------------------------------\n'
+                     ' * Code for Object, ObjectProxy and ObjectSkeleton\n'
+                     ' * ------------------------------------------------------------------------\n'
+                     ' */\n'
+                     '\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * SECTION:%sObject\n'
+                ' * @title: %sObject\n'
+                ' * @short_description: Specialized GDBusObject types\n'
+                ' *\n'
+                ' * This section contains the #%sObject, #%sObjectProxy, and #%sObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.\n'
+                ' */\n'
+                %(self.namespace, self.namespace, self.namespace, self.namespace, self.namespace), False))
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObject:\n'
+                ' *\n'
+                ' * The #%sObject type is a specialized container of interfaces.\n'
+                ' */\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectIface:\n'
+                ' * @parent_iface: The parent interface.\n'
+                ' *\n'
+                ' * Virtual table for the #%sObject interface.\n'
+                ' */\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write('\n')
+
+        self.c.write('typedef %sObjectIface %sObjectInterface;\n'%(self.namespace, self.namespace))
+        self.c.write('G_DEFINE_INTERFACE_WITH_CODE (%sObject, %sobject, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));\n'%(self.namespace, self.ns_lower))
+        self.c.write('\n')
+        self.c.write('static void\n'
+                     '%sobject_default_init (%sObjectIface *iface)\n'
+                     '{\n'
+                     %(self.ns_lower, self.namespace));
+        for i in self.ifaces:
+            self.c.write(self.docbook_gen.expand(
+                    '  /**\n'
+                    '   * %sObject:%s:\n'
+                    '   *\n'
+                    '   * The #%s instance corresponding to the D-Bus interface #%s, if any.\n'
+                    '   *\n'
+                    '   * Connect to the #GObject::notify signal to get informed of property changes.\n'
+                    %(self.namespace, i.name_hyphen, i.camel_name, i.name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 2)
+            self.c.write('  g_object_interface_install_property (iface, g_param_spec_object ("%s", "%s", "%s", %sTYPE_%s, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));\n'
+                         '\n'
+                         %(i.name_hyphen, i.name_hyphen, i.name_hyphen, self.ns_upper, i.name_upper))
+        self.c.write('}\n'
+                     '\n')
+
+        for i in self.ifaces:
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %sobject_get_%s:\n'
+                    ' * @object: A #%sObject.\n'
+                    ' *\n'
+                    ' * Gets the #%s instance for the D-Bus interface #%s on @object, if any.\n'
+                    ' *\n'
+                    ' * Returns: (transfer full): A #%s that must be freed with g_object_unref() or %%NULL if @object does not implement the interface.\n'
+                    %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.name, i.camel_name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+            self.c.write ('%s *%sobject_get_%s (%sObject *object)\n'
+                          %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+            self.c.write('{\n'
+                         '  GDBusInterface *ret;\n'
+                         '  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+                         '  if (ret == NULL)\n'
+                         '    return NULL;\n'
+                         '  return %s%s (ret);\n'
+                         '}\n'
+                         '\n'
+                         %(i.name, self.ns_upper, i.name_upper))
+        self.c.write('\n')
+        for i in self.ifaces:
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %sobject_peek_%s: (skip)\n'
+                    ' * @object: A #%sObject.\n'
+                    ' *\n'
+                    ' * Like %sobject_get_%s() but doesn\'t increase the reference count on the returned object.\n'
+                    ' *\n'
+                    ' * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>\n'
+                    ' *\n'
+                    ' * Returns: (transfer none): A #%s or %%NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.\n'
+                    %(self.ns_lower, i.name_upper.lower(), self.namespace, self.ns_lower, i.name_upper.lower(), i.camel_name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+            self.c.write ('%s *%sobject_peek_%s (%sObject *object)\n'
+                          %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+            self.c.write('{\n'
+                         '  GDBusInterface *ret;\n'
+                         '  ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+                         '  if (ret == NULL)\n'
+                         '    return NULL;\n'
+                         '  g_object_unref (ret);\n'
+                         '  return %s%s (ret);\n'
+                         '}\n'
+                         '\n'
+                         %(i.name, self.ns_upper, i.name_upper))
+        self.c.write('\n')
+        # shared by ObjectProxy and ObjectSkeleton classes
+        self.c.write('static void\n'
+                     '%sobject_notify (GDBusObject *object, GDBusInterface *interface)\n'
+                     '{\n'
+                     '  g_object_notify (G_OBJECT (object), ((_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface))->hyphen_name);\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower))
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectProxy:\n'
+                ' *\n'
+                ' * The #%sObjectProxy structure contains only private data and should only be accessed using the provided API.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectProxyClass:\n'
+                ' * @parent_class: The parent class.\n'
+                ' *\n'
+                ' * Class structure for #%sObjectProxy.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%sobject_proxy__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_lower, self.namespace))
+        self.c.write('static void\n'
+                     '%sobject_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+                     '{\n'
+                     '  iface->interface_added = %sobject_notify;\n'
+                     '  iface->interface_removed = %sobject_notify;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_lower, self.ns_lower))
+        self.c.write('\n')
+        self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectProxy, %sobject_proxy, G_TYPE_DBUS_OBJECT_PROXY,\n'
+                     '                         G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_proxy__%sobject_iface_init)\n'
+                     '                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_proxy__g_dbus_object_iface_init));\n'
+                     '\n'
+                     %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%sobject_proxy_init (%sObjectProxy *object G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'%(self.ns_lower, self.namespace))
+        self.c.write('static void\n'
+                     '%sobject_proxy_set_property (GObject      *gobject,\n'
+                     '  guint         prop_id,\n'
+                     '  const GValue *value G_GNUC_UNUSED,\n'
+                     '  GParamSpec   *pspec)\n'
+                     '{\n'
+                     '  G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+                     %(self.ns_lower))
+        self.c.write('}\n'
+                     '\n'%())
+        self.c.write('static void\n'
+                     '%sobject_proxy_get_property (GObject      *gobject,\n'
+                     '  guint         prop_id,\n'
+                     '  GValue       *value,\n'
+                     '  GParamSpec   *pspec)\n'
+                     '{\n'
+                     '  %sObjectProxy *object = %sOBJECT_PROXY (gobject);\n'
+                     '  GDBusInterface *interface;\n'
+                     '\n'
+                     '  switch (prop_id)\n'
+                     '    {\n'
+                     %(self.ns_lower, self.namespace, self.ns_upper))
+        n = 1
+        for i in self.ifaces:
+            self.c.write('    case %d:\n'
+                         '      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+                         '      g_value_take_object (value, interface);\n'
+                         '      break;\n'
+                         '\n'
+                         %(n, i.name))
+            n += 1
+        self.c.write('    default:\n'
+                     '      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+                     '      break;\n'
+                     '  }\n'
+                     '}\n'
+                     '\n'%())
+        self.c.write('static void\n'
+                     '%sobject_proxy_class_init (%sObjectProxyClass *klass)\n'
+                     '{\n'
+                     '  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+                     '\n'
+                     '  gobject_class->set_property = %sobject_proxy_set_property;\n'
+                     '  gobject_class->get_property = %sobject_proxy_get_property;\n'
+                     '\n'
+                     %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+        n = 1
+        for i in self.ifaces:
+            self.c.write('  g_object_class_override_property (gobject_class, %d, "%s");'
+                         '\n'
+                         %(n, i.name_hyphen))
+            n += 1
+        self.c.write('}\n'
+                     '\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_proxy_new:\n'
+                ' * @connection: A #GDBusConnection.\n'
+                ' * @object_path: An object path.\n'
+                ' *\n'
+                ' * Creates a new proxy object.\n'
+                ' *\n'
+                ' * Returns: (transfer full): The proxy object.\n'
+                ' */\n'
+                %(self.ns_lower), False))
+        self.c.write('%sObjectProxy *\n'
+                     '%sobject_proxy_new (GDBusConnection *connection,\n'
+                     '  const gchar *object_path)\n'
+                     '{\n'
+                     '  g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);\n'
+                     '  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
+                     '  return %sOBJECT_PROXY (g_object_new (%sTYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));\n'
+                     '}\n'
+                     '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectSkeleton:\n'
+                ' *\n'
+                ' * The #%sObjectSkeleton structure contains only private data and should only be accessed using the provided API.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectSkeletonClass:\n'
+                ' * @parent_class: The parent class.\n'
+                ' *\n'
+                ' * Class structure for #%sObjectSkeleton.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%sobject_skeleton__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_lower, self.namespace))
+        self.c.write('\n')
+        self.c.write('static void\n'
+                     '%sobject_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+                     '{\n'
+                     '  iface->interface_added = %sobject_notify;\n'
+                     '  iface->interface_removed = %sobject_notify;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_lower, self.ns_lower))
+        self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectSkeleton, %sobject_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,\n'
+                     '                         G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_skeleton__%sobject_iface_init)\n'
+                     '                         G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_skeleton__g_dbus_object_iface_init));\n'
+                     '\n'
+                     %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%sobject_skeleton_init (%sObjectSkeleton *object G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'%(self.ns_lower, self.namespace))
+        self.c.write('static void\n'
+                     '%sobject_skeleton_set_property (GObject      *gobject,\n'
+                     '  guint         prop_id,\n'
+                     '  const GValue *value,\n'
+                     '  GParamSpec   *pspec)\n'
+                     '{\n'
+                     '  %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+                     '  GDBusInterfaceSkeleton *interface;\n'
+                     '\n'
+                     '  switch (prop_id)\n'
+                     '    {\n'
+                     %(self.ns_lower, self.namespace, self.ns_upper))
+        n = 1
+        for i in self.ifaces:
+            self.c.write('    case %d:\n'
+                         '      interface = g_value_get_object (value);\n'
+                         '      if (interface != NULL)\n'
+                         '        {\n'
+                         '          g_warn_if_fail (%sIS_%s (interface));\n'
+                         '          g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);\n'
+                         '        }\n'
+                         '      else\n'
+                         '        {\n'
+                         '          g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "%s");\n'
+                         '        }\n'
+                         '      break;\n'
+                         '\n'
+                         %(n, self.ns_upper, i.name_upper, i.name))
+            n += 1
+        self.c.write('    default:\n'
+                     '      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+                     '      break;\n'
+                     '  }\n'
+                     '}\n'
+                     '\n'%())
+        self.c.write('static void\n'
+                     '%sobject_skeleton_get_property (GObject      *gobject,\n'
+                     '  guint         prop_id,\n'
+                     '  GValue       *value,\n'
+                     '  GParamSpec   *pspec)\n'
+                     '{\n'
+                     '  %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+                     '  GDBusInterface *interface;\n'
+                     '\n'
+                     '  switch (prop_id)\n'
+                     '    {\n'
+                     %(self.ns_lower, self.namespace, self.ns_upper))
+        n = 1
+        for i in self.ifaces:
+            self.c.write('    case %d:\n'
+                         '      interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+                         '      g_value_take_object (value, interface);\n'
+                         '      break;\n'
+                         '\n'
+                         %(n, i.name))
+            n += 1
+        self.c.write('    default:\n'
+                     '      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+                     '      break;\n'
+                     '  }\n'
+                     '}\n'
+                     '\n'%())
+        self.c.write('static void\n'
+                     '%sobject_skeleton_class_init (%sObjectSkeletonClass *klass)\n'
+                     '{\n'
+                     '  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+                     '\n'
+                     '  gobject_class->set_property = %sobject_skeleton_set_property;\n'
+                     '  gobject_class->get_property = %sobject_skeleton_get_property;\n'
+                     '\n'
+                     %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+        n = 1
+        for i in self.ifaces:
+            self.c.write('  g_object_class_override_property (gobject_class, %d, "%s");'
+                         '\n'
+                         %(n, i.name_hyphen))
+            n += 1
+        self.c.write('}\n'
+                     '\n')
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_skeleton_new:\n'
+                ' * @object_path: An object path.\n'
+                ' *\n'
+                ' * Creates a new skeleton object.\n'
+                ' *\n'
+                ' * Returns: (transfer full): The skeleton object.\n'
+                ' */\n'
+                %(self.ns_lower), False))
+        self.c.write('%sObjectSkeleton *\n'
+                     '%sobject_skeleton_new (const gchar *object_path)\n'
+                     '{\n'
+                     '  g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
+                     '  return %sOBJECT_SKELETON (g_object_new (%sTYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));\n'
+                     '}\n'
+                     '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
+        for i in self.ifaces:
+            self.c.write(self.docbook_gen.expand(
+                    '/**\n'
+                    ' * %sobject_skeleton_set_%s:\n'
+                    ' * @object: A #%sObjectSkeleton.\n'
+                    ' * @interface_: (allow-none): A #%s or %%NULL to clear the interface.\n'
+                    ' *\n'
+                    ' * Sets the #%s instance for the D-Bus interface #%s on @object.\n'
+                    %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.camel_name, i.name), False))
+            self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
+            self.c.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_)\n'
+                          %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+            self.c.write('{\n'
+                         '  g_object_set (G_OBJECT (object), "%s", interface_, NULL);\n'
+                         '}\n'
+                         '\n'
+                         %(i.name_hyphen))
+        self.c.write('\n')
+
+
+    def generate_object_manager_client(self):
+        self.c.write('/* ------------------------------------------------------------------------\n'
+                     ' * Code for ObjectManager client\n'
+                     ' * ------------------------------------------------------------------------\n'
+                     ' */\n'
+                     '\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * SECTION:%sObjectManagerClient\n'
+                ' * @title: %sObjectManagerClient\n'
+                ' * @short_description: Generated GDBusObjectManagerClient type\n'
+                ' *\n'
+                ' * This section contains a #GDBusObjectManagerClient that uses %sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.\n'
+                ' */\n'
+                %(self.namespace, self.namespace, self.ns_lower), False))
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectManagerClient:\n'
+                ' *\n'
+                ' * The #%sObjectManagerClient structure contains only private data and should only be accessed using the provided API.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sObjectManagerClientClass:\n'
+                ' * @parent_class: The parent class.\n'
+                ' *\n'
+                ' * Class structure for #%sObjectManagerClient.\n'
+                %(self.namespace, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('\n')
+
+        # class boilerplate
+        self.c.write('G_DEFINE_TYPE (%sObjectManagerClient, %sobject_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);\n'
+                     '\n'
+                     %(self.namespace, self.ns_lower))
+
+        # class boilerplate
+        self.c.write('static void\n'
+                     '%sobject_manager_client_init (%sObjectManagerClient *manager G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'%(self.ns_lower, self.namespace))
+        self.c.write('static void\n'
+                     '%sobject_manager_client_class_init (%sObjectManagerClientClass *klass G_GNUC_UNUSED)\n'
+                     '{\n'
+                     '}\n'
+                     '\n'%(self.ns_lower, self.namespace))
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_manager_client_get_proxy_type:\n'
+                ' * @manager: A #GDBusObjectManagerClient.\n'
+                ' * @object_path: The object path of the remote object (unused).\n'
+                ' * @interface_name: (allow-none): Interface name of the remote object or %%NULL to get the object proxy #GType.\n'
+                ' * @user_data: User data (unused).\n'
+                ' *\n'
+                ' * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.\n'
+                ' *\n'
+                ' * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %%NULL, otherwise the #GType for #%sObjectProxy.\n'
+                %(self.ns_lower, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('GType\n'
+                     '%sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)\n'
+                     '{\n'
+                     %(self.ns_lower))
+        self.c.write('  static gsize once_init_value = 0;\n'
+                     '  static GHashTable *lookup_hash;\n'
+                     '  GType ret;\n'
+                     '\n'
+                     '  if (interface_name == NULL)\n'
+                     '    return %sTYPE_OBJECT_PROXY;\n'
+                     '  if (g_once_init_enter (&once_init_value))\n'
+                     '    {\n'
+                     '      lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);\n'
+                     %(self.ns_upper))
+        for i in self.ifaces:
+            self.c.write('      g_hash_table_insert (lookup_hash, (gpointer) "%s", GSIZE_TO_POINTER (%sTYPE_%s_PROXY));\n'
+                         %(i.name, i.ns_upper, i.name_upper))
+        self.c.write('      g_once_init_leave (&once_init_value, 1);\n'
+                     '    }\n')
+        self.c.write('  ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));\n'
+                     '  if (ret == (GType) 0)\n'
+                     '    ret = G_TYPE_DBUS_PROXY;\n')
+        self.c.write('  return ret;\n'
+                     '}\n'
+                     '\n')
+
+        # constructors
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_manager_client_new:\n'
+                ' * @connection: A #GDBusConnection.\n'
+                ' * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.\n'
+                ' * @name: (allow-none): A bus name (well-known or unique) or %%NULL if @connection is not a message bus connection.\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @callback: A #GAsyncReadyCallback to call when the request is satisfied.\n'
+                ' * @user_data: User data to pass to @callback.\n'
+                ' *\n'
+                ' * Asynchronously creates #GDBusObjectManagerClient using %sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.\n'
+                ' *\n'
+                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * You can then call %sobject_manager_client_new_finish() to get the result of the operation.\n'
+                ' *\n'
+                ' * See %sobject_manager_client_new_sync() for the synchronous, blocking version of this constructor.\n'
+                %(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
+        self.c.write(' */\n')
+        self.c.write('void\n'
+                     '%sobject_manager_client_new (\n'
+                     '    GDBusConnection        *connection,\n'
+                     '    GDBusObjectManagerClientFlags  flags,\n'
+                     '    const gchar            *name,\n'
+                     '    const gchar            *object_path,\n'
+                     '    GCancellable           *cancellable,\n'
+                     '    GAsyncReadyCallback     callback,\n'
+                     '    gpointer                user_data)\n'
+                     '{\n'
+                     '  g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_upper, self.ns_lower))
+        self.c.write('/**\n'
+                     ' * %sobject_manager_client_new_finish:\n'
+                     ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new().\n'
+                     ' * @error: Return location for error or %%NULL\n'
+                     ' *\n'
+                     ' * Finishes an operation started with %sobject_manager_client_new().\n'
+                     ' *\n'
+                     ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+                     %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+        self.c.write(' */\n')
+        self.c.write('GDBusObjectManager *\n'
+                     '%sobject_manager_client_new_finish (\n'
+                     '    GAsyncResult        *res,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GObject *ret;\n'
+                     '  GObject *source_object;\n'
+                     '  source_object = g_async_result_get_source_object (res);\n'
+                     '  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+                     '  g_object_unref (source_object);\n'
+                     '  if (ret != NULL)\n'
+                     '    return G_DBUS_OBJECT_MANAGER (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower))
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_manager_client_new_sync:\n'
+                ' * @connection: A #GDBusConnection.\n'
+                ' * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.\n'
+                ' * @name: (allow-none): A bus name (well-known or unique) or %%NULL if @connection is not a message bus connection.\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @error: Return location for error or %%NULL\n'
+                ' *\n'
+                ' * Synchronously creates #GDBusObjectManagerClient using %sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.\n'
+                ' *\n'
+                ' * The calling thread is blocked until a reply is received.\n'
+                ' *\n'
+                ' * See %sobject_manager_client_new() for the asynchronous version of this constructor.\n'
+                ' *\n'
+                ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+                %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('GDBusObjectManager *\n'
+                     '%sobject_manager_client_new_sync (\n'
+                     '    GDBusConnection        *connection,\n'
+                     '    GDBusObjectManagerClientFlags  flags,\n'
+                     '    const gchar            *name,\n'
+                     '    const gchar            *object_path,\n'
+                     '    GCancellable           *cancellable,\n'
+                     '    GError                **error)\n'
+                     '{\n'
+                     '  GInitable *ret;\n'
+                     '  ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+                     '  if (ret != NULL)\n'
+                     '    return G_DBUS_OBJECT_MANAGER (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_upper, self.ns_lower))
+        self.c.write('\n')
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_manager_client_new_for_bus:\n'
+                ' * @bus_type: A #GBusType.\n'
+                ' * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.\n'
+                ' * @name: A bus name (well-known or unique).\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @callback: A #GAsyncReadyCallback to call when the request is satisfied.\n'
+                ' * @user_data: User data to pass to @callback.\n'
+                ' *\n'
+                ' * Like %sobject_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.\n'
+                ' *\n'
+                ' * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.\n'
+                ' * You can then call %sobject_manager_client_new_for_bus_finish() to get the result of the operation.\n'
+                ' *\n'
+                ' * See %sobject_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
+                %(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
+        self.c.write(' */\n')
+        self.c.write('void\n'
+                     '%sobject_manager_client_new_for_bus (\n'
+                     '    GBusType                bus_type,\n'
+                     '    GDBusObjectManagerClientFlags  flags,\n'
+                     '    const gchar            *name,\n'
+                     '    const gchar            *object_path,\n'
+                     '    GCancellable           *cancellable,\n'
+                     '    GAsyncReadyCallback     callback,\n'
+                     '    gpointer                user_data)\n'
+                     '{\n'
+                     '  g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_upper, self.ns_lower))
+        self.c.write('/**\n'
+                     ' * %sobject_manager_client_new_for_bus_finish:\n'
+                     ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new_for_bus().\n'
+                     ' * @error: Return location for error or %%NULL\n'
+                     ' *\n'
+                     ' * Finishes an operation started with %sobject_manager_client_new_for_bus().\n'
+                     ' *\n'
+                     ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+                     %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+        self.c.write(' */\n')
+        self.c.write('GDBusObjectManager *\n'
+                     '%sobject_manager_client_new_for_bus_finish (\n'
+                     '    GAsyncResult        *res,\n'
+                     '    GError             **error)\n'
+                     '{\n'
+                     '  GObject *ret;\n'
+                     '  GObject *source_object;\n'
+                     '  source_object = g_async_result_get_source_object (res);\n'
+                     '  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+                     '  g_object_unref (source_object);\n'
+                     '  if (ret != NULL)\n'
+                     '    return G_DBUS_OBJECT_MANAGER (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower))
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * %sobject_manager_client_new_for_bus_sync:\n'
+                ' * @bus_type: A #GBusType.\n'
+                ' * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.\n'
+                ' * @name: A bus name (well-known or unique).\n'
+                ' * @object_path: An object path.\n'
+                ' * @cancellable: (allow-none): A #GCancellable or %%NULL.\n'
+                ' * @error: Return location for error or %%NULL\n'
+                ' *\n'
+                ' * Like %sobject_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.\n'
+                ' *\n'
+                ' * The calling thread is blocked until a reply is received.\n'
+                ' *\n'
+                ' * See %sobject_manager_client_new_for_bus() for the asynchronous version of this constructor.\n'
+                ' *\n'
+                ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+                %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
+        self.c.write(' */\n')
+        self.c.write('GDBusObjectManager *\n'
+                     '%sobject_manager_client_new_for_bus_sync (\n'
+                     '    GBusType                bus_type,\n'
+                     '    GDBusObjectManagerClientFlags  flags,\n'
+                     '    const gchar            *name,\n'
+                     '    const gchar            *object_path,\n'
+                     '    GCancellable           *cancellable,\n'
+                     '    GError                **error)\n'
+                     '{\n'
+                     '  GInitable *ret;\n'
+                     '  ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+                     '  if (ret != NULL)\n'
+                     '    return G_DBUS_OBJECT_MANAGER (ret);\n'
+                     '  else\n'
+                     '    return NULL;\n'
+                     '}\n'
+                     '\n'
+                     %(self.ns_lower, self.ns_upper, self.ns_lower))
+        self.c.write('\n')
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def write_gtkdoc_deprecated_and_since_and_close(self, obj, f, indent):
+        if len(obj.since) > 0:
+            f.write('%*s *\n'
+                    '%*s * Since: %s\n'
+                    %(indent, '', indent, '', obj.since))
+        if obj.deprecated:
+            if isinstance(obj, dbustypes.Interface):
+                thing = 'The D-Bus interface'
+            elif isinstance(obj, dbustypes.Method):
+                thing = 'The D-Bus method'
+            elif isinstance(obj, dbustypes.Signal):
+                thing = 'The D-Bus signal'
+            elif isinstance(obj, dbustypes.Property):
+                thing = 'The D-Bus property'
+            else:
+                raise RuntimeError('Cannot handle object ', obj)
+            f.write(self.docbook_gen.expand(
+                    '%*s *\n'
+                    '%*s * Deprecated: %s has been deprecated.\n'
+                    %(indent, '', indent, '', thing), False))
+        f.write('%*s */\n'%(indent, ''))
+
+    # ---------------------------------------------------------------------------------------------------
+
+    def generate_interface_intro(self, i):
+        self.c.write('/* ------------------------------------------------------------------------\n'
+                     ' * Code for interface %s\n'
+                     ' * ------------------------------------------------------------------------\n'
+                     ' */\n'
+                     '\n'%(i.name))
+
+        self.c.write(self.docbook_gen.expand(
+                '/**\n'
+                ' * SECTION:%s\n'
+                ' * @title: %s\n'
+                ' * @short_description: Generated C code for the %s D-Bus interface\n'
+                ' *\n'
+                ' * This section contains code for working with the #%s D-Bus interface in C.\n'
+                ' */\n'
+                %(i.camel_name, i.camel_name, i.name, i.name), False))
+        self.c.write('\n')
+
+    def generate(self):
+        self.generate_intro()
+        self.declare_types()
+        for i in self.ifaces:
+            self.generate_interface_intro(i)
+            self.generate_introspection_for_interface(i)
+            self.generate_interface(i)
+            self.generate_property_accessors(i)
+            self.generate_signal_emitters(i)
+            self.generate_method_calls(i)
+            self.generate_method_completers(i)
+            self.generate_proxy(i)
+            self.generate_skeleton(i)
+        if self.generate_objmanager:
+            self.generate_object()
+            self.generate_object_manager_client()
+        self.generate_outro()
diff --git a/dist/usr/share/glib-2.0/codegen/codegen.pyc b/dist/usr/share/glib-2.0/codegen/codegen.pyc
new file mode 100644
index 0000000..eeb90a0
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen.pyo b/dist/usr/share/glib-2.0/codegen/codegen.pyo
new file mode 100644
index 0000000..eeb90a0
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_docbook.py b/dist/usr/share/glib-2.0/codegen/codegen_docbook.py
new file mode 100644
index 0000000..94e07ed
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_docbook.py
@@ -0,0 +1,331 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import sys
+import re
+
+from . import config
+from . import utils
+from . import dbustypes
+from . import parser
+
+# ----------------------------------------------------------------------------------------------------
+
+class DocbookCodeGenerator:
+    def __init__(self, ifaces, docbook):
+        self.ifaces = ifaces
+        self.docbook = docbook
+        self.generate_expand_dicts()
+
+    def print_method_prototype(self, i, m, in_synopsis):
+        max_method_len = 0
+        if in_synopsis:
+            for _m in i.methods:
+                max_method_len = max(len(_m.name), max_method_len)
+        else:
+            max_method_len = max(len(m.name), max_method_len)
+
+        max_signature_len = 0
+        if in_synopsis:
+            for _m in i.methods:
+                for a in _m.in_args:
+                    max_signature_len = max(len(a.signature), max_signature_len)
+                for a in _m.out_args:
+                    max_signature_len = max(len(a.signature), max_signature_len)
+        else:
+            for a in m.in_args:
+                max_signature_len = max(len(a.signature), max_signature_len)
+            for a in m.out_args:
+                max_signature_len = max(len(a.signature), max_signature_len)
+
+        if in_synopsis:
+            self.out.write('<link linkend="gdbus-method-%s.%s">%s</link>%*s ('
+                           %(utils.dots_to_hyphens(i.name), m.name, m.name, max_method_len - len(m.name), ''))
+        else:
+            self.out.write('%s%*s ('
+                           %(m.name, max_method_len - len(m.name), ''))
+        count = 0
+        for a in m.in_args:
+            if (count > 0):
+                self.out.write(',\n%*s'%(max_method_len + 2, ''))
+            self.out.write('IN  %s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name))
+            count = count + 1
+        for a in m.out_args:
+            if (count > 0):
+                self.out.write(',\n%*s'%(max_method_len + 2, ''))
+            self.out.write('OUT %s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name))
+            count = count + 1
+        self.out.write(');\n')
+
+    def print_signal_prototype(self, i, s, in_synopsis):
+        max_signal_len = 0
+        if in_synopsis:
+            for _s in i.signals:
+                max_signal_len = max(len(_s.name), max_signal_len)
+        else:
+            max_signal_len = max(len(s.name), max_signal_len)
+
+        max_signature_len = 0
+        if in_synopsis:
+            for _s in i.signals:
+                for a in _s.args:
+                    max_signature_len = max(len(a.signature), max_signature_len)
+        else:
+            for a in s.args:
+                max_signature_len = max(len(a.signature), max_signature_len)
+
+        if in_synopsis:
+            self.out.write('<link linkend="gdbus-signal-%s.%s">%s</link>%*s ('
+                           %(utils.dots_to_hyphens(i.name), s.name, s.name, max_signal_len - len(s.name), ''))
+        else:
+            self.out.write('%s%*s ('
+                           %(s.name, max_signal_len - len(s.name), ''))
+        count = 0
+        for a in s.args:
+            if (count > 0):
+                self.out.write(',\n%*s'%(max_signal_len + 2, ''))
+            self.out.write('%s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name))
+            count = count + 1
+        self.out.write(');\n')
+
+    def print_property_prototype(self, i, p, in_synopsis):
+        max_property_len = 0
+        if in_synopsis:
+            for _p in i.properties:
+                max_property_len = max(len(_p.name), max_property_len)
+        else:
+            max_property_len = max(len(p.name), max_property_len)
+
+        max_signature_len = 0
+        if in_synopsis:
+            for _p in i.properties:
+                max_signature_len = max(len(_p.signature), max_signature_len)
+        else:
+            max_signature_len = max(len(p.signature), max_signature_len)
+
+        if in_synopsis:
+            self.out.write('<link linkend="gdbus-property-%s.%s">%s</link>%*s'
+                           %(utils.dots_to_hyphens(i.name), p.name, p.name, max_property_len - len(p.name), ''))
+        else:
+            self.out.write('%s%*s'
+                           %(p.name, max_property_len - len(p.name), ''))
+        if p.readable and p.writable:
+            access = 'readwrite'
+        elif p.readable:
+            access = 'readable '
+        else:
+            access = 'writable '
+        self.out.write('  %s  %s\n'%(access, p.signature))
+
+
+    def print_synopsis_methods(self, i):
+        self.out.write('  <refsynopsisdiv role="synopsis">\n'%())
+        self.out.write('    <title role="synopsis.title">Methods</title>\n'%())
+        self.out.write('    <synopsis>\n'%())
+        for m in i.methods:
+            self.print_method_prototype(i, m, in_synopsis=True)
+        self.out.write('</synopsis>\n'%())
+        self.out.write('  </refsynopsisdiv>\n'%())
+
+    def print_synopsis_signals(self, i):
+        self.out.write('  <refsect1 role="signal_proto">\n'%())
+        self.out.write('    <title role="signal_proto.title">Signals</title>\n'%())
+        self.out.write('    <synopsis>\n'%())
+        for s in i.signals:
+            self.print_signal_prototype(i, s, in_synopsis=True)
+        self.out.write('</synopsis>\n'%())
+        self.out.write('  </refsect1>\n'%())
+
+    def print_synopsis_properties(self, i):
+        self.out.write('  <refsect1 role="properties">\n'%())
+        self.out.write('    <title role="properties.title">Properties</title>\n'%())
+        self.out.write('    <synopsis>\n'%())
+        for p in i.properties:
+            self.print_property_prototype(i, p, in_synopsis=True)
+        self.out.write('</synopsis>\n'%())
+        self.out.write('  </refsect1>\n'%())
+
+    def print_method(self, i, m):
+        self.out.write('<refsect2 role="method" id="gdbus-method-%s.%s">\n'%(utils.dots_to_hyphens(i.name), m.name))
+        self.out.write('  <title>The %s() method</title>\n'%(m.name))
+        self.out.write('  <indexterm zone="gdbus-method-%s.%s"><primary sortas="%s.%s">%s.%s()</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), m.name, i.name_without_prefix, m.name, i.name, m.name))
+        self.out.write('<programlisting>\n')
+        self.print_method_prototype(i, m, in_synopsis=False)
+        self.out.write('</programlisting>\n')
+        self.out.write('%s\n'%(self.expand_paras(m.doc_string, True)))
+        if m.in_args or m.out_args:
+            self.out.write('<variablelist role="params">\n')
+            for a in m.in_args:
+                self.out.write('<varlistentry>\n'%())
+                self.out.write('  <term><literal>IN %s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name))
+                self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True)))
+                self.out.write('</varlistentry>\n'%())
+            for a in m.out_args:
+                self.out.write('<varlistentry>\n'%())
+                self.out.write('  <term><literal>OUT %s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name))
+                self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True)))
+                self.out.write('</varlistentry>\n'%())
+            self.out.write('</variablelist>\n')
+        if len(m.since) > 0:
+            self.out.write('<para role="since">Since %s</para>\n'%(m.since))
+        if m.deprecated:
+            self.out.write('<warning><para>The %s() method is deprecated.</para></warning>'%(m.name))
+        self.out.write('</refsect2>\n')
+
+    def print_signal(self, i, s):
+        self.out.write('<refsect2 role="signal" id="gdbus-signal-%s.%s">\n'%(utils.dots_to_hyphens(i.name), s.name))
+        self.out.write('  <title>The "%s" signal</title>\n'%(s.name))
+        self.out.write('  <indexterm zone="gdbus-signal-%s.%s"><primary sortas="%s::%s">%s::%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), s.name, i.name_without_prefix, s.name, i.name, s.name))
+        self.out.write('<programlisting>\n')
+        self.print_signal_prototype(i, s, in_synopsis=False)
+        self.out.write('</programlisting>\n')
+        self.out.write('%s\n'%(self.expand_paras(s.doc_string, True)))
+        if s.args:
+            self.out.write('<variablelist role="params">\n')
+            for a in s.args:
+                self.out.write('<varlistentry>\n'%())
+                self.out.write('  <term><literal>%s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name))
+                self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True)))
+                self.out.write('</varlistentry>\n'%())
+            self.out.write('</variablelist>\n')
+        if len(s.since) > 0:
+            self.out.write('<para role="since">Since %s</para>\n'%(s.since))
+        if s.deprecated:
+            self.out.write('<warning><para>The "%s" signal is deprecated.</para></warning>'%(s.name))
+        self.out.write('</refsect2>\n')
+
+    def print_property(self, i, p):
+        self.out.write('<refsect2 role="property" id="gdbus-property-%s.%s">\n'%(utils.dots_to_hyphens(i.name), p.name))
+        self.out.write('  <title>The "%s" property</title>\n'%(p.name))
+        self.out.write('  <indexterm zone="gdbus-property-%s.%s"><primary sortas="%s:%s">%s:%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), p.name, i.name_without_prefix, p.name, i.name, p.name))
+        self.out.write('<programlisting>\n')
+        self.print_property_prototype(i, p, in_synopsis=False)
+        self.out.write('</programlisting>\n')
+        self.out.write('%s\n'%(self.expand_paras(p.doc_string, True)))
+        if len(p.since) > 0:
+            self.out.write('<para role="since">Since %s</para>\n'%(p.since))
+        if p.deprecated:
+            self.out.write('<warning><para>The "%s" property is deprecated.</para></warning>'%(p.name))
+        self.out.write('</refsect2>\n')
+
+    def expand(self, s, expandParamsAndConstants):
+        for key in self.expand_member_dict_keys:
+            s = s.replace(key, self.expand_member_dict[key])
+        for key in self.expand_iface_dict_keys:
+            s = s.replace(key, self.expand_iface_dict[key])
+        if expandParamsAndConstants:
+            # replace @foo with <parameter>foo</parameter>
+            s = re.sub('@[a-zA-Z0-9_]*', lambda m: '<parameter>' + m.group(0)[1:] + '</parameter>', s)
+            # replace e.g. %TRUE with <constant>TRUE</constant>
+            s = re.sub('%[a-zA-Z0-9_]*', lambda m: '<constant>' + m.group(0)[1:] + '</constant>', s)
+        return s
+
+    def expand_paras(self, s, expandParamsAndConstants):
+        s = self.expand(s, expandParamsAndConstants).strip()
+        if not s.startswith("<para"):
+            s = "<para>%s</para>" % s
+        return s
+
+    def generate_expand_dicts(self):
+        self.expand_member_dict = {}
+        self.expand_iface_dict = {}
+        for i in self.ifaces:
+            key = '#%s'%(i.name)
+            value = '<link linkend="gdbus-interface-%s.top_of_page">%s</link>'%(utils.dots_to_hyphens(i.name), i.name)
+            self.expand_iface_dict[key] = value
+            for m in i.methods:
+                key = '%s.%s()'%(i.name, m.name)
+                value = '<link linkend="gdbus-method-%s.%s">%s()</link>'%(utils.dots_to_hyphens(i.name), m.name, m.name)
+                self.expand_member_dict[key] = value
+            for s in i.signals:
+                key = '#%s::%s'%(i.name, s.name)
+                value = '<link linkend="gdbus-signal-%s.%s">"%s"</link>'%(utils.dots_to_hyphens(i.name), s.name, s.name)
+                self.expand_member_dict[key] = value
+            for p in i.properties:
+                key = '#%s:%s'%(i.name, p.name)
+                value = '<link linkend="gdbus-property-%s.%s">"%s"</link>'%(utils.dots_to_hyphens(i.name), p.name, p.name)
+                self.expand_member_dict[key] = value
+        # Make sure to expand the keys in reverse order so e.g. #org.foo.Iface:MediaCompat
+        # is evaluated before #org.foo.Iface:Media ...
+        self.expand_member_dict_keys = sorted(self.expand_member_dict.keys(), reverse=True)
+        self.expand_iface_dict_keys = sorted(self.expand_iface_dict.keys(), reverse=True)
+
+    def generate(self):
+        for i in self.ifaces:
+            self.out = open('%s-%s.xml'%(self.docbook, i.name), 'w')
+            self.out.write(''%())
+            self.out.write('<?xml version="1.0" encoding="utf-8"?>\n'%())
+            self.out.write('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"\n'%())
+            self.out.write('               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [\n'%())
+            self.out.write(']>\n'%())
+            self.out.write('<refentry id="gdbus-%s">\n'%(i.name))
+            self.out.write('  <refmeta>'%())
+            self.out.write('    <refentrytitle role="top_of_page" id="gdbus-interface-%s.top_of_page">%s</refentrytitle>\n'%(utils.dots_to_hyphens(i.name), i.name))
+            self.out.write('  <indexterm zone="gdbus-interface-%s.top_of_page"><primary sortas="%s">%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), i.name_without_prefix, i.name))
+            self.out.write('  </refmeta>'%())
+
+            self.out.write('  <refnamediv>'%())
+            self.out.write('    <refname>%s</refname>'%(i.name))
+            self.out.write('    <refpurpose>%s</refpurpose>'%(i.doc_string_brief))
+            self.out.write('  </refnamediv>'%())
+
+            if len(i.methods) > 0:
+                self.print_synopsis_methods(i)
+            if len(i.signals) > 0:
+                self.print_synopsis_signals(i)
+            if len(i.properties) > 0:
+                self.print_synopsis_properties(i)
+
+            self.out.write('<refsect1 role="desc" id="gdbus-interface-%s">\n'%(utils.dots_to_hyphens(i.name)))
+            self.out.write('  <title role="desc.title">Description</title>\n'%())
+            self.out.write('  %s\n'%(self.expand_paras(i.doc_string, True)))
+            if len(i.since) > 0:
+                self.out.write('  <para role="since">Since %s</para>\n'%(i.since))
+            if i.deprecated:
+                self.out.write('<warning><para>The %s interface is deprecated.</para></warning>'%(i.name))
+            self.out.write('</refsect1>\n'%())
+
+            if len(i.methods) > 0:
+                self.out.write('<refsect1 role="details" id="gdbus-methods-%s">\n'%(i.name))
+                self.out.write('  <title role="details.title">Method Details</title>\n'%())
+                for m in i.methods:
+                    self.print_method(i, m)
+                self.out.write('</refsect1>\n'%())
+
+            if len(i.signals) > 0:
+                self.out.write('<refsect1 role="details" id="gdbus-signals-%s">\n'%(i.name))
+                self.out.write('  <title role="details.title">Signal Details</title>\n'%())
+                for s in i.signals:
+                    self.print_signal(i, s)
+                self.out.write('</refsect1>\n'%())
+
+            if len(i.properties) > 0:
+                self.out.write('<refsect1 role="details" id="gdbus-properties-%s">\n'%(i.name))
+                self.out.write('  <title role="details.title">Property Details</title>\n'%())
+                for s in i.properties:
+                    self.print_property(i, s)
+                self.out.write('</refsect1>\n'%())
+
+            self.out.write('</refentry>\n')
+            self.out.write('\n')
+
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyc b/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyc
new file mode 100644
index 0000000..9a3b251
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyo b/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyo
new file mode 100644
index 0000000..9a3b251
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_docbook.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_main.py b/dist/usr/share/glib-2.0/codegen/codegen_main.py
new file mode 100644
index 0000000..aa7984e
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_main.py
@@ -0,0 +1,203 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import sys
+import optparse
+
+from . import config
+from . import utils
+from . import dbustypes
+from . import parser
+from . import codegen
+from . import codegen_docbook
+
+def find_arg(arg_list, arg_name):
+    for a in arg_list:
+        if a.name == arg_name:
+            return a
+    return None
+
+def find_method(iface, method):
+    for m in iface.methods:
+        if m.name == method:
+            return m
+    return None
+
+def find_signal(iface, signal):
+    for m in iface.signals:
+        if m.name == signal:
+            return m
+    return None
+
+def find_prop(iface, prop):
+    for m in iface.properties:
+        if m.name == prop:
+            return m
+    return None
+
+def apply_annotation(iface_list, iface, method, signal, prop, arg, key, value):
+    iface_obj = None
+    for i in iface_list:
+        if i.name == iface:
+            iface_obj = i
+            break
+
+    if iface_obj == None:
+        raise RuntimeError('No interface %s'%iface)
+
+    target_obj = None
+
+    if method:
+        method_obj = find_method(iface_obj, method)
+        if method_obj == None:
+            raise RuntimeError('No method %s on interface %s'%(method, iface))
+        if arg:
+            arg_obj = find_arg(method_obj.in_args, arg)
+            if (arg_obj == None):
+                arg_obj = find_arg(method_obj.out_args, arg)
+                if (arg_obj == None):
+                    raise RuntimeError('No arg %s on method %s on interface %s'%(arg, method, iface))
+            target_obj = arg_obj
+        else:
+            target_obj = method_obj
+    elif signal:
+        signal_obj = find_signal(iface_obj, signal)
+        if signal_obj == None:
+            raise RuntimeError('No signal %s on interface %s'%(signal, iface))
+        if arg:
+            arg_obj = find_arg(signal_obj.args, arg)
+            if (arg_obj == None):
+                raise RuntimeError('No arg %s on signal %s on interface %s'%(arg, signal, iface))
+            target_obj = arg_obj
+        else:
+            target_obj = signal_obj
+    elif prop:
+        prop_obj = find_prop(iface_obj, prop)
+        if prop_obj == None:
+            raise RuntimeError('No property %s on interface %s'%(prop, iface))
+        target_obj = prop_obj
+    else:
+        target_obj = iface_obj
+    target_obj.annotations.insert(0, dbustypes.Annotation(key, value))
+
+
+def apply_annotations(iface_list, annotation_list):
+    # apply annotations given on the command line
+    for (what, key, value) in annotation_list:
+        pos = what.find('::')
+        if pos != -1:
+            # signal
+            iface = what[0:pos];
+            signal = what[pos + 2:]
+            pos = signal.find('[')
+            if pos != -1:
+                arg = signal[pos + 1:]
+                signal = signal[0:pos]
+                pos = arg.find(']')
+                arg = arg[0:pos]
+                apply_annotation(iface_list, iface, None, signal, None, arg, key, value)
+            else:
+                apply_annotation(iface_list, iface, None, signal, None, None, key, value)
+        else:
+            pos = what.find(':')
+            if pos != -1:
+                # property
+                iface = what[0:pos];
+                prop = what[pos + 1:]
+                apply_annotation(iface_list, iface, None, None, prop, None, key, value)
+            else:
+                pos = what.find('()')
+                if pos != -1:
+                    # method
+                    combined = what[0:pos]
+                    pos = combined.rfind('.')
+                    iface = combined[0:pos]
+                    method = combined[pos + 1:]
+                    pos = what.find('[')
+                    if pos != -1:
+                        arg = what[pos + 1:]
+                        pos = arg.find(']')
+                        arg = arg[0:pos]
+                        apply_annotation(iface_list, iface, method, None, None, arg, key, value)
+                    else:
+                        apply_annotation(iface_list, iface, method, None, None, None, key, value)
+                else:
+                    # must be an interface
+                    iface = what
+                    apply_annotation(iface_list, iface, None, None, None, None, key, value)
+
+def codegen_main():
+    arg_parser = optparse.OptionParser('%prog [options]')
+    arg_parser.add_option('', '--xml-files', metavar='FILE', action='append',
+                          help='D-Bus introspection XML file')
+    arg_parser.add_option('', '--interface-prefix', metavar='PREFIX', default='',
+                            help='String to strip from D-Bus interface names for code and docs')
+    arg_parser.add_option('', '--c-namespace', metavar='NAMESPACE', default='',
+                            help='The namespace to use for generated C code')
+    arg_parser.add_option('', '--c-generate-object-manager', action='store_true',
+                            help='Generate a GDBusObjectManagerClient subclass when generating C code')
+    arg_parser.add_option('', '--generate-c-code', metavar='OUTFILES',
+                          help='Generate C code in OUTFILES.[ch]')
+    arg_parser.add_option('', '--generate-docbook', metavar='OUTFILES',
+                          help='Generate Docbook in OUTFILES-org.Project.IFace.xml')
+    arg_parser.add_option('', '--annotate', nargs=3, action='append', metavar='WHAT KEY VALUE',
+                          help='Add annotation (may be used several times)')
+    (opts, args) = arg_parser.parse_args();
+
+    all_ifaces = []
+    for fname in args:
+        f = open(fname)
+        xml_data = f.read()
+        f.close()
+        parsed_ifaces = parser.parse_dbus_xml(xml_data)
+        all_ifaces.extend(parsed_ifaces)
+
+    if opts.annotate != None:
+        apply_annotations(all_ifaces, opts.annotate)
+
+    for i in all_ifaces:
+        i.post_process(opts.interface_prefix, opts.c_namespace)
+
+    docbook = opts.generate_docbook
+    docbook_gen = codegen_docbook.DocbookCodeGenerator(all_ifaces, docbook);
+    if docbook:
+        ret = docbook_gen.generate()
+
+    c_code = opts.generate_c_code
+    if c_code:
+        h = open(c_code + '.h', 'w')
+        c = open(c_code + '.c', 'w')
+        gen = codegen.CodeGenerator(all_ifaces,
+                                    opts.c_namespace,
+                                    opts.interface_prefix,
+                                    opts.c_generate_object_manager,
+                                    docbook_gen,
+                                    h, c);
+        ret = gen.generate()
+        h.close()
+        c.close()
+
+    sys.exit(0)
+
+if __name__ == "__main__":
+    codegen_main()
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_main.pyc b/dist/usr/share/glib-2.0/codegen/codegen_main.pyc
new file mode 100644
index 0000000..aa9838c
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_main.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/codegen_main.pyo b/dist/usr/share/glib-2.0/codegen/codegen_main.pyo
new file mode 100644
index 0000000..aa9838c
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/codegen_main.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/config.py b/dist/usr/share/glib-2.0/codegen/config.py
new file mode 100644
index 0000000..4d1748d
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/config.py
@@ -0,0 +1,27 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+DATADIR = "${prefix}/share"
+DATADIR = DATADIR.replace(
+    "${prefix}", "/usr")
+VERSION = "2.37.3"
diff --git a/dist/usr/share/glib-2.0/codegen/config.pyc b/dist/usr/share/glib-2.0/codegen/config.pyc
new file mode 100644
index 0000000..811f55c
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/config.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/config.pyo b/dist/usr/share/glib-2.0/codegen/config.pyo
new file mode 100644
index 0000000..811f55c
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/config.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/dbustypes.py b/dist/usr/share/glib-2.0/codegen/dbustypes.py
new file mode 100644
index 0000000..38eb0c4
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/dbustypes.py
@@ -0,0 +1,426 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+from . import utils
+
+class Annotation:
+    def __init__(self, key, value):
+        self.key = key
+        self.value = value
+        self.annotations = []
+
+class Arg:
+    def __init__(self, name, signature):
+        self.name = name
+        self.signature = signature
+        self.annotations = []
+        self.doc_string = ''
+        self.since = ''
+
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, arg_number):
+        if len(self.doc_string) == 0:
+            self.doc_string = utils.lookup_docs(self.annotations)
+        if len(self.since) == 0:
+            self.since = utils.lookup_since(self.annotations)
+
+        if self.name == None:
+            self.name = 'unnamed_arg%d'%arg_number
+        # default to GVariant
+        self.ctype_in_g  = 'GVariant *'
+        self.ctype_in  = 'GVariant *'
+        self.ctype_in_dup  = 'GVariant *'
+        self.ctype_out = 'GVariant **'
+        self.gtype = 'G_TYPE_VARIANT'
+        self.free_func = 'g_variant_unref'
+        self.format_in = '@' + self.signature
+        self.format_out = '@' + self.signature
+        self.gvariant_get = 'XXX'
+        self.gvalue_get = 'g_value_get_variant'
+        if not utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
+            if self.signature == 'b':
+                self.ctype_in_g  = 'gboolean '
+                self.ctype_in  = 'gboolean '
+                self.ctype_out = 'gboolean *'
+                self.gtype = 'G_TYPE_BOOLEAN'
+                self.free_func = None
+                self.format_in = 'b'
+                self.format_out = 'b'
+                self.gvariant_get = 'g_variant_get_boolean'
+                self.gvalue_get = 'g_value_get_boolean'
+            elif self.signature == 'y':
+                self.ctype_in_g  = 'guchar '
+                self.ctype_in  = 'guchar '
+                self.ctype_out = 'guchar *'
+                self.gtype = 'G_TYPE_UCHAR'
+                self.free_func = None
+                self.format_in = 'y'
+                self.format_out = 'y'
+                self.gvariant_get = 'g_variant_get_byte'
+                self.gvalue_get = 'g_value_get_uchar'
+            elif self.signature == 'n':
+                self.ctype_in_g  = 'gint '
+                self.ctype_in  = 'gint16 '
+                self.ctype_out = 'gint16 *'
+                self.gtype = 'G_TYPE_INT'
+                self.free_func = None
+                self.format_in = 'n'
+                self.format_out = 'n'
+                self.gvariant_get = 'g_variant_get_int16'
+                self.gvalue_get = 'g_value_get_int'
+            elif self.signature == 'q':
+                self.ctype_in_g  = 'guint '
+                self.ctype_in  = 'guint16 '
+                self.ctype_out = 'guint16 *'
+                self.gtype = 'G_TYPE_UINT'
+                self.free_func = None
+                self.format_in = 'q'
+                self.format_out = 'q'
+                self.gvariant_get = 'g_variant_get_uint16'
+                self.gvalue_get = 'g_value_get_uint'
+            elif self.signature == 'i':
+                self.ctype_in_g  = 'gint '
+                self.ctype_in  = 'gint '
+                self.ctype_out = 'gint *'
+                self.gtype = 'G_TYPE_INT'
+                self.free_func = None
+                self.format_in = 'i'
+                self.format_out = 'i'
+                self.gvariant_get = 'g_variant_get_int32'
+                self.gvalue_get = 'g_value_get_int'
+            elif self.signature == 'u':
+                self.ctype_in_g  = 'guint '
+                self.ctype_in  = 'guint '
+                self.ctype_out = 'guint *'
+                self.gtype = 'G_TYPE_UINT'
+                self.free_func = None
+                self.format_in = 'u'
+                self.format_out = 'u'
+                self.gvariant_get = 'g_variant_get_uint32'
+                self.gvalue_get = 'g_value_get_uint'
+            elif self.signature == 'x':
+                self.ctype_in_g  = 'gint64 '
+                self.ctype_in  = 'gint64 '
+                self.ctype_out = 'gint64 *'
+                self.gtype = 'G_TYPE_INT64'
+                self.free_func = None
+                self.format_in = 'x'
+                self.format_out = 'x'
+                self.gvariant_get = 'g_variant_get_int64'
+                self.gvalue_get = 'g_value_get_int64'
+            elif self.signature == 't':
+                self.ctype_in_g  = 'guint64 '
+                self.ctype_in  = 'guint64 '
+                self.ctype_out = 'guint64 *'
+                self.gtype = 'G_TYPE_UINT64'
+                self.free_func = None
+                self.format_in = 't'
+                self.format_out = 't'
+                self.gvariant_get = 'g_variant_get_uint64'
+                self.gvalue_get = 'g_value_get_uint64'
+            elif self.signature == 'd':
+                self.ctype_in_g  = 'gdouble '
+                self.ctype_in  = 'gdouble '
+                self.ctype_out = 'gdouble *'
+                self.gtype = 'G_TYPE_DOUBLE'
+                self.free_func = None
+                self.format_in = 'd'
+                self.format_out = 'd'
+                self.gvariant_get = 'g_variant_get_double'
+                self.gvalue_get = 'g_value_get_double'
+            elif self.signature == 's':
+                self.ctype_in_g  = 'const gchar *'
+                self.ctype_in  = 'const gchar *'
+                self.ctype_in_dup  = 'gchar *'
+                self.ctype_out = 'gchar **'
+                self.gtype = 'G_TYPE_STRING'
+                self.free_func = 'g_free'
+                self.format_in = 's'
+                self.format_out = 's'
+                self.gvariant_get = 'g_variant_get_string'
+                self.gvalue_get = 'g_value_get_string'
+            elif self.signature == 'o':
+                self.ctype_in_g  = 'const gchar *'
+                self.ctype_in  = 'const gchar *'
+                self.ctype_in_dup  = 'gchar *'
+                self.ctype_out = 'gchar **'
+                self.gtype = 'G_TYPE_STRING'
+                self.free_func = 'g_free'
+                self.format_in = 'o'
+                self.format_out = 'o'
+                self.gvariant_get = 'g_variant_get_string'
+                self.gvalue_get = 'g_value_get_string'
+            elif self.signature == 'g':
+                self.ctype_in_g  = 'const gchar *'
+                self.ctype_in  = 'const gchar *'
+                self.ctype_in_dup  = 'gchar *'
+                self.ctype_out = 'gchar **'
+                self.gtype = 'G_TYPE_STRING'
+                self.free_func = 'g_free'
+                self.format_in = 'g'
+                self.format_out = 'g'
+                self.gvariant_get = 'g_variant_get_string'
+                self.gvalue_get = 'g_value_get_string'
+            elif self.signature == 'ay':
+                self.ctype_in_g  = 'const gchar *'
+                self.ctype_in  = 'const gchar *'
+                self.ctype_in_dup  = 'gchar *'
+                self.ctype_out = 'gchar **'
+                self.gtype = 'G_TYPE_STRING'
+                self.free_func = 'g_free'
+                self.format_in = '^ay'
+                self.format_out = '^ay'
+                self.gvariant_get = 'g_variant_get_bytestring'
+                self.gvalue_get = 'g_value_get_string'
+            elif self.signature == 'as':
+                self.ctype_in_g  = 'const gchar *const *'
+                self.ctype_in  = 'const gchar *const *'
+                self.ctype_in_dup  = 'gchar **'
+                self.ctype_out = 'gchar ***'
+                self.gtype = 'G_TYPE_STRV'
+                self.free_func = 'g_strfreev'
+                self.format_in = '^as'
+                self.format_out = '^as'
+                self.gvariant_get = 'g_variant_get_strv'
+                self.gvalue_get = 'g_value_get_boxed'
+            elif self.signature == 'ao':
+                self.ctype_in_g  = 'const gchar *const *'
+                self.ctype_in  = 'const gchar *const *'
+                self.ctype_in_dup  = 'gchar **'
+                self.ctype_out = 'gchar ***'
+                self.gtype = 'G_TYPE_STRV'
+                self.free_func = 'g_strfreev'
+                self.format_in = '^ao'
+                self.format_out = '^ao'
+                self.gvariant_get = 'g_variant_get_objv'
+                self.gvalue_get = 'g_value_get_boxed'
+            elif self.signature == 'aay':
+                self.ctype_in_g  = 'const gchar *const *'
+                self.ctype_in  = 'const gchar *const *'
+                self.ctype_in_dup  = 'gchar **'
+                self.ctype_out = 'gchar ***'
+                self.gtype = 'G_TYPE_STRV'
+                self.free_func = 'g_strfreev'
+                self.format_in = '^aay'
+                self.format_out = '^aay'
+                self.gvariant_get = 'g_variant_get_bytestring_array'
+                self.gvalue_get = 'g_value_get_boxed'
+
+class Method:
+    def __init__(self, name):
+        self.name = name
+        self.in_args = []
+        self.out_args = []
+        self.annotations = []
+        self.doc_string = ''
+        self.since = ''
+        self.deprecated = False
+
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
+        if len(self.doc_string) == 0:
+            self.doc_string = utils.lookup_docs(self.annotations)
+        if len(self.since) == 0:
+            self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
+
+        name = self.name
+        overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
+        if utils.is_ugly_case(overridden_name):
+            self.name_lower = overridden_name.lower()
+        else:
+            if overridden_name:
+                name = overridden_name
+            self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
+        self.name_hyphen = self.name_lower.replace('_', '-')
+
+        arg_count = 0
+        for a in self.in_args:
+            a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
+            arg_count += 1
+
+        for a in self.out_args:
+            a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
+            arg_count += 1
+
+        if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
+            self.deprecated = True
+
+class Signal:
+    def __init__(self, name):
+        self.name = name
+        self.args = []
+        self.annotations = []
+        self.doc_string = ''
+        self.since = ''
+        self.deprecated = False
+
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
+        if len(self.doc_string) == 0:
+            self.doc_string = utils.lookup_docs(self.annotations)
+        if len(self.since) == 0:
+            self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
+
+        name = self.name
+        overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
+        if utils.is_ugly_case(overridden_name):
+            self.name_lower = overridden_name.lower()
+        else:
+            if overridden_name:
+                name = overridden_name
+            self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
+        self.name_hyphen = self.name_lower.replace('_', '-')
+
+        arg_count = 0
+        for a in self.args:
+            a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
+            arg_count += 1
+
+        if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
+            self.deprecated = True
+
+class Property:
+    def __init__(self, name, signature, access):
+        self.name = name
+        self.signature = signature
+        self.access = access
+        self.annotations = []
+        self.arg = Arg('value', self.signature)
+        self.arg.annotations = self.annotations
+        self.readable = False
+        self.writable = False
+        if self.access == 'readwrite':
+            self.readable = True
+            self.writable = True
+        elif self.access == 'read':
+            self.readable = True
+        elif self.access == 'write':
+            self.writable = True
+        else:
+            raise RuntimeError('Invalid access type %s'%self.access)
+        self.doc_string = ''
+        self.since = ''
+        self.deprecated = False
+
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
+        if len(self.doc_string) == 0:
+            self.doc_string = utils.lookup_docs(self.annotations)
+        if len(self.since) == 0:
+            self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
+
+        name = self.name
+        overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
+        if utils.is_ugly_case(overridden_name):
+            self.name_lower = overridden_name.lower()
+        else:
+            if overridden_name:
+                name = overridden_name
+            self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
+        self.name_hyphen = self.name_lower.replace('_', '-')
+        # don't clash with the GType getter, e.g.: GType foo_bar_get_type (void); G_GNUC_CONST
+        if self.name_lower == 'type':
+            self.name_lower = 'type_'
+
+        # recalculate arg
+        self.arg.annotations = self.annotations
+        self.arg.post_process(interface_prefix, cns, cns_upper, cns_lower, 0)
+
+        if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
+            self.deprecated = True
+
+class Interface:
+    def __init__(self, name):
+        self.name = name
+        self.methods = []
+        self.signals = []
+        self.properties = []
+        self.annotations = []
+        self.doc_string = ''
+        self.doc_string_brief = ''
+        self.since = ''
+        self.deprecated = False
+
+    def post_process(self, interface_prefix, c_namespace):
+        if len(self.doc_string) == 0:
+            self.doc_string = utils.lookup_docs(self.annotations)
+        if len(self.doc_string_brief) == 0:
+            self.doc_string_brief = utils.lookup_brief_docs(self.annotations)
+        if len(self.since) == 0:
+            self.since = utils.lookup_since(self.annotations)
+
+        if len(c_namespace) > 0:
+            if utils.is_ugly_case(c_namespace):
+                cns = c_namespace.replace('_', '')
+                cns_upper = c_namespace.upper() + '_'
+                cns_lower = c_namespace.lower() + '_'
+            else:
+                cns = c_namespace
+                cns_upper = utils.camel_case_to_uscore(c_namespace).upper() + '_'
+                cns_lower = utils.camel_case_to_uscore(c_namespace).lower() + '_'
+        else:
+            cns = ''
+            cns_upper = ''
+            cns_lower = ''
+
+        overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
+        if utils.is_ugly_case(overridden_name):
+            name = overridden_name.replace('_', '')
+            name_with_ns = cns + name
+            self.name_without_prefix = name
+            self.camel_name = name_with_ns
+            self.ns_upper = cns_upper
+            self.name_lower = cns_lower + overridden_name.lower()
+            self.name_upper = overridden_name.upper()
+
+            #raise RuntimeError('handle Ugly_Case ', overridden_name)
+        else:
+            if overridden_name:
+                name = overridden_name
+            else:
+                name = self.name
+                if name.startswith(interface_prefix):
+                    name = name[len(interface_prefix):]
+            self.name_without_prefix = name
+            name = utils.strip_dots(name)
+            name_with_ns = utils.strip_dots(cns + '.' + name)
+            self.camel_name = name_with_ns
+            self.ns_upper = cns_upper
+            self.name_lower = cns_lower + utils.camel_case_to_uscore(name)
+            self.name_upper = utils.camel_case_to_uscore(name).upper()
+
+        self.name_hyphen = self.name_upper.lower().replace('_', '-')
+
+        if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
+            self.deprecated = True
+
+        for m in self.methods:
+            m.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
+
+        for s in self.signals:
+            s.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
+
+        for p in self.properties:
+            p.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
diff --git a/dist/usr/share/glib-2.0/codegen/dbustypes.pyc b/dist/usr/share/glib-2.0/codegen/dbustypes.pyc
new file mode 100644
index 0000000..516f54e
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/dbustypes.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/dbustypes.pyo b/dist/usr/share/glib-2.0/codegen/dbustypes.pyo
new file mode 100644
index 0000000..516f54e
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/dbustypes.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/parser.py b/dist/usr/share/glib-2.0/codegen/parser.py
new file mode 100644
index 0000000..7b9d216
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/parser.py
@@ -0,0 +1,290 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import sys
+import xml.parsers.expat
+
+from . import dbustypes
+
+class DBusXMLParser:
+    STATE_TOP = 'top'
+    STATE_NODE = 'node'
+    STATE_INTERFACE = 'interface'
+    STATE_METHOD = 'method'
+    STATE_SIGNAL = 'signal'
+    STATE_PROPERTY = 'property'
+    STATE_ARG = 'arg'
+    STATE_ANNOTATION = 'annotation'
+    STATE_IGNORED = 'ignored'
+
+    def __init__(self, xml_data):
+        self._parser = xml.parsers.expat.ParserCreate()
+        self._parser.CommentHandler = self.handle_comment
+        self._parser.CharacterDataHandler = self.handle_char_data
+        self._parser.StartElementHandler = self.handle_start_element
+        self._parser.EndElementHandler = self.handle_end_element
+
+        self.parsed_interfaces = []
+        self._cur_object = None
+
+        self.state = DBusXMLParser.STATE_TOP
+        self.state_stack = []
+        self._cur_object = None
+        self._cur_object_stack = []
+
+        self.doc_comment_last_symbol = ''
+
+        self._parser.Parse(xml_data)
+
+    COMMENT_STATE_BEGIN = 'begin'
+    COMMENT_STATE_PARAMS = 'params'
+    COMMENT_STATE_BODY = 'body'
+    COMMENT_STATE_SKIP = 'skip'
+    def handle_comment(self, data):
+        comment_state = DBusXMLParser.COMMENT_STATE_BEGIN;
+        lines = data.split('\n')
+        symbol = ''
+        body = ''
+        in_para = False
+        params = {}
+        for line in lines:
+            orig_line = line
+            line = line.lstrip()
+            if comment_state == DBusXMLParser.COMMENT_STATE_BEGIN:
+                if len(line) > 0:
+                    colon_index = line.find(': ')
+                    if colon_index == -1:
+                        if line.endswith(':'):
+                            symbol = line[0:len(line)-1]
+                            comment_state = DBusXMLParser.COMMENT_STATE_PARAMS
+                        else:
+                            comment_state = DBusXMLParser.COMMENT_STATE_SKIP
+                    else:
+                        symbol = line[0:colon_index]
+                        rest_of_line = line[colon_index+2:].strip()
+                        if len(rest_of_line) > 0:
+                            body += '<para>' + rest_of_line + '</para>'
+                        comment_state = DBusXMLParser.COMMENT_STATE_PARAMS
+            elif comment_state == DBusXMLParser.COMMENT_STATE_PARAMS:
+                if line.startswith('@'):
+                    colon_index = line.find(': ')
+                    if colon_index == -1:
+                        comment_state = DBusXMLParser.COMMENT_STATE_BODY
+                        if not in_para:
+                            body += '<para>'
+                            in_para = True
+                        body += orig_line + '\n'
+                    else:
+                        param = line[1:colon_index]
+                        docs = line[colon_index + 2:]
+                        params[param] = docs
+                else:
+                    comment_state = DBusXMLParser.COMMENT_STATE_BODY
+                    if len(line) > 0:
+                        if not in_para:
+                            body += '<para>'
+                            in_para = True
+                        body += orig_line + '\n'
+            elif comment_state == DBusXMLParser.COMMENT_STATE_BODY:
+                if len(line) > 0:
+                    if not in_para:
+                        body += '<para>'
+                        in_para = True
+                    body += orig_line + '\n'
+                else:
+                    if in_para:
+                        body += '</para>'
+                        in_para = False
+        if in_para:
+            body += '</para>'
+
+        if symbol != '':
+            self.doc_comment_last_symbol = symbol
+            self.doc_comment_params = params
+            self.doc_comment_body = body
+
+    def handle_char_data(self, data):
+        #print 'char_data=%s'%data
+        pass
+
+    def handle_start_element(self, name, attrs):
+        old_state = self.state
+        old_cur_object = self._cur_object
+        if self.state == DBusXMLParser.STATE_IGNORED:
+            self.state = DBusXMLParser.STATE_IGNORED
+        elif self.state == DBusXMLParser.STATE_TOP:
+            if name == DBusXMLParser.STATE_NODE:
+                self.state = DBusXMLParser.STATE_NODE
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+        elif self.state == DBusXMLParser.STATE_NODE:
+            if name == DBusXMLParser.STATE_INTERFACE:
+                self.state = DBusXMLParser.STATE_INTERFACE
+                iface = dbustypes.Interface(attrs['name'])
+                self._cur_object = iface
+                self.parsed_interfaces.append(iface)
+            elif name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+            # assign docs, if any
+            if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']:
+                self._cur_object.doc_string = self.doc_comment_body
+                if 'short_description' in self.doc_comment_params:
+                    short_description = self.doc_comment_params['short_description']
+                    self._cur_object.doc_string_brief = short_description
+                if 'since' in self.doc_comment_params:
+                    self._cur_object.since = self.doc_comment_params['since']
+
+        elif self.state == DBusXMLParser.STATE_INTERFACE:
+            if name == DBusXMLParser.STATE_METHOD:
+                self.state = DBusXMLParser.STATE_METHOD
+                method = dbustypes.Method(attrs['name'])
+                self._cur_object.methods.append(method)
+                self._cur_object = method
+            elif name == DBusXMLParser.STATE_SIGNAL:
+                self.state = DBusXMLParser.STATE_SIGNAL
+                signal = dbustypes.Signal(attrs['name'])
+                self._cur_object.signals.append(signal)
+                self._cur_object = signal
+            elif name == DBusXMLParser.STATE_PROPERTY:
+                self.state = DBusXMLParser.STATE_PROPERTY
+                prop = dbustypes.Property(attrs['name'], attrs['type'], attrs['access'])
+                self._cur_object.properties.append(prop)
+                self._cur_object = prop
+            elif name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+            # assign docs, if any
+            if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']:
+                self._cur_object.doc_string = self.doc_comment_body
+                if 'since' in self.doc_comment_params:
+                    self._cur_object.since = self.doc_comment_params['since']
+
+        elif self.state == DBusXMLParser.STATE_METHOD:
+            if name == DBusXMLParser.STATE_ARG:
+                self.state = DBusXMLParser.STATE_ARG
+                arg_name = None
+                if 'name' in attrs:
+                    arg_name = attrs['name']
+                arg = dbustypes.Arg(arg_name, attrs['type'])
+                direction = attrs['direction']
+                if direction == 'in':
+                    self._cur_object.in_args.append(arg)
+                elif direction == 'out':
+                    self._cur_object.out_args.append(arg)
+                else:
+                    raise RuntimeError('Invalid direction "%s"'%(direction))
+                self._cur_object = arg
+            elif name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+            # assign docs, if any
+            if self.doc_comment_last_symbol == old_cur_object.name:
+                if 'name' in attrs and attrs['name'] in self.doc_comment_params:
+                    doc_string = self.doc_comment_params[attrs['name']]
+                    if doc_string != None:
+                        self._cur_object.doc_string = doc_string
+                    if 'since' in self.doc_comment_params:
+                        self._cur_object.since = self.doc_comment_params['since']
+
+        elif self.state == DBusXMLParser.STATE_SIGNAL:
+            if name == DBusXMLParser.STATE_ARG:
+                self.state = DBusXMLParser.STATE_ARG
+                arg_name = None
+                if 'name' in attrs:
+                    arg_name = attrs['name']
+                arg = dbustypes.Arg(arg_name, attrs['type'])
+                self._cur_object.args.append(arg)
+                self._cur_object = arg
+            elif name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+            # assign docs, if any
+            if self.doc_comment_last_symbol == old_cur_object.name:
+                if 'name' in attrs and attrs['name'] in self.doc_comment_params:
+                    doc_string = self.doc_comment_params[attrs['name']]
+                    if doc_string != None:
+                        self._cur_object.doc_string = doc_string
+                    if 'since' in self.doc_comment_params:
+                        self._cur_object.since = self.doc_comment_params['since']
+
+        elif self.state == DBusXMLParser.STATE_PROPERTY:
+            if name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+        elif self.state == DBusXMLParser.STATE_ARG:
+            if name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+        elif self.state == DBusXMLParser.STATE_ANNOTATION:
+            if name == DBusXMLParser.STATE_ANNOTATION:
+                self.state = DBusXMLParser.STATE_ANNOTATION
+                anno = dbustypes.Annotation(attrs['name'], attrs['value'])
+                self._cur_object.annotations.append(anno)
+                self._cur_object = anno
+            else:
+                self.state = DBusXMLParser.STATE_IGNORED
+
+        else:
+            raise RuntimeError('Unhandled state "%s" while entering element with name "%s"'%(self.state, name))
+
+        self.state_stack.append(old_state)
+        self._cur_object_stack.append(old_cur_object)
+
+    def handle_end_element(self, name):
+        self.state = self.state_stack.pop()
+        self._cur_object = self._cur_object_stack.pop()
+
+def parse_dbus_xml(xml_data):
+    parser = DBusXMLParser(xml_data)
+    return parser.parsed_interfaces
diff --git a/dist/usr/share/glib-2.0/codegen/parser.pyc b/dist/usr/share/glib-2.0/codegen/parser.pyc
new file mode 100644
index 0000000..0aebebe
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/parser.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/parser.pyo b/dist/usr/share/glib-2.0/codegen/parser.pyo
new file mode 100644
index 0000000..0aebebe
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/parser.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/utils.py b/dist/usr/share/glib-2.0/codegen/utils.py
new file mode 100644
index 0000000..239b64e
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/utils.py
@@ -0,0 +1,104 @@
+# -*- Mode: Python -*-
+
+# GDBus - GLib D-Bus Library
+#
+# Copyright (C) 2008-2011 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.
+#
+# Author: David Zeuthen <davidz@redhat.com>
+
+import distutils.version
+
+def strip_dots(s):
+    ret = ''
+    force_upper = False
+    for c in s:
+        if c == '.':
+            force_upper = True
+        else:
+            if force_upper:
+                ret += c.upper()
+                force_upper = False
+            else:
+                ret += c
+    return ret
+
+def dots_to_hyphens(s):
+    return s.replace('.', '-')
+
+def camel_case_to_uscore(s):
+    ret = ''
+    insert_uscore = False
+    prev_was_lower = False
+    initial = True;
+    for c in s:
+        # Keep initial underscores in camel case
+        if initial and c == '_':
+            ret += '_'
+            continue;
+        initial = False
+
+        if c.isupper():
+            if prev_was_lower:
+                insert_uscore = True
+            prev_was_lower = False
+        else:
+            prev_was_lower = True
+        if insert_uscore:
+            ret += '_'
+        ret += c.lower()
+        insert_uscore = False
+    return ret
+
+def is_ugly_case(s):
+    if s and s.find('_') > 0:
+        return True
+    return False
+
+def lookup_annotation(annotations, key):
+    if annotations:
+        for a in annotations:
+            if a.key == key:
+                return a.value
+    return None
+
+def lookup_docs(annotations):
+    s = lookup_annotation(annotations, 'org.gtk.GDBus.DocString')
+    if s == None:
+        return ''
+    else:
+        return s
+
+def lookup_since(annotations):
+    s = lookup_annotation(annotations, 'org.gtk.GDBus.Since')
+    if s == None:
+        return ''
+    else:
+        return s
+
+def lookup_brief_docs(annotations):
+    s = lookup_annotation(annotations, 'org.gtk.GDBus.DocString.Short')
+    if s == None:
+        return ''
+    else:
+        return s
+
+def version_cmp_key(key):
+    # If the 'since' version is empty put a 0 in its place as this will
+    # allow LooseVersion to work and will always compare lower.
+    v = key[0] if key[0] else '0'
+    return (distutils.version.LooseVersion(v), key[1])
diff --git a/dist/usr/share/glib-2.0/codegen/utils.pyc b/dist/usr/share/glib-2.0/codegen/utils.pyc
new file mode 100644
index 0000000..b7cce16
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/utils.pyc
Binary files differ
diff --git a/dist/usr/share/glib-2.0/codegen/utils.pyo b/dist/usr/share/glib-2.0/codegen/utils.pyo
new file mode 100644
index 0000000..b7cce16
--- /dev/null
+++ b/dist/usr/share/glib-2.0/codegen/utils.pyo
Binary files differ
diff --git a/dist/usr/share/glib-2.0/gdb/glib.py b/dist/usr/share/glib-2.0/gdb/glib.py
new file mode 100755
index 0000000..64459b3
--- /dev/null
+++ b/dist/usr/share/glib-2.0/gdb/glib.py
@@ -0,0 +1,253 @@
+import gdb
+
+# This is not quite right, as local vars may override symname
+def read_global_var (symname):
+    return gdb.selected_frame().read_var(symname)
+
+def g_quark_to_string (quark):
+    if quark == None:
+        return None
+    quark = long(quark)
+    if quark == 0:
+        return None
+    try:
+        val = read_global_var ("quarks")
+        max_q = long(read_global_var ("quark_seq_id"))
+    except:
+        try:
+            val = read_global_var ("g_quarks")
+            max_q = long(read_global_var ("g_quark_seq_id"))
+        except:
+            return None;
+    if quark < max_q:
+        return val[quark].string()
+    return None
+
+# We override the node printers too, so that node->next is not expanded
+class GListNodePrinter:
+    "Prints a GList node"
+
+    def __init__ (self, val):
+        self.val = val
+
+    def to_string (self):
+        return "{data=%s, next=0x%x, prev=0x%x}" % (str(self.val["data"]), long(self.val["next"]), long(self.val["prev"]))
+
+class GSListNodePrinter:
+    "Prints a GSList node"
+
+    def __init__ (self, val):
+        self.val = val
+
+    def to_string (self):
+        return "{data=%s, next=0x%x}" % (str(self.val["data"]), long(self.val["next"]))
+
+class GListPrinter:
+    "Prints a GList"
+
+    class _iterator:
+        def __init__(self, head, listtype):
+            self.link = head
+            self.listtype = listtype
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.link == 0:
+                raise StopIteration
+            data = self.link['data']
+            self.link = self.link['next']
+            count = self.count
+            self.count = self.count + 1
+            return ('[%d]' % count, data)
+
+    def __init__ (self, val, listtype):
+        self.val = val
+        self.listtype = listtype
+
+    def children(self):
+        return self._iterator(self.val, self.listtype)
+
+    def to_string (self):
+        return  "0x%x" % (long(self.val))
+
+    def display_hint (self):
+        return "array"
+
+class GHashPrinter:
+    "Prints a GHashTable"
+
+    class _iterator:
+        def __init__(self, ht, keys_are_strings):
+            self.ht = ht
+            if ht != 0:
+                self.keys = ht["keys"]
+                self.values = ht["values"]
+                self.hashes = ht["hashes"]
+                self.size = ht["size"]
+            self.pos = 0
+            self.keys_are_strings = keys_are_strings
+            self.value = None
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            if self.ht == 0:
+                raise StopIteration
+            if self.value != None:
+                v = self.value
+                self.value = None
+                return v
+            while long(self.pos) < long(self.size):
+                self.pos = self.pos + 1
+                if long (self.hashes[self.pos]) >= 2:
+                    key = self.keys[self.pos]
+                    val = self.values[self.pos]
+
+                    if self.keys_are_strings:
+                        key = key.cast (gdb.lookup_type("char").pointer())
+
+                    # Queue value for next result
+                    self.value = ('[%dv]'% (self.pos), val)
+
+                    # Return key
+                    return ('[%dk]'% (self.pos), key)
+            raise StopIteration
+
+    def __init__ (self, val):
+        self.val = val
+        self.keys_are_strings = False
+        try:
+            string_hash = read_global_var ("g_str_hash")
+        except:
+            string_hash = None
+        if self.val != 0 and string_hash != None and self.val["hash_func"] == string_hash:
+            self.keys_are_strings = True
+
+    def children(self):
+        return self._iterator(self.val, self.keys_are_strings)
+
+    def to_string (self):
+        return  "0x%x" % (long(self.val))
+
+    def display_hint (self):
+        return "map"
+
+def pretty_printer_lookup (val):
+    # None yet, want things like hash table and list
+
+    type = val.type.unqualified()
+
+    # If it points to a reference, get the reference.
+    if type.code == gdb.TYPE_CODE_REF:
+        type = type.target ()
+
+    if type.code == gdb.TYPE_CODE_PTR:
+        type = type.target().unqualified()
+        t = str(type)
+        if t == "GList":
+            return GListPrinter(val, "GList")
+        if t == "GSList":
+            return GListPrinter(val, "GSList")
+        if t == "GHashTable":
+            return GHashPrinter(val)
+    else:
+        t = str(type)
+        if t == "GList":
+            return GListNodePrinter(val)
+        if t == "GSList *":
+            return GListPrinter(val, "GSList")
+    return None
+
+def register (obj):
+    if obj == None:
+        obj = gdb
+
+    obj.pretty_printers.append(pretty_printer_lookup)
+
+class ForeachCommand (gdb.Command):
+    """Foreach on list"""
+
+    def __init__ (self):
+        super (ForeachCommand, self).__init__ ("gforeach",
+                                               gdb.COMMAND_DATA,
+                                               gdb.COMPLETE_SYMBOL)
+
+    def valid_name (self, name):
+        if not name[0].isalpha():
+            return False
+        return True
+
+    def parse_args (self, arg):
+        i = arg.find(" ")
+        if i <= 0:
+            raise Exception ("No var specified")
+        var = arg[:i]
+        if not self.valid_name(var):
+            raise Exception ("Invalid variable name")
+
+        while i < len (arg) and arg[i].isspace():
+            i = i + 1
+
+        if arg[i:i+2] != "in":
+            raise Exception ("Invalid syntax, missing in")
+
+        i = i + 2
+
+        while i < len (arg) and arg[i].isspace():
+            i = i + 1
+
+        colon = arg.find (":", i)
+        if colon == -1:
+            raise Exception ("Invalid syntax, missing colon")
+
+        val = arg[i:colon]
+
+        colon = colon + 1
+        while colon < len (arg) and arg[colon].isspace():
+            colon = colon + 1
+
+        command = arg[colon:]
+
+        return (var, val, command)
+
+    def do_iter(self, arg, item, command):
+        item = item.cast (gdb.lookup_type("void").pointer())
+        item = long(item)
+        to_eval = "set $%s = (void *)0x%x\n"%(arg, item)
+        gdb.execute(to_eval)
+        gdb.execute(command)
+
+    def slist_iterator (self, arg, container, command):
+        l = container.cast (gdb.lookup_type("GSList").pointer())
+        while long(l) != 0:
+            self.do_iter (arg, l["data"], command)
+            l = l["next"]
+
+    def list_iterator (self, arg, container, command):
+        l = container.cast (gdb.lookup_type("GList").pointer())
+        while long(l) != 0:
+            self.do_iter (arg, l["data"], command)
+            l = l["next"]
+
+    def pick_iterator (self, container):
+        t = container.type.unqualified()
+        if t.code == gdb.TYPE_CODE_PTR:
+            t = t.target().unqualified()
+            t = str(t)
+            if t == "GSList":
+                return self.slist_iterator
+            if t == "GList":
+                return self.list_iterator
+        raise Exception("Invalid container type %s"%(str(container.type)))
+
+    def invoke (self, arg, from_tty):
+        (var, container, command) = self.parse_args(arg)
+        container = gdb.parse_and_eval (container)
+        func = self.pick_iterator(container)
+        func(var, container, command)
+
+ForeachCommand ()
diff --git a/dist/usr/share/glib-2.0/gdb/gobject.py b/dist/usr/share/glib-2.0/gdb/gobject.py
new file mode 100755
index 0000000..b96d150
--- /dev/null
+++ b/dist/usr/share/glib-2.0/gdb/gobject.py
@@ -0,0 +1,305 @@
+import gdb
+import glib
+import gdb.backtrace
+import gdb.command.backtrace
+
+# This is not quite right, as local vars may override symname
+def read_global_var (symname):
+    return gdb.selected_frame().read_var(symname)
+
+def g_type_to_name (gtype):
+    def lookup_fundamental_type (typenode):
+        if typenode == 0:
+            return None
+        val = read_global_var ("static_fundamental_type_nodes")
+        if val == None:
+            return None
+        return val[typenode >> 2].address()
+
+    gtype = long(gtype)
+    typenode = gtype - gtype % 4
+    if typenode > (255 << 2):
+        typenode = gdb.Value(typenode).cast (gdb.lookup_type("TypeNode").pointer())
+    else:
+        typenode = lookup_fundamental_type (typenode)
+    if typenode != None:
+        return glib.g_quark_to_string (typenode["qname"])
+    return None
+
+def is_g_type_instance (val):
+    def is_g_type_instance_helper (type):
+        if str(type) == "GTypeInstance":
+            return True
+
+        while type.code == gdb.TYPE_CODE_TYPEDEF:
+            type = type.target()
+
+        if type.code != gdb.TYPE_CODE_STRUCT:
+            return False
+
+        fields = type.fields()
+        if len (fields) < 1:
+            return False
+
+        first_field = fields[0]
+        return is_g_type_instance_helper(first_field.type)
+
+    type = val.type
+    if type.code != gdb.TYPE_CODE_PTR:
+        return False
+    type = type.target()
+    return is_g_type_instance_helper (type)
+
+def g_type_name_from_instance (instance):
+    if long(instance) != 0:
+        try:
+            inst = instance.cast (gdb.lookup_type("GTypeInstance").pointer())
+            klass = inst["g_class"]
+            gtype = klass["g_type"]
+            name = g_type_to_name (gtype)
+            return name
+        except RuntimeError:
+            pass
+    return None
+
+class GTypePrettyPrinter:
+    "Prints a GType instance pointer"
+
+    def __init__ (self, val):
+        self.val = val
+
+    def to_string (self):
+        name = g_type_name_from_instance (self.val)
+        if name:
+            return ("0x%x [%s]")% (long(self.val), name)
+        return  ("0x%x") % (long(self.val))
+
+def pretty_printer_lookup (val):
+    if is_g_type_instance (val):
+        return GTypePrettyPrinter (val)
+
+    return None
+
+def get_signal_name (id):
+  if id == None:
+    return None
+  id = long(id)
+  if id == 0:
+    return None
+  val = read_global_var ("g_signal_nodes")
+  max_s = read_global_var ("g_n_signal_nodes")
+  max_s = long(max_s)
+  if id < max_s:
+    return val[id]["name"].string()
+  return None
+
+class GFrameWrapper:
+    def __init__ (self, frame):
+        self.frame = frame;
+
+    def name (self):
+        name = self.frame.name()
+        if name and name.startswith("IA__"):
+            return name[4:]
+        return name
+
+    def __getattr__ (self, name):
+        return getattr (self.frame, name)
+
+# Monkey patch FrameWrapper to avoid IA__ in symbol names
+old__init__ = gdb.command.backtrace.FrameWrapper.__init__
+def monkey_patched_init(self, frame):
+    name = frame.name()
+    if name and name.startswith("IA__"):
+        frame = GFrameWrapper(frame)
+    old__init__(self,frame)
+gdb.command.backtrace.FrameWrapper.__init__ = monkey_patched_init
+
+class DummyFrame:
+    def __init__ (self, frame):
+        self.frame = frame
+
+    def name (self):
+        return "signal-emission-dummy"
+
+    def describe (self, stream, full):
+        stream.write (" <...>\n")
+
+    def __getattr__ (self, name):
+        return getattr (self.frame, name)
+
+class SignalFrame:
+    def __init__ (self, frames):
+        self.frame = frames[-1]
+        self.frames = frames;
+
+    def name (self):
+        return "signal-emission"
+
+    def read_var (self, frame, name, array = None):
+        try:
+            v = frame.read_var (name)
+            if v == None or v.is_optimized_out:
+                return None
+            if array != None:
+                array.append (v)
+            return v
+        except ValueError:
+            return None
+
+    def read_object (self, frame, name, array = None):
+        try:
+            v = frame.read_var (name)
+            if v == None or v.is_optimized_out:
+                return None
+            v = v.cast (gdb.lookup_type("GObject").pointer())
+            # Ensure this is a somewhat correct object pointer
+            if v != None and g_type_name_from_instance (v):
+                if array != None:
+                    array.append (v)
+                return v
+            return None
+        except ValueError:
+            return None
+
+    def append (self, array, obj):
+        if obj != None:
+            array.append (obj)
+
+    def or_join_array (self, array):
+        if len(array) == 0:
+            return "???"
+
+        v = {}
+        for i in range(len(array)):
+            v[str(array[i])] = 1
+        array = v.keys()
+        s = array[0]
+        for i in range(1, len(array)):
+            s = s + " or %s"%array[i]
+
+        return s
+
+    def describe (self, stream, full):
+        instances = []
+        signals = []
+
+        for frame in self.frames:
+            name = frame.name()
+            if name == "signal_emit_unlocked_R":
+                self.read_object (frame, "instance", instances)
+                node = self.read_var (frame, "node")
+                if node:
+                    signal = node["name"].string()
+                    detail = self.read_var (frame, "detail")
+                    detail = glib.g_quark_to_string (detail)
+                    if detail != None:
+                        signal = signal + ":" + detail
+                    self.append (signals, signal)
+
+            if name == "g_signal_emitv":
+                instance_and_params = self.read_var (frame, "instance_and_params")
+                if instance_and_params:
+                    instance = instance_and_params[0]["v_pointer"].cast (gdb.Type("GObject").pointer())
+                    self.append (instances, instance)
+                id = self.read_var (frame, "signal_id")
+                signal = get_signal_name (id)
+                if signal:
+                    detail = self.read_var (frame, "detail")
+                    detail = glib.g_quark_to_string (detail)
+                    if detail != None:
+                        signal = signal + ":" + detail
+                    self.append (signals, signal)
+
+            if name == "g_signal_emit_valist" or name == "g_signal_emit":
+                self.read_object (frame, "instance", instances)
+                id = self.read_var (frame, "signal_id")
+                signal = get_signal_name (id)
+                if signal:
+                    detail = self.read_var (frame, "detail")
+                    detail = glib.g_quark_to_string (detail)
+                    if detail != None:
+                        signal = signal + ":" + detail
+                    self.append (signals, signal)
+
+            if name == "g_signal_emit_by_name":
+                self.read_object (frame, "instance", instances)
+                self.read_var (frame, "detailed_signal", signals)
+                break
+
+        instance = self.or_join_array (instances)
+        signal = self.or_join_array (signals)
+
+        stream.write (" <emit signal %s on instance %s>\n" %  (signal, instance))
+
+    def __getattr__ (self, name):
+        return getattr (self.frame, name)
+
+class GFrameFilter:
+    def __init__ (self, iter):
+        self.queue = []
+        self.iter = iter
+
+    def __iter__ (self):
+        return self
+
+    def fill (self):
+        while len(self.queue) <= 6:
+            try:
+                f = self.iter.next ()
+                self.queue.append (f)
+            except StopIteration:
+                return
+
+    def find_signal_emission (self):
+        for i in range (min (len(self.queue), 3)):
+            if self.queue[i].name() == "signal_emit_unlocked_R":
+                return i
+        return -1
+
+    def next (self):
+        # Ensure we have enough frames for a full signal emission
+        self.fill()
+
+        # Are we at the end?
+        if len(self.queue) == 0:
+            raise StopIteration
+
+        emission = self.find_signal_emission ()
+        if emission > 0:
+            start = emission
+            while True:
+                if start == 0:
+                    break
+                prev_name = self.queue[start-1].name()
+                if prev_name.find("_marshal_") or prev_name == "g_closure_invoke":
+                    start = start - 1
+                else:
+                    break
+            end = emission + 1
+            while end < len(self.queue):
+                if self.queue[end].name() in ["g_signal_emitv",
+                                              "g_signal_emit_valist",
+                                              "g_signal_emit",
+                                              "g_signal_emit_by_name"]:
+                    end = end + 1
+                else:
+                    break
+
+            signal_frames = self.queue[start:end]
+            new_frames = []
+            for i in range(len(signal_frames)-1):
+                new_frames.append(DummyFrame(signal_frames[i]))
+            new_frames.append(SignalFrame(signal_frames))
+
+            self.queue[start:end] = new_frames
+
+        return self.queue.pop(0)
+
+
+def register (obj):
+    if obj == None:
+        obj = gdb
+
+    gdb.backtrace.push_frame_filter (GFrameFilter)
+    obj.pretty_printers.append(pretty_printer_lookup)
diff --git a/dist/usr/share/glib-2.0/gettext/po/Makefile.in.in b/dist/usr/share/glib-2.0/gettext/po/Makefile.in.in
new file mode 100644
index 0000000..e6c32cb
--- /dev/null
+++ b/dist/usr/share/glib-2.0/gettext/po/Makefile.in.in
@@ -0,0 +1,268 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = mkdir -p
+
+CC = @CC@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES = 
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = LINGUAS ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
+$(POFILES) $(GMOFILES) $(SOURCES)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+	$(COMPILE) $<
+
+.po.pox:
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+.po.gmo:
+	$(AM_V_GEN) file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
+	  && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<
+
+.po.cat:
+	sed -f ../intl/po2msg.sed < $< > $*.msg \
+	  && rm -f $@ && $(GENCAT) $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
+	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) \
+	  --msgid-bugs-address='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general' \
+	  --add-comments --keyword=_ --keyword=N_ \
+	  --keyword=C_:1c,2 \
+	  --keyword=NC_:1c,2 \
+	  --keyword=g_dcgettext:2 \
+	  --keyword=g_dngettext:2,3 \
+	  --keyword=g_dpgettext2:2c,3 \
+	  --flag=N_:1:pass-c-format \
+	  --flag=C_:2:pass-c-format \
+	  --flag=NC_:2:pass-c-format \
+	  --flag=g_dngettext:2:pass-c-format \
+          --flag=g_strdup_printf:1:c-format \
+          --flag=g_string_printf:2:c-format \
+          --flag=g_string_append_printf:2:c-format \
+          --flag=g_error_new:3:c-format \
+          --flag=g_set_error:4:c-format \
+          --flag=g_markup_printf_escaped:1:c-format \
+          --flag=g_log:3:c-format \
+          --flag=g_print:1:c-format \
+          --flag=g_printerr:1:c-format \
+          --flag=g_printf:1:c-format \
+          --flag=g_fprintf:2:c-format \
+          --flag=g_sprintf:2:c-format \
+          --flag=g_snprintf:3:c-format \
+          --flag=g_scanner_error:2:c-format \
+          --flag=g_scanner_warn:2:c-format \
+	  $(POTFILES) \
+	&& test ! -f $(GETTEXT_PACKAGE).po \
+	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
+		&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+	$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  case "$$cat" in \
+	    *.gmo) destdir=$(gnulocaledir);; \
+	    *)     destdir=$(localedir);; \
+	  esac; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+	  $(MKINSTALLDIRS) $$dir; \
+	  if test -r $$cat; then \
+	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  else \
+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $(srcdir)/$$cat as" \
+		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  fi; \
+	  if test -r $$cat.m; then \
+	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	  else \
+	    if test -r $(srcdir)/$$cat.m ; then \
+	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
+		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	      echo "installing $(srcdir)/$$cat as" \
+		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	    else \
+	      true; \
+	    fi; \
+	  fi; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	else \
+	  : ; \
+	fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	fi
+
+check: all
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
+	rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f $(GMOFILES)
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	for file in $$dists; do \
+	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+	    || cp -p $(srcdir)/$$file $(distdir); \
+	done
+
+update-po: Makefile
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	tmpdir=`pwd`; \
+	cd $(srcdir); \
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  echo "$$lang:"; \
+	  if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \
+	    if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	      rm -f $$tmpdir/$$lang.new.po; \
+            else \
+	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	        :; \
+	      else \
+	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	        rm -f $$tmpdir/$$lang.new.po; \
+	        exit 1; \
+	      fi; \
+	    fi; \
+	  else \
+	    echo "msgmerge for $$cat failed!"; \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  fi; \
+	done
+
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+	( if test 'x$(srcdir)' != 'x.'; then \
+	    posrcprefix='$(top_srcdir)/'; \
+	  else \
+	    posrcprefix="../"; \
+	  fi; \
+	  rm -f $@-t $@ \
+	    && (sed -e '/^#/d' 						\
+		    -e "s/^\[.*\] +//" 					\
+		    -e '/^[ 	]*$$/d' 				\
+		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in	\
+		| sed -e '$$s/\\$$//') > $@-t \
+	    && chmod a-w $@-t \
+	    && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+	cd .. \
+	  && $(SHELL) ./config.status $(subdir)/$@.in
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/dist/usr/share/glib-2.0/schemas/gschema.dtd b/dist/usr/share/glib-2.0/schemas/gschema.dtd
new file mode 100644
index 0000000..00e3a16
--- /dev/null
+++ b/dist/usr/share/glib-2.0/schemas/gschema.dtd
@@ -0,0 +1,73 @@
+<!ELEMENT schemalist (schema|enum)* >
+<!ATTLIST schemalist gettext-domain CDATA #IMPLIED >
+
+<!ELEMENT schema (key|child|override)* >
+<!ATTLIST schema id             CDATA #REQUIRED
+                 path           CDATA #IMPLIED
+                 gettext-domain CDATA #IMPLIED
+                 extends        CDATA #IMPLIED
+                 list-of        CDATA #IMPLIED >
+
+<!-- enumerated and flags types -->
+<!-- each value element maps a nick to a numeric value -->
+<!ELEMENT enum (value*) >
+<!ATTLIST enum id CDATA #REQUIRED >
+
+<!ELEMENT flags (value*) >
+<!ATTLIST flags id CDATA #REQUIRED >
+
+<!ELEMENT value EMPTY >
+<!-- nick must be at least 2 characters long -->
+<!-- value must be parsable as a 32-bit integer -->
+<!ATTLIST value nick  CDATA #REQUIRED
+                value CDATA #REQUIRED >
+
+<!ELEMENT key (default|summary?|description?|range?|choices?|aliases?)* >
+<!-- name can only contain lowercase letters, numbers and '-' -->
+<!-- type must be a GVariant type string -->
+<!-- enum must be the id of an enum type that has been defined earlier -->
+<!-- flags must be the id of a flags type that has been defined earlier -->
+<!-- exactly one of type, enum or flags must be given -->
+<!ATTLIST key name  CDATA #REQUIRED
+              type  CDATA #IMPLIED
+              enum  CDATA #IMPLIED
+              flags CDATA #IMPLIED >
+
+<!-- the default value is specified a a serialized GVariant,
+     i.e. you have to include the quotes when specifying a string -->
+<!ELEMENT default (#PCDATA) >
+<!-- the presence of the l10n attribute marks a default value for
+     translation, its value is the gettext category to use -->
+<!-- if context is present, it specifies msgctxt to use -->
+<!ATTLIST default l10n    (messages|time) #IMPLIED
+                  context CDATA           #IMPLIED >
+
+<!ELEMENT summary (#PCDATA) >
+<!ELEMENT description (#PCDATA) >
+
+<!-- range is only allowed for keys with numeric type -->
+<!ELEMENT range EMPTY >
+<!-- min and max must be parseable as values of the key type and min < max -->
+<!ATTLIST range min CDATA #REQUIRED
+                max CDATA #REQUIRED >
+
+<!-- choices is only allowed for keys with string or string array type -->
+<!ELEMENT choices (choice+) >
+<!-- each choice element specifies one possible value -->
+<!ELEMENT choice EMPTY >
+<!ATTLIST choice value CDATA #REQUIRED >
+
+<!-- aliases is only allowed for keys with enumerated type or with choices -->
+<!ELEMENT aliases (alias+) >
+<!-- each alias element specifies an alias for one of the possible values -->
+<!ELEMENT alias EMPTY >
+<!ATTLIST alias value CDATA #REQUIRED >
+
+<!ELEMENT child EMPTY >
+<!ATTLIST child name   CDATA #REQUIRED
+                schema CDATA #REQUIRED >
+
+<!ELEMENT override (#PCDATA) >
+<!ATTLIST override name    CDATA #REQUIRED
+                   l10n    CDATA #IMPLIED
+                   context CDATA #IMPLIED >
diff --git a/dist/usr/share/info/libffi.info b/dist/usr/share/info/libffi.info
new file mode 100644
index 0000000..6d5acf8
--- /dev/null
+++ b/dist/usr/share/info/libffi.info
Binary files differ
diff --git a/dist/usr/share/locale/af/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/af/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..f0ed89c
--- /dev/null
+++ b/dist/usr/share/locale/af/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/am/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/am/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..61f8aea
--- /dev/null
+++ b/dist/usr/share/locale/am/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/an/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/an/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..d42ad23
--- /dev/null
+++ b/dist/usr/share/locale/an/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ar/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ar/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..78ed47a
--- /dev/null
+++ b/dist/usr/share/locale/ar/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/as/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/as/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..855956a
--- /dev/null
+++ b/dist/usr/share/locale/as/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ast/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ast/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..6a04ead
--- /dev/null
+++ b/dist/usr/share/locale/ast/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/az/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/az/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..8edd6d8
--- /dev/null
+++ b/dist/usr/share/locale/az/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/be/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/be/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..ca125a8
--- /dev/null
+++ b/dist/usr/share/locale/be/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/be@latin/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/be@latin/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..715700b
--- /dev/null
+++ b/dist/usr/share/locale/be@latin/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/bg/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/bg/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..9460ed1
--- /dev/null
+++ b/dist/usr/share/locale/bg/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/bn/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/bn/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c16fbee
--- /dev/null
+++ b/dist/usr/share/locale/bn/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/bn_IN/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/bn_IN/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..e2f51f1
--- /dev/null
+++ b/dist/usr/share/locale/bn_IN/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/bs/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/bs/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..844df8f
--- /dev/null
+++ b/dist/usr/share/locale/bs/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ca/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ca/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..f3f9f90
--- /dev/null
+++ b/dist/usr/share/locale/ca/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ca@valencia/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ca@valencia/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..91e67ef
--- /dev/null
+++ b/dist/usr/share/locale/ca@valencia/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/cs/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/cs/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a1bcc67
--- /dev/null
+++ b/dist/usr/share/locale/cs/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/cy/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/cy/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c3492bb
--- /dev/null
+++ b/dist/usr/share/locale/cy/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/da/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/da/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..bc2368c
--- /dev/null
+++ b/dist/usr/share/locale/da/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/de/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/de/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c16daef
--- /dev/null
+++ b/dist/usr/share/locale/de/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/dz/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/dz/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..508fac6
--- /dev/null
+++ b/dist/usr/share/locale/dz/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/el/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/el/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..81cd7a7
--- /dev/null
+++ b/dist/usr/share/locale/el/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/en@shaw/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/en@shaw/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b0c90d7
--- /dev/null
+++ b/dist/usr/share/locale/en@shaw/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/en_CA/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/en_CA/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..bee13bb
--- /dev/null
+++ b/dist/usr/share/locale/en_CA/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/en_GB/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/en_GB/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..ec3888f
--- /dev/null
+++ b/dist/usr/share/locale/en_GB/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/eo/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/eo/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..9eeed9f
--- /dev/null
+++ b/dist/usr/share/locale/eo/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/es/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/es/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..db46c77
--- /dev/null
+++ b/dist/usr/share/locale/es/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/et/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/et/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..1598096
--- /dev/null
+++ b/dist/usr/share/locale/et/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/eu/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/eu/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..4e0a1ad
--- /dev/null
+++ b/dist/usr/share/locale/eu/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/fa/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/fa/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..4510c2e
--- /dev/null
+++ b/dist/usr/share/locale/fa/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/fi/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/fi/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a655a23
--- /dev/null
+++ b/dist/usr/share/locale/fi/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/fr/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/fr/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..79c7388
--- /dev/null
+++ b/dist/usr/share/locale/fr/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ga/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ga/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..3c758ba
--- /dev/null
+++ b/dist/usr/share/locale/ga/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/gl/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/gl/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c8a7c17
--- /dev/null
+++ b/dist/usr/share/locale/gl/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/gu/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/gu/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..eaf4828
--- /dev/null
+++ b/dist/usr/share/locale/gu/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/he/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/he/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..9c5a860
--- /dev/null
+++ b/dist/usr/share/locale/he/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/hi/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/hi/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..4d6e98b
--- /dev/null
+++ b/dist/usr/share/locale/hi/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/hr/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/hr/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..eadb0ab
--- /dev/null
+++ b/dist/usr/share/locale/hr/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/hu/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/hu/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c0e247e
--- /dev/null
+++ b/dist/usr/share/locale/hu/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/hy/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/hy/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..fb24a84
--- /dev/null
+++ b/dist/usr/share/locale/hy/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/id/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/id/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..831c798
--- /dev/null
+++ b/dist/usr/share/locale/id/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/is/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/is/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..5c60ebe
--- /dev/null
+++ b/dist/usr/share/locale/is/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/it/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/it/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..2132f01
--- /dev/null
+++ b/dist/usr/share/locale/it/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ja/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ja/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..816f24b
--- /dev/null
+++ b/dist/usr/share/locale/ja/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ka/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ka/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..71530a3
--- /dev/null
+++ b/dist/usr/share/locale/ka/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/kk/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/kk/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b2ebe4d
--- /dev/null
+++ b/dist/usr/share/locale/kk/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/kn/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/kn/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..32c76cf
--- /dev/null
+++ b/dist/usr/share/locale/kn/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ko/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ko/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..e450473
--- /dev/null
+++ b/dist/usr/share/locale/ko/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ku/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ku/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..f53dedb
--- /dev/null
+++ b/dist/usr/share/locale/ku/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/lt/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/lt/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c685dd6
--- /dev/null
+++ b/dist/usr/share/locale/lt/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/lv/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/lv/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..161d272
--- /dev/null
+++ b/dist/usr/share/locale/lv/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/mai/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/mai/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..d11fc66
--- /dev/null
+++ b/dist/usr/share/locale/mai/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/mg/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/mg/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..dceff01
--- /dev/null
+++ b/dist/usr/share/locale/mg/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/mk/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/mk/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..0caee1b
--- /dev/null
+++ b/dist/usr/share/locale/mk/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ml/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ml/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a935ce5
--- /dev/null
+++ b/dist/usr/share/locale/ml/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/mn/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/mn/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b1daf1f
--- /dev/null
+++ b/dist/usr/share/locale/mn/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/mr/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/mr/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..1a84e26
--- /dev/null
+++ b/dist/usr/share/locale/mr/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ms/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ms/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..ac95642
--- /dev/null
+++ b/dist/usr/share/locale/ms/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/nb/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/nb/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b9e71bb
--- /dev/null
+++ b/dist/usr/share/locale/nb/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/nds/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/nds/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..6d34550
--- /dev/null
+++ b/dist/usr/share/locale/nds/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ne/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ne/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..04bcf55
--- /dev/null
+++ b/dist/usr/share/locale/ne/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/nl/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/nl/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..6268949
--- /dev/null
+++ b/dist/usr/share/locale/nl/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/nn/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/nn/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..8b04037
--- /dev/null
+++ b/dist/usr/share/locale/nn/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/oc/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/oc/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..ba14d64
--- /dev/null
+++ b/dist/usr/share/locale/oc/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/or/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/or/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b50d4f1
--- /dev/null
+++ b/dist/usr/share/locale/or/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/pa/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/pa/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..4c5e009
--- /dev/null
+++ b/dist/usr/share/locale/pa/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/pl/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/pl/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..331d276
--- /dev/null
+++ b/dist/usr/share/locale/pl/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ps/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ps/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..da862dc
--- /dev/null
+++ b/dist/usr/share/locale/ps/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/pt/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/pt/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..5bf9038
--- /dev/null
+++ b/dist/usr/share/locale/pt/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..8243107
--- /dev/null
+++ b/dist/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ro/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ro/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a0e6471
--- /dev/null
+++ b/dist/usr/share/locale/ro/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ru/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ru/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a12fb13
--- /dev/null
+++ b/dist/usr/share/locale/ru/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/rw/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/rw/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c8e7d29
--- /dev/null
+++ b/dist/usr/share/locale/rw/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/si/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/si/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..d948c4e
--- /dev/null
+++ b/dist/usr/share/locale/si/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sk/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sk/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..5adb2ec
--- /dev/null
+++ b/dist/usr/share/locale/sk/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sl/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sl/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..a70da54
--- /dev/null
+++ b/dist/usr/share/locale/sl/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sq/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sq/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c814c35
--- /dev/null
+++ b/dist/usr/share/locale/sq/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sr/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sr/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..f82b33b
--- /dev/null
+++ b/dist/usr/share/locale/sr/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sr@ije/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sr@ije/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..94da95c
--- /dev/null
+++ b/dist/usr/share/locale/sr@ije/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sr@latin/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sr@latin/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..4ae2092
--- /dev/null
+++ b/dist/usr/share/locale/sr@latin/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/sv/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/sv/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..e78876a
--- /dev/null
+++ b/dist/usr/share/locale/sv/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ta/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ta/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..ee4fc6b
--- /dev/null
+++ b/dist/usr/share/locale/ta/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/te/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/te/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..8eaafa9
--- /dev/null
+++ b/dist/usr/share/locale/te/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/tg/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/tg/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..266ee3e
--- /dev/null
+++ b/dist/usr/share/locale/tg/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/th/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/th/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..16e1f17
--- /dev/null
+++ b/dist/usr/share/locale/th/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/tl/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/tl/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c30e95a
--- /dev/null
+++ b/dist/usr/share/locale/tl/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/tr/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/tr/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..13739c9
--- /dev/null
+++ b/dist/usr/share/locale/tr/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/tt/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/tt/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c619048
--- /dev/null
+++ b/dist/usr/share/locale/tt/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/ug/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/ug/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..119f43d
--- /dev/null
+++ b/dist/usr/share/locale/ug/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/uk/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/uk/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..2743aa2
--- /dev/null
+++ b/dist/usr/share/locale/uk/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/vi/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/vi/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c8ed3a2
--- /dev/null
+++ b/dist/usr/share/locale/vi/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/wa/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/wa/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..c6053d7
--- /dev/null
+++ b/dist/usr/share/locale/wa/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/xh/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/xh/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..6d378ae
--- /dev/null
+++ b/dist/usr/share/locale/xh/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/yi/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/yi/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..b486ae8
--- /dev/null
+++ b/dist/usr/share/locale/yi/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..3073014
--- /dev/null
+++ b/dist/usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..d37de2c
--- /dev/null
+++ b/dist/usr/share/locale/zh_HK/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo b/dist/usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo
new file mode 100644
index 0000000..3ab4451
--- /dev/null
+++ b/dist/usr/share/locale/zh_TW/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/dist/usr/share/man/man3/ffi.3 b/dist/usr/share/man/man3/ffi.3
new file mode 100644
index 0000000..1f1d303
--- /dev/null
+++ b/dist/usr/share/man/man3/ffi.3
@@ -0,0 +1,41 @@
+.Dd February 15, 2008
+.Dt FFI 3
+.Sh NAME
+.Nm FFI
+.Nd Foreign Function Interface
+.Sh LIBRARY
+libffi, -lffi
+.Sh SYNOPSIS
+.In ffi.h
+.Ft ffi_status
+.Fo ffi_prep_cif
+.Fa "ffi_cif *cif"
+.Fa "ffi_abi abi"
+.Fa "unsigned int nargs"
+.Fa "ffi_type *rtype"
+.Fa "ffi_type **atypes"
+.Fc
+.Ft void
+.Fo ffi_prep_cif_var
+.Fa "ffi_cif *cif"
+.Fa "ffi_abi abi"
+.Fa "unsigned int nfixedargs"
+.Fa "unsigned int ntotalargs"
+.Fa "ffi_type *rtype"
+.Fa "ffi_type **atypes"
+.Fc
+.Ft void
+.Fo ffi_call
+.Fa "ffi_cif *cif"
+.Fa "void (*fn)(void)"
+.Fa "void *rvalue"
+.Fa "void **avalue"
+.Fc
+.Sh DESCRIPTION
+The foreign function interface provides a mechanism by which a function can
+generate a call to another function at runtime without requiring knowledge of
+the called function's interface at compile time.
+.Sh SEE ALSO
+.Xr ffi_prep_cif 3 ,
+.Xr ffi_prep_cif_var 3 ,
+.Xr ffi_call 3
diff --git a/dist/usr/share/man/man3/ffi_call.3 b/dist/usr/share/man/man3/ffi_call.3
new file mode 100644
index 0000000..5351513
--- /dev/null
+++ b/dist/usr/share/man/man3/ffi_call.3
@@ -0,0 +1,103 @@
+.Dd February 15, 2008
+.Dt ffi_call 3
+.Sh NAME
+.Nm ffi_call
+.Nd Invoke a foreign function.
+.Sh SYNOPSIS
+.In ffi.h
+.Ft void
+.Fo ffi_call
+.Fa "ffi_cif *cif"
+.Fa "void (*fn)(void)"
+.Fa "void *rvalue"
+.Fa "void **avalue"
+.Fc
+.Sh DESCRIPTION
+The
+.Nm ffi_call
+function provides a simple mechanism for invoking a function without
+requiring knowledge of the function's interface at compile time.
+.Fa fn
+is called with the values retrieved from the pointers in the
+.Fa avalue
+array. The return value from
+.Fa fn
+is placed in storage pointed to by
+.Fa rvalue .
+.Fa cif
+contains information describing the data types, sizes and alignments of the
+arguments to and return value from
+.Fa fn ,
+and must be initialized with
+.Nm ffi_prep_cif
+before it is used with
+.Nm ffi_call .
+.Pp
+.Fa rvalue
+must point to storage that is sizeof(ffi_arg) or larger for non-floating point
+types. For smaller-sized return value types, the
+.Nm ffi_arg
+or
+.Nm ffi_sarg
+integral type must be used to hold
+the return value.
+.Sh EXAMPLES
+.Bd -literal
+#include <ffi.h>
+#include <stdio.h>
+
+unsigned char
+foo(unsigned int, float);
+
+int
+main(int argc, const char **argv)
+{
+    ffi_cif cif;
+    ffi_type *arg_types[2];
+    void *arg_values[2];
+    ffi_status status;
+
+    // Because the return value from foo() is smaller than sizeof(long), it
+    // must be passed as ffi_arg or ffi_sarg.
+    ffi_arg result;
+
+    // Specify the data type of each argument. Available types are defined
+    // in <ffi/ffi.h>.
+    arg_types[0] = &ffi_type_uint;
+    arg_types[1] = &ffi_type_float;
+
+    // Prepare the ffi_cif structure.
+    if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI,
+        2, &ffi_type_uint8, arg_types)) != FFI_OK)
+    {
+        // Handle the ffi_status error.
+    }
+
+    // Specify the values of each argument.
+    unsigned int arg1 = 42;
+    float arg2 = 5.1;
+
+    arg_values[0] = &arg1;
+    arg_values[1] = &arg2;
+
+    // Invoke the function.
+    ffi_call(&cif, FFI_FN(foo), &result, arg_values);
+
+    // The ffi_arg 'result' now contains the unsigned char returned from foo(),
+    // which can be accessed by a typecast.
+    printf("result is %hhu", (unsigned char)result);
+
+    return 0;
+}
+
+// The target function.
+unsigned char
+foo(unsigned int x, float y)
+{
+    unsigned char result = x - y;
+    return result;
+}
+.Ed
+.Sh SEE ALSO
+.Xr ffi 3 ,
+.Xr ffi_prep_cif 3
diff --git a/dist/usr/share/man/man3/ffi_prep_cif.3 b/dist/usr/share/man/man3/ffi_prep_cif.3
new file mode 100644
index 0000000..ab2be8a
--- /dev/null
+++ b/dist/usr/share/man/man3/ffi_prep_cif.3
@@ -0,0 +1,68 @@
+.Dd February 15, 2008
+.Dt ffi_prep_cif 3
+.Sh NAME
+.Nm ffi_prep_cif
+.Nd Prepare a
+.Nm ffi_cif
+structure for use with
+.Nm ffi_call 
+.
+.Sh SYNOPSIS
+.In ffi.h
+.Ft ffi_status
+.Fo ffi_prep_cif
+.Fa "ffi_cif *cif"
+.Fa "ffi_abi abi"
+.Fa "unsigned int nargs"
+.Fa "ffi_type *rtype"
+.Fa "ffi_type **atypes"
+.Fc
+.Sh DESCRIPTION
+The
+.Nm ffi_prep_cif
+function prepares a
+.Nm ffi_cif
+structure for use with 
+.Nm ffi_call
+.
+.Fa abi
+specifies a set of calling conventions to use.
+.Fa atypes
+is an array of
+.Fa nargs
+pointers to
+.Nm ffi_type
+structs that describe the data type, size and alignment of each argument.
+.Fa rtype
+points to an
+.Nm ffi_type
+that describes the data type, size and alignment of the
+return value. Note that to call a variadic function
+.Nm ffi_prep_cif_var
+must be used instead.
+.Sh RETURN VALUES
+Upon successful completion,
+.Nm ffi_prep_cif
+returns
+.Nm FFI_OK .
+It will return
+.Nm FFI_BAD_TYPEDEF
+if
+.Fa cif
+is
+.Nm NULL
+or
+.Fa atypes
+or
+.Fa rtype
+is malformed. If
+.Fa abi
+does not refer to a valid ABI,
+.Nm FFI_BAD_ABI
+will be returned. Available ABIs are
+defined in
+.Nm <ffitarget.h> .
+.Sh SEE ALSO
+.Xr ffi 3 ,
+.Xr ffi_call 3 ,
+.Xr ffi_prep_cif_var 3
diff --git a/dist/usr/share/man/man3/ffi_prep_cif_var.3 b/dist/usr/share/man/man3/ffi_prep_cif_var.3
new file mode 100644
index 0000000..7e19d0b
--- /dev/null
+++ b/dist/usr/share/man/man3/ffi_prep_cif_var.3
@@ -0,0 +1,73 @@
+.Dd January 25, 2011
+.Dt ffi_prep_cif_var 3
+.Sh NAME
+.Nm ffi_prep_cif_var
+.Nd Prepare a
+.Nm ffi_cif
+structure for use with
+.Nm ffi_call
+for variadic functions.
+.Sh SYNOPSIS
+.In ffi.h
+.Ft ffi_status
+.Fo ffi_prep_cif_var
+.Fa "ffi_cif *cif"
+.Fa "ffi_abi abi"
+.Fa "unsigned int nfixedargs"
+.Fa "unsigned int ntotalargs"
+.Fa "ffi_type *rtype"
+.Fa "ffi_type **atypes"
+.Fc
+.Sh DESCRIPTION
+The
+.Nm ffi_prep_cif_var
+function prepares a
+.Nm ffi_cif
+structure for use with
+.Nm ffi_call
+for variadic functions.
+.Fa abi
+specifies a set of calling conventions to use.
+.Fa atypes
+is an array of
+.Fa ntotalargs
+pointers to
+.Nm ffi_type
+structs that describe the data type, size and alignment of each argument.
+.Fa rtype
+points to an
+.Nm ffi_type
+that describes the data type, size and alignment of the
+return value.
+.Fa nfixedargs
+must contain the number of fixed (non-variadic) arguments.
+Note that to call a non-variadic function
+.Nm ffi_prep_cif
+must be used.
+.Sh RETURN VALUES
+Upon successful completion,
+.Nm ffi_prep_cif_var
+returns
+.Nm FFI_OK .
+It will return
+.Nm FFI_BAD_TYPEDEF
+if
+.Fa cif
+is
+.Nm NULL
+or
+.Fa atypes
+or
+.Fa rtype
+is malformed. If
+.Fa abi
+does not refer to a valid ABI,
+.Nm FFI_BAD_ABI
+will be returned. Available ABIs are
+defined in
+.Nm <ffitarget.h>
+.
+.Sh SEE ALSO
+.Xr ffi 3 ,
+.Xr ffi_call 3 ,
+.Xr ffi_prep_cif 3
diff --git a/glib-2.37.3.tar.xz b/glib-2.37.3.tar.xz
new file mode 100644
index 0000000..ac921b4
--- /dev/null
+++ b/glib-2.37.3.tar.xz
Binary files differ
diff --git a/libffi-3.0.13.tar.gz b/libffi-3.0.13.tar.gz
new file mode 100644
index 0000000..69f5a79
--- /dev/null
+++ b/libffi-3.0.13.tar.gz
Binary files differ
diff --git a/patches/0001-backport-gfile-Limit-access-to-files-when-copying.patch b/patches/0001-backport-gfile-Limit-access-to-files-when-copying.patch
new file mode 100644
index 0000000..a9ef40b
--- /dev/null
+++ b/patches/0001-backport-gfile-Limit-access-to-files-when-copying.patch
@@ -0,0 +1,51 @@
+From a69dfb421fa9831aea5f2f90aec831a6a01d06e1 Mon Sep 17 00:00:00 2001
+From: Zong-Cing Lin <zclin@google.com>
+Date: Tue, 25 Jan 2022 11:16:01 +0800
+Subject: [PATCH 1/2] backport "gfile: Limit access to files when copying"
+
+https://gitlab.gnome.org/GNOME/glib/-/commit/d8f8f4d637ce43f8699ba94c9b7648beda0ca174
+
+It's for CVE-2019-12450
+
+Bug: 215543804
+Test: generate new glib so and verify functionalities on Qv1
+
+diff --git a/gio/gfile.c b/gio/gfile.c
+index b64a97d35..5a5604a6c 100644
+--- a/gio/gfile.c
++++ b/gio/gfile.c
+@@ -3113,12 +3113,12 @@ file_copy_fallback (GFile                  *source,
+         out = (GOutputStream*)_g_local_file_output_stream_replace (_g_local_file_get_filename (G_LOCAL_FILE (destination)),
+                                                                    FALSE, NULL,
+                                                                    flags & G_FILE_COPY_BACKUP,
+-                                                                   G_FILE_CREATE_REPLACE_DESTINATION,
+-                                                                   info,
++                                                                   G_FILE_CREATE_REPLACE_DESTINATION |
++                                                                   G_FILE_CREATE_PRIVATE, info,
+                                                                    cancellable, error);
+       else
+         out = (GOutputStream*)_g_local_file_output_stream_create (_g_local_file_get_filename (G_LOCAL_FILE (destination)),
+-                                                                  FALSE, 0, info,
++                                                                  FALSE, G_FILE_CREATE_PRIVATE, info,
+                                                                   cancellable, error);
+     }
+   else if (flags & G_FILE_COPY_OVERWRITE)
+@@ -3126,12 +3126,13 @@ file_copy_fallback (GFile                  *source,
+       out = (GOutputStream *)g_file_replace (destination,
+                                              NULL,
+                                              flags & G_FILE_COPY_BACKUP,
+-                                             G_FILE_CREATE_REPLACE_DESTINATION,
++                                             G_FILE_CREATE_REPLACE_DESTINATION |
++                                             G_FILE_CREATE_PRIVATE,
+                                              cancellable, error);
+     }
+   else
+     {
+-      out = (GOutputStream *)g_file_create (destination, 0, cancellable, error);
++      out = (GOutputStream *)g_file_create (destination, G_FILE_CREATE_PRIVATE, cancellable, error);
+     }
+ 
+   if (!out)
+-- 
+2.35.0.rc0.227.g00780c9af4-goog
+
diff --git a/patches/0002-Backport-Merge-branch-2325-symlink-replace-file-into.patch b/patches/0002-Backport-Merge-branch-2325-symlink-replace-file-into.patch
new file mode 100644
index 0000000..967d4b5
--- /dev/null
+++ b/patches/0002-Backport-Merge-branch-2325-symlink-replace-file-into.patch
@@ -0,0 +1,169 @@
+From 7a232d72dec087828e678547b3147cbaed7faa49 Mon Sep 17 00:00:00 2001
+From: Zong-Cing Lin <zclin@google.com>
+Date: Tue, 25 Jan 2022 11:20:38 +0800
+Subject: [PATCH 2/2] Backport "Merge branch '2325-symlink-replace-file' into
+ 'master'"
+
+https://gitlab.gnome.org/GNOME/glib/-/commit/c80528f17ba25ea7d7089946926b93a98bd1479e
+
+It's for CVE-2021-28153
+
+Bug: 215545684
+Test: generate new glib so and verify functionalities on Qv1
+
+diff --git a/gio/glocalfileoutputstream.c b/gio/glocalfileoutputstream.c
+index 65044729d..db6708ead 100644
+--- a/gio/glocalfileoutputstream.c
++++ b/gio/glocalfileoutputstream.c
+@@ -58,6 +58,12 @@
+ #define O_BINARY 0
+ #endif
+ 
++#ifndef O_CLOEXEC
++#define O_CLOEXEC 0
++#else
++#define HAVE_O_CLOEXEC 1
++#endif
++
+ struct _GLocalFileOutputStreamPrivate {
+   char *tmp_filename;
+   char *original_filename;
+@@ -752,11 +758,12 @@ handle_overwrite_open (const char    *filename,
+   int open_flags;
+   int res;
+   int mode;
++  gboolean replace_destination_set = (flags & G_FILE_CREATE_REPLACE_DESTINATION);
+ 
+   mode = mode_from_flags_or_info (flags, reference_info);
+ 
+   /* We only need read access to the original file if we are creating a backup.
+-   * We also add O_CREATE to avoid a race if the file was just removed */
++   * We also add O_CREAT to avoid a race if the file was just removed */
+   if (create_backup || readable)
+     open_flags = O_RDWR | O_CREAT | O_BINARY;
+   else
+@@ -772,15 +779,22 @@ handle_overwrite_open (const char    *filename,
+       /* Could be a symlink, or it could be a regular ELOOP error,
+        * but then the next open will fail too. */
+       is_symlink = TRUE;
+-      fd = g_open (filename, open_flags, mode);
++      if (!replace_destination_set)
++        fd = g_open (filename, open_flags, mode);
+     }
+-#else
+-  fd = g_open (filename, open_flags, mode);
++#else  /* if !O_NOFOLLOW */
+   /* This is racy, but we do it as soon as possible to minimize the race */
+   is_symlink = g_file_test (filename, G_FILE_TEST_IS_SYMLINK);
++
++  if (!is_symlink || !replace_destination_set)
++    {
++      fd = g_open (filename, open_flags, mode);
++      errsv = errno;
++    }
+ #endif
+     
+-  if (fd == -1)
++  if (fd == -1 &&
++      (!is_symlink || !replace_destination_set))
+     {
+       int errsv = errno;
+       char *display_name = g_filename_display_name (filename);
+@@ -814,16 +828,27 @@ handle_overwrite_open (const char    *filename,
+   if (!S_ISREG (original_stat.st_mode))
+     {
+       if (S_ISDIR (original_stat.st_mode))
+-	g_set_error_literal (error,
+-                             G_IO_ERROR,
+-                             G_IO_ERROR_IS_DIRECTORY,
+-                             _("Target file is a directory"));
+-      else
+-	g_set_error_literal (error,
++        {
++          g_set_error_literal (error,
++                               G_IO_ERROR,
++                               G_IO_ERROR_IS_DIRECTORY,
++                               _("Target file is a directory"));
++          goto err_out;
++        }
++      else if (!is_symlink ||
++#ifdef S_ISLNK
++               !S_ISLNK (original_stat.st_mode)
++#else
++               FALSE
++#endif
++               )
++        {
++          g_set_error_literal (error,
+                              G_IO_ERROR,
+                              G_IO_ERROR_NOT_REGULAR_FILE,
+                              _("Target file is not a regular file"));
+-      goto err_out;
++          goto err_out;
++        }
+     }
+   
+   if (etag != NULL)
+@@ -852,7 +877,7 @@ handle_overwrite_open (const char    *filename,
+    * to a backup file and rewrite the contents of the file.
+    */
+   
+-  if ((flags & G_FILE_CREATE_REPLACE_DESTINATION) ||
++  if (replace_destination_set ||
+       (!(original_stat.st_nlink > 1) && !is_symlink))
+     {
+       char *dirname, *tmp_filename;
+@@ -871,7 +896,7 @@ handle_overwrite_open (const char    *filename,
+       
+       /* try to keep permissions (unless replacing) */
+ 
+-      if ( ! (flags & G_FILE_CREATE_REPLACE_DESTINATION) &&
++      if (!replace_destination_set &&
+ 	   (
+ #ifdef HAVE_FCHOWN
+ 	    fchown (tmpfd, original_stat.st_uid, original_stat.st_gid) == -1 ||
+@@ -904,7 +929,8 @@ handle_overwrite_open (const char    *filename,
+ 	    }
+ 	}
+ 
+-      (void) g_close (fd, NULL);
++      if (fd >= 0)
++        (void) g_close (fd, NULL);
+       *temp_filename = tmp_filename;
+       return tmpfd;
+     }
+@@ -1009,7 +1035,7 @@ handle_overwrite_open (const char    *filename,
+ 	}
+     }
+ 
+-  if (flags & G_FILE_CREATE_REPLACE_DESTINATION)
++  if (replace_destination_set)
+     {
+       (void) g_close (fd, NULL);
+       
+@@ -1094,7 +1120,7 @@ _g_local_file_output_stream_replace (const char        *filename,
+   sync_on_close = FALSE;
+ 
+   /* If the file doesn't exist, create it */
+-  open_flags = O_CREAT | O_EXCL | O_BINARY;
++  open_flags = O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC;
+   if (readable)
+     open_flags |= O_RDWR;
+   else
+@@ -1124,8 +1150,11 @@ _g_local_file_output_stream_replace (const char        *filename,
+       set_error_from_open_errno (filename, error);
+       return NULL;
+     }
+-  
+- 
++#if !defined(HAVE_O_CLOEXEC) && defined(F_SETFD)
++  else
++    fcntl (fd, F_SETFD, FD_CLOEXEC);
++#endif
++
+   stream = g_object_new (G_TYPE_LOCAL_FILE_OUTPUT_STREAM, NULL);
+   stream->priv->fd = fd;
+   stream->priv->sync_on_close = sync_on_close;
+-- 
+2.35.0.rc0.227.g00780c9af4-goog
+
diff --git a/patches/0003-Backport-keyfile-settings-Use-tighter-permissions.patch b/patches/0003-Backport-keyfile-settings-Use-tighter-permissions.patch
new file mode 100644
index 0000000..61aa088
--- /dev/null
+++ b/patches/0003-Backport-keyfile-settings-Use-tighter-permissions.patch
@@ -0,0 +1,44 @@
+From 9d820c9ba0cdef65c981cd2f13e0c5929f7ec529 Mon Sep 17 00:00:00 2001
+From: Zong-Cing Lin <zclin@google.com>
+Date: Wed, 26 Jan 2022 11:34:51 +0800
+Subject: [PATCH 3/3] Backport "keyfile settings: Use tighter permissions"
+
+https://gitlab.gnome.org/GNOME/glib/-/commit/5e4da714f00f6bfb2ccd6d73d61329c6f3a08429
+It's for CVE-2019-13012
+
+diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c
+index 6601eba68..7d0a49283 100644
+--- a/gio/gkeyfilesettingsbackend.c
++++ b/gio/gkeyfilesettingsbackend.c
+@@ -91,7 +91,8 @@ g_keyfile_settings_backend_keyfile_write (GKeyfileSettingsBackend *kfsb)
+ 
+   contents = g_key_file_to_data (kfsb->keyfile, &length, NULL);
+   g_file_replace_contents (kfsb->file, contents, length, NULL, FALSE,
+-                           G_FILE_CREATE_REPLACE_DESTINATION,
++                           G_FILE_CREATE_REPLACE_DESTINATION |
++                           G_FILE_CREATE_PRIVATE,
+                            NULL, NULL, NULL);
+ 
+   compute_checksum (kfsb->digest, contents, length);
+@@ -625,6 +626,7 @@ g_keyfile_settings_backend_new (const gchar *filename,
+                                 const gchar *root_group)
+ {
+   GKeyfileSettingsBackend *kfsb;
++  gchar *dir_path;
+ 
+   g_return_val_if_fail (filename != NULL, NULL);
+   g_return_val_if_fail (root_path != NULL, NULL);
+@@ -638,7 +640,9 @@ g_keyfile_settings_backend_new (const gchar *filename,
+ 
+   kfsb->file = g_file_new_for_path (filename);
+   kfsb->dir = g_file_get_parent (kfsb->file);
+-  g_file_make_directory_with_parents (kfsb->dir, NULL, NULL);
++  dir_path = g_file_get_path(kfsb->dir);
++  g_mkdir_with_parents (dir_path, 0700);
++  g_free(dir_path);
+ 
+   kfsb->file_monitor = g_file_monitor_file (kfsb->file, 0, NULL, NULL);
+   kfsb->dir_monitor = g_file_monitor_file (kfsb->dir, 0, NULL, NULL);
+-- 
+2.35.0.rc0.227.g00780c9af4-goog
+